| | |
| | | <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" > |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="模板名称:" prop="name" > |
| | | <el-input v-model="state.form.name" placeholder="请输入模板名称"></el-input> |
| | | <el-form-item label="模板名称:" prop="templateName" > |
| | | <el-input v-model="state.form.templateName" placeholder="请输入模板名称"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="创建部门:" > |
| | | <span style="font-size: 16px">{{state.form.deptName}}</span> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="签署类型:" > |
| | | <el-select |
| | | v-model="state.form.type" |
| | | placeholder="请选择" |
| | | style="width: 100%" |
| | | > |
| | | <div style="display: flex;align-items: center;justify-content: space-between"> |
| | | <el-form-item label="创建部门:" > |
| | | <span style="font-size: 16px">{{state.deptName}}</span> |
| | | </el-form-item> |
| | | <el-form-item label="签署类型:" prop="typeId"> |
| | | <el-select |
| | | v-model="state.form.typeId" |
| | | placeholder="请选择" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in state.typeList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | :key="item.id" |
| | | :label="item.typeName" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-select> |
| | | </el-form-item> |
| | | </div> |
| | | |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="签名文件附件:" prop="name" > |
| | | <el-form-item label="签名文件附件:" prop="fileList" > |
| | | <el-upload |
| | | :auto-upload="false" |
| | | v-model:file-list="state.form.fileList" |
| | | :action="uploadFileUrl" |
| | | :file-list="state.fileList" |
| | | :headers="state.header" |
| | | :remove="handleRemove" |
| | | :on-success="handleAvatarSuccess" |
| | | :on-change="handleChange" |
| | | accept=".pdf,.word" |
| | | :limit="state.limit" |
| | | style="width: 230px" |
| | | > |
| | | <el-button type="primary" plain> 点击上传 </el-button> |
| | | <template #tip> |
| | | <div class="el-upload__tip">只能上传pdf类型,最多上传1份。</div> |
| | | </template> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form-item label="签名文件附件:" style="display: flex;flex-direction: column;align-items: flex-start"> |
| | | <el-form-item label="签署效果预览:" style="display: flex;flex-direction: column;align-items: flex-start"> |
| | | <div style="width: 500px;height: 100px;margin-left: 50px"> |
| | | |
| | | </div> |
| | |
| | | import {ElMessage} from "element-plus"; |
| | | import {listDept} from "@/api/system/dept"; |
| | | import {listUser} from "@/api/system/user"; |
| | | import {addTemplate, editTemplate} from "@/api/signAgreement/template"; |
| | | import {addType, editType, getSignType} from "@/api/signAgreement/signType"; |
| | | import {getInfo} from "@/api/login"; |
| | | import {getToken} from "@/utils/auth"; |
| | | |
| | | const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + "/common/upload"); // 上传文件服务器地址 |
| | | const { proxy } = getCurrentInstance(); |
| | |
| | | const state = reactive({ |
| | | form: { |
| | | id: '', |
| | | deptId: '', |
| | | deptName: '综合办', |
| | | people: [] |
| | | templateName: '', |
| | | typeId:null, |
| | | deptId: null, |
| | | filePath: '', |
| | | fileList: [] |
| | | }, |
| | | typeList: [ |
| | | { |
| | | value: '1', |
| | | label: 'xx' |
| | | } |
| | | ], |
| | | fileList: [], |
| | | header: { |
| | | Authorization: getToken() |
| | | }, |
| | | deptName: '', |
| | | typeList: [], |
| | | limit: 1, |
| | | formRules:{ |
| | | deptId: [{ required: true, trigger: "blur", message:'请选择部门' }], |
| | | people: [{ required: true, trigger: "blur", message:'请选择签署人' }], |
| | | templateName: [{ required: true, trigger: "blur", message:'请输入模板名称' }], |
| | | typeId: [{ required: true, trigger: "blur", message:'请选择签署类型' }], |
| | | fileList: [{ required: true, trigger: "blur", message:'请上传签名文件' }], |
| | | }, |
| | | }) |
| | | |
| | | |
| | | const openDialog = async (type,value) => { |
| | | await getSignTypeList() |
| | | await getUserInfo() |
| | | title.value = type === 'add' ? '新增' : '编辑' |
| | | if(type === 'edit') { |
| | | state.form = JSON.parse(JSON.stringify(value)) |
| | | if(state.form.filePath && state.form.fileName){ |
| | | const obj = { |
| | | name: state.form.fileName, |
| | | url : import.meta.env.VITE_APP_BASE_API + state.form.filePath |
| | | } |
| | | state.form.fileList = [obj] |
| | | }else { |
| | | state.form.fileList = [] |
| | | } |
| | | |
| | | } |
| | | dialogVisible.value = true; |
| | | } |
| | | |
| | | const getSignTypeList = async () => { |
| | | const res = await getSignType() |
| | | if(res.code == 200){ |
| | | state.typeList = res.data |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | } |
| | | const getUserInfo = async () => { |
| | | const res = await getInfo() |
| | | if(res.code == 200){ |
| | | state.deptName = res.user.dept.deptName |
| | | state.form.deptId = res.user.deptId |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | } |
| | | const onSubmit = async () => { |
| | | console.log('form',state.form) |
| | | const valid = await busRef.value.validate(); |
| | | |
| | | if(valid){ |
| | | const {id, ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | // const res = await addWarehouse(data) |
| | | // if(res.code === 200){ |
| | | // ElMessage({ |
| | | // type: 'success', |
| | | // message: '新增成功' |
| | | // }); |
| | | // }else{ |
| | | // ElMessage.warning(res.message) |
| | | // } |
| | | emit("getList") |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | if(title.value === '新增'){ |
| | | const {id,fileList, ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await addTemplate(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '新增成功' |
| | | }); |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | emit("getList") |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | }else if(title.value === '编辑'){ |
| | | const {...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await editTemplate(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '编辑成功' |
| | | }); |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | emit("getList") |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | const reset = () => { |
| | | state.form = { |
| | | id: '', |
| | | name: '', |
| | | remark: '', |
| | | templateName: '', |
| | | typeId:null, |
| | | deptId: null, |
| | | filePath: '', |
| | | fileList: [] |
| | | } |
| | | } |
| | | |
| | | const handleRemove = (file) => { |
| | | const index = data.fileList.indexOf(file) |
| | | const newFileList = data.fileList.slice() |
| | | const index = state.form.fileList.indexOf(file) |
| | | const newFileList = state.form.fileList.slice() |
| | | newFileList.splice(index, 1) |
| | | data.fileList = newFileList; |
| | | state.form.fileList = newFileList; |
| | | } |
| | | const f = ref() |
| | | const handleChange = (file,fileList) => { |
| | | console.log('file',file) |
| | | let fileExtension = file.name.split('.').pop(); |
| | | if(fileExtension == 'pdf' || fileExtension == 'word'){ |
| | | f.value = file.raw |
| | | }else { |
| | | data.fileList = [] |
| | | state.form.fileList = [] |
| | | ElMessage.warning('仅可上传pdf或word文件') |
| | | } |
| | | } |
| | | const handleAvatarSuccess = (res) => { |
| | | if(res.code === 200){ |
| | | // ElMessage({ |
| | | // type: 'success', |
| | | // message: '文件上传成功' |
| | | // }) |
| | | state.form.filePath = res.fileName |
| | | }else { |
| | | state.form.fileList = [] |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.message |
| | | }) |
| | | } |
| | | } |
| | | defineExpose({ |
| | | openDialog |
| | | }); |