<!-- 文档管理-编辑 --> <script lang="ts" setup name="addNotice"> import type { FormInstance, FormRules, UploadUserFile } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' import dayjs from 'dayjs' import tableList from './tableList.vue' import { uploadApi } from '@/api/system/notice' import showPhoto from '@/views/tested/device/info/components/showPhotoSinge.vue' import { getDictByCode } from '@/api/system/dict' import useUserStore from '@/store/modules/user' import { getUserDept } from '@/api/system/user' const $route = useRoute() const $router = useRouter() const userStore = useUserStore() const ruleFormRef = ref<FormInstance>() // from组件 const statusName = $route.query.statusName as string const tableRef = ref() // 显示标题 const textMap: { [key: string]: string } = { update: '编辑', create: '新增', detail: '详情', } // 对话框类型:create,update const dialogStatus = ref('create') const ruleForm = ref({ createTime: '', createUserId: '', createUserName: '', }) // 表单 const rules = ref<FormRules>({ }) // 表单验证规则 // 弹窗初始化 const initDialog = () => { dialogStatus.value = $route.params.type as string ruleFormRef.value?.resetFields() if ($route.params.type === 'create') { ruleForm.value.createTime = dayjs().format('YYYY-MM-DD HH:mm:ss') // 创建时间 ruleForm.value.createUserId = userStore.id ruleForm.value.createUserName = userStore.name // ruleForm.value.createDeptId = userStore.deptId // ruleForm.value.createDeptName = userStore.deptName // 获取当前用户所在单位 // getUserDept().then((res) => { // console.log(res.data, '用户所在单位') // // fullName // ruleForm.value.customerId = res.data.id // ruleForm.value.customerName = res.data.fullName // }) } else { // ruleForm.value = JSON.parse($route.query.row as string) // detailTask({ id: ruleForm.value.id }).then((res) => { // ruleForm.value = res.data.data // console.log(ruleForm.value, 'rule') // }) } } onMounted(() => { initDialog() }) // 获取是否加急下拉列表 const isUrgentList = ref<{ id: string; value: string; name: string }[]>() const fetchListData = () => { getDictByCode('eqptisUrgent').then((res) => { isUrgentList.value = res.data }) } fetchListData() // 关闭弹窗 const close = () => { $router.back() } // 新增 const add = () => { // ruleForm.value.customerSampleInfoList = tableRef.value.list // addTask(ruleForm.value).then((res) => { // ElMessage.success('新增成功') // close() // }) } // 编辑 const update = () => { // ruleForm.value.customerSampleInfoList = tableRef.value.list // updateTask(ruleForm.value).then((res) => { // ElMessage.success('修改成功') // close() // }) } // 保存 const saveForm = async (formEl: FormInstance | undefined) => { if (!formEl) { return } await formEl.validate((valid, fields) => { if (valid && tableRef.value.checkCertificateList()) { ElMessageBox.confirm( '确认保存吗?', '提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning', }, ).then((res) => { if (dialogStatus.value === 'create') { add() } else { update() } }) } }) } // 取消 const resetForm = (formEl: FormInstance | undefined) => { formEl?.resetFields() close() } const fileRef = ref() // 文件上传input const onFileChange = (event: any) => { if (event.target.files?.length !== 0) { // 创建formdata对象 const fd = new FormData() const loading = ElLoading.service({ lock: true, background: 'rgba(255, 255, 255, 0.8)', }) fd.append('multipartFile', event.target.files[0]) uploadApi(fd).then((res) => { if (res.code === 200) { list.value[currentIndex.value].appendixDescn = res.data[0] // 重置当前验证 ElMessage.success('文件上传成功') loading.close() } else { ElMessage.error(res.message) loading.close() } }) } } const upload = () => { fileRef.value.click() } </script> <template> <app-container style="overflow: hidden;"> <approval-dialog ref="approvalDialogRef" @on-success="() => { $router.back() }" /> <detail-page :title="`文档管理-${textMap[dialogStatus]}`"> <template #btns> <el-button v-if="!$route.path.includes('detail')" type="primary" @click="saveForm(ruleFormRef)"> 保存 </el-button> <el-button type="info" @click="resetForm(ruleFormRef)"> 关闭 </el-button> </template> </detail-page> <detail-block-com> <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-position="right" label-width="120px" class="form" :disabled="$route.path.includes('detail')"> <el-row :gutter="24" class="marg"> <el-col :span="6"> <el-form-item label="文件号"> <el-input v-model.trim="ruleForm.orderNo" placeholder="文件号" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="文件名称"> <el-input v-model.trim="ruleForm.orderNo" placeholder="文件名称" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="创建人"> <el-input v-model.trim="ruleForm.createUserName" disabled /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="创建时间"> <el-input v-model.trim="ruleForm.createTime" disabled /> </el-form-item> </el-col> </el-row> <el-row :gutter="24" class="marg"> <el-col :span="6"> <el-form-item label="文件类别" prop="isUrgent"> <!-- <el-input v-model.trim="ruleForm.isUrgent" placeholder="是否加急" /> --> <el-select v-model="ruleForm.isUrgent" placeholder="文件类别" style="width: 100%;"> <el-option v-for="item in isUrgentList" :key="item.id" :label="item.name" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="实施状态" prop="isUrgent"> <!-- <el-input v-model.trim="ruleForm.isUrgent" placeholder="是否加急" /> --> <el-select v-model="ruleForm.isUrgent" placeholder="实施状态" style="width: 100%;"> <el-option v-for="item in isUrgentList" :key="item.id" :label="item.name" :value="item.value" /> </el-select> </el-form-item> </el-col> </el-row> <el-row :gutter="24" class="marg"> <el-col :span="12"> <el-form-item label="文件附件" prop="isUrgent"> <!-- 上传组件 --> <input ref="fileRef" style="display: none;" type="file" @change="onFileChange"> <show-photo minio-file-name="" /> <el-button v-if="!$route.path.includes('detail')" type="primary" @click="upload()"> {{ '上传' }} </el-button> </el-form-item> </el-col> </el-row> <el-row :gutter="24" class="marg"> <el-col :span="12"> <el-form-item label="备注" prop="isUrgent"> <el-input v-model.trim="ruleForm.orderNo" placeholder="备注" /> </el-form-item> </el-col> </el-row> </el-form> </detail-block-com> <detail-block-com> <!-- v-if="!$route.path.includes('create')" --> <!-- 变更记录 --> <table-list ref="tableRef" :data="[]" :status="dialogStatus" /> </detail-block-com> </app-container> </template> <style lang="scss" scoped> // 样式 </style>