- <template>
- <div class="operate">
- <el-form
- ref="ruleForm"
- :model="form"
- class="dialogForm"
- :label-width="120"
- >
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="文件名称:" prop="fileName">
- <el-input
- v-model="form.fileName"
- type="text"
- disabled
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="分配部门权限:" prop="dept">
- <el-select
- v-model="form.dept"
- placeholder="请选择部门"
- style="width: 100%"
- multiple
- >
- <el-option
- v-for="item in options"
- :key="item.refId"
- :label="item.refName"
- :value="item.refId"
- />
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="分配用户权限:" prop="user">
- <el-select
- v-model="form.user"
- placeholder="请选择用户"
- style="width: 100%"
- multiple
- >
- <el-option-group
- v-for="group in groupOptions"
- :key="group.label"
- :label="group.label"
- >
- <el-option
- v-for="item in group.options"
- :key="item.refId"
- :label="item.refName"
- :value="item.refId"
- />
- </el-option-group>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- </div>
- </template>
-
- <script setup>
- import { ref, reactive, onMounted, watch } from 'vue'
- import { inheritAttr } from '@/utils/v3'
- import { optTextMap } from '@/utils/map'
- import { required } from '@/utils/validate-helper'
- import { useDicts } from '@/hooks'
- import {
- getDocumentAuthorityDisAuthDepart,
- documentAuthorityEdit
- } from '@/api/document/fileManagement/readAuth'
-
- const { proxy } = getCurrentInstance()
- const {
- document_save_type
- } = proxy.useDict('document_save_type')
-
- const props = defineProps({
- curRow: {
- type: Object,
- default: () => ({})
- }
- })
- const { curRow } = props
- const emit = defineEmits(['close'])
- const form = reactive({
- fileId: curRow.id || '',
- fileName: curRow.fileName,
- dept: [],
- user: []
- })
- const rules = reactive({
- fileName: required('文件名称'),
- dept: required('部门'),
- user: required('用户')
- })
- const options = ref([])
- const groupOptions = ref([])
-
- const submit = () => {
- proxy.$refs.ruleForm.validate(async (valid, fields) => {
- if (valid) {
- const refList = []
- if(form.dept?.length){
- refList.push({ refId: form.dept, refType: 'dept' })
- }
- if(form.user?.length){
- refList.push({ refId: form.user, refType: 'user' })
- }
- const params = {
- fileId: form.fileId,
- refList
- }
- const res = await documentAuthorityEdit(params)
- if(res?.code !== 200) return
- proxy.$modal.msgSuccess('操作成功')
- emit('close', { isRefresh: true })
- } else {
- console.log('error submit!', fields)
- }
- })
- }
-
- const getDetail = async () => {
- const res = await getDocumentAuthorityDisAuthDepart({
- fileId: form.fileId
- })
- if(res?.code !== 200) return
- const deptList = res.data.deptList || []
- options.value = deptList
- const userList = res.data.userList || []
- const departmentNameList = Object.keys(userList)
- let checkedUserList = []
- for (const departmentName of departmentNameList) {
- if(!userList[departmentName]) continue
- const checkedUserItemList = userList[departmentName].filter(it => it.refFlag).map(it => it.refId)
- checkedUserList = checkedUserList.concat(checkedUserItemList)
- const departmentObj = {
- label: departmentName,
- options: userList[departmentName]
- }
- groupOptions.value.push(departmentObj)
- }
- form.dept = deptList.filter(it => it.refFlag).map(it => it.refId)
- form.user = checkedUserList
- }
-
- onMounted(() => {
- if(form.fileId) getDetail()
- })
-
- defineExpose({
- submit
- })
- </script>
-
- <style lang="scss" scoped></style>