| | |
| | | }) |
| | | } |
| | | |
| | | export function getFunctionalRemarkList(params) { |
| | | return request({ |
| | | url: '/system/dept/functionalRemarkList', |
| | | method: 'get', |
| | | params: params |
| | | }) |
| | | } |
| | | |
| | | export function saveDistribution(data) { |
| | | return request({ |
| | | url: '/system/dept/saveFunctionalDistribution', |
| | |
| | | const getDeptList = async (val) => { |
| | | const res = await getDepart({responsType: 1, companyId: val.companyId}) |
| | | if(res.code == 200){ |
| | | data.originDeptList = res.data |
| | | data.originDeptList = JSON.parse(JSON.stringify(res.data)) |
| | | data.deptList.deptName = val.companyName |
| | | data.deptList.children = proxy.handleTree(res.data, "deptId") |
| | | }else{ |
| | |
| | | data.companyInfo.summaries = res.data.companySummaries ? res.data.companySummaries[0]?.companySummary : [] |
| | | data.companyInfo.policies = res.data.companyQualityPolicies ? res.data.companyQualityPolicies[0]?.policy : [] |
| | | const duties = transToTableData(res.data.sysFunctionalDistributions,data.originDeptList) |
| | | data.companyInfo.allDeptNames = duties.allDeptNames |
| | | data.companyInfo.allDepts = duties.allDepts |
| | | console.log(data.companyInfo.allDepts,'all') |
| | | data.companyInfo.clauses = duties.clauses |
| | | data.companyInfo.temps = res.data.companyIndustryTemplates?.map((item,index)=>{ |
| | | return { |
| | |
| | | const transToTableData=(duties,deptList)=>{ |
| | | // 步骤1:获取所有唯一的部门和条款编号 |
| | | // const allDeptNames = [...new Set(duties.map(item => item.deptName))]; |
| | | const allDeptNames = deptList ? deptList.map(item => item.deptName) : [...new Set(duties.map(item => item.deptName))] |
| | | const allDepts = deptList |
| | | const allClauseNums = [...new Set([ |
| | | ...data.caluseList.map(c => c.clauseNum), |
| | | ...duties.map(d => d.clauseNum) |
| | |
| | | const processedClauses = allClauseNums.map(clauseNum => { |
| | | const clauseContent = data.caluseList.find(c => c.clauseNum === clauseNum)?.content || ""; |
| | | // 为当前条款生成所有部门的数据(确保每个部门都有值) |
| | | const deptValues = allDeptNames.map(deptName => { |
| | | const deptValues = allDepts.map(dept => { |
| | | const matchedDept = duties.find( |
| | | item => item.clauseNum === clauseNum && item.deptName === deptName |
| | | ); |
| | | return matchedDept ? (matchedDept.chooseLab==1?'●':'○' ): '○' |
| | | item => item.clauseNum === clauseNum && item.deptId === dept.deptId |
| | | ) |
| | | if(dept.deptType == '0'){ |
| | | return matchedDept ? (matchedDept.chooseLab==1?'●':'○' ): '○' |
| | | }else{ |
| | | return matchedDept ? (matchedDept.chooseLab==1?'▲':'○' ): '○' |
| | | } |
| | | }); |
| | | return { |
| | | clauseNum, |
| | |
| | | // 最终数据结构 |
| | | return { |
| | | clauses: processedClauses, |
| | | allDeptNames // 用于生成表头 |
| | | allDepts // 用于生成表头 |
| | | }; |
| | | } |
| | | |
| | |
| | | <el-form-item label="部门名称:" prop="deptName"> |
| | | <el-input v-model.trim="state.form.deptName" :disabled="state.title =='查看'" placeholder="部门名称"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="是否是管理层:" prop="deptType" v-if="state.title !== '修改密码'"> |
| | | <el-radio-group v-model="state.form.deptType" :disabled="disabled"> |
| | | <el-radio :label="1">是</el-radio> |
| | | <el-radio :label="0">否</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="负责人:" prop="leaderUserId"> |
| | | <el-select clearable v-model="state.form.leaderUserId" :disabled="state.title =='查看'" filterable placeholder="负责人" style="width: 100%"> |
| | | <el-option |
| | |
| | | companyId: null, |
| | | responsType: 1, |
| | | childDeptIds: [], |
| | | orderNum: 0 |
| | | orderNum: 0, |
| | | deptType: 0 |
| | | }, |
| | | isAdmin: false, |
| | | companyList: [], |
| | |
| | | state.oldClauseList = value.caluseVO1List |
| | | state.form.childDeptIds = value.sysDeptManageVoList?.map(i=>i.subDeptId) |
| | | state.form.responsType = Number(value.responsType) |
| | | state.form.deptType = Number(value.deptType) |
| | | }else{ |
| | | if(value.deptId && value.companyId){ |
| | | state.form.parentId = value.deptId |
| | |
| | | companyId: null, |
| | | responsType: 1, |
| | | childDeptIds: [], |
| | | orderNum: 0 |
| | | orderNum: 0, |
| | | deptType: 0 |
| | | } |
| | | |
| | | superRef.value.clearValidate(); |
| | |
| | | </el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="相关证据材料" prop="evidenceMaterials" align="center"> |
| | | <template #default="scope"> |
| | | <el-input |
| | | v-model.trim="scope.row.evidenceMaterials" |
| | | size="large" |
| | | type="textarea" |
| | | style="width: 100%;" |
| | | > |
| | | </el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column label="相关证据材料" prop="evidenceMaterials" align="center">--> |
| | | <!-- <template #default="scope">--> |
| | | <!-- <el-input--> |
| | | <!-- v-model.trim="scope.row.evidenceMaterials"--> |
| | | <!-- size="large"--> |
| | | <!-- type="textarea"--> |
| | | <!-- style="width: 100%;"--> |
| | | <!-- >--> |
| | | <!-- </el-input>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <el-table-column label="现有管理类文件" prop="managementDocuments" align="center" width="150"> |
| | | <template #default="scope"> |
| | | <el-input |
| | |
| | | </el-form> |
| | | </div> |
| | | <div style="display: flex;justify-content: space-between;margin-bottom: 10px"> |
| | | <div>质量管理体系过程与部门职能矩阵</div> |
| | | <div>质量管理体系过程与部门职能矩阵(▲ 主管部门<span style="font-size: 24px;display: inline-block;margin-left: 20px">●</span> 归口部门<span style="font-size: 24px;display: inline-block;margin-left: 20px">○</span> 配合部门)</div> |
| | | <div> |
| | | <el-button type="primary" @click="initDistribute">重新生成</el-button> |
| | | <el-button type="primary" v-if="!isEdit" @click="isEdit = true">编辑</el-button> |
| | |
| | | </div> |
| | | </div> |
| | | <!-- 表格数据 --> |
| | | <el-form ref="noticeRef" :model="remarkForm" :rules="rules"> |
| | | <el-table v-loading="loading" :data="caluseList" class="caluseTable" :border="true" :span-method="arraySpanMethod"> |
| | | <el-table-column label="条款号" prop="clauseNum" align="center"/> |
| | | <el-table-column label="条款内容/要素" prop="content" align="left"/> |
| | |
| | | <!-- </el-table-column>--> |
| | | <el-table-column v-for="column in deptList" :key="column.deptId" :prop="column.deptId" :label="column.deptName" align="center"> |
| | | <template #default="scope"> |
| | | <el-checkbox v-model="scope.row[column.deptId]" :disabled="!isEdit" size="large" @change="changeStatus(scope.row)"/> |
| | | <el-checkbox v-if="isEdit" v-model="scope.row[column.deptId]" size="large" @change="changeStatus(scope.row,scope.$index)"/> |
| | | <div v-else> |
| | | <el-checkbox v-if="column.deptType == '0'" v-model="scope.row[column.deptId]" disabled size="large"/> |
| | | <div class="markBox" v-else> |
| | | <div class="triangle" v-show="scope.row[column.deptId]"></div> |
| | | <el-checkbox v-show="!scope.row[column.deptId]" v-model="scope.row[column.deptId]" disabled size="large"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="备注" prop="remark" align="center" width="170px" fixed="right"> |
| | | <template #default="scope"> |
| | | <div v-if="!mergeValues.includes(scope.row.clauseNum)"> |
| | | <el-form-item v-if="isEdit && getRowValueNum(scope.row) >= 2" :prop="`tableData.${scope.$index}.remark`" :rules="getRowValueNum(scope.row) >= 2 ? rules.remark : []"> |
| | | <el-input |
| | | v-model.trim="remarkForm.tableData[scope.$index].remark" |
| | | size="large" |
| | | type="textarea" |
| | | style="width: 100%;" |
| | | > |
| | | </el-input> |
| | | </el-form-item> |
| | | |
| | | <span v-else>{{ remarkForm.tableData[scope.$index].remark }}</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | </el-table> |
| | | </el-form> |
| | | <!-- <el-dialog--> |
| | | <!-- v-model="dialogVisible"--> |
| | | <!-- title="备注"--> |
| | | <!-- width="700px"--> |
| | | <!-- :before-close="handleClose"--> |
| | | <!-- >--> |
| | | <!-- <el-form :model="remarkList" size="default" ref="superRef" :rules="formRules" label-width="150px">--> |
| | | <!-- <el-form-item label="企业:" prop="companyId"></el-form-item>--> |
| | | <!-- </el-form>--> |
| | | <!-- </el-dialog>--> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import { |
| | | getCompany, |
| | | getDepart, |
| | | getDistribution, |
| | | getDistribution, getFunctionalRemarkList, |
| | | getSysClause, |
| | | initDistribution, |
| | | saveDistribution |
| | |
| | | isEdit: false, |
| | | dataList: [], |
| | | deptList: [], |
| | | subDepts: [], |
| | | caluseList: [], |
| | | remarkForm: {}, |
| | | form: { |
| | | companyId: null, |
| | | list: [] |
| | | } |
| | | list: [], |
| | | remarks: [] |
| | | }, |
| | | originRemark: [], |
| | | remarkList: [], |
| | | dialogVisible: false, |
| | | rules: { |
| | | remark: [ |
| | | {required: true, message: "有两个归口部门请填写备注", trigger: "blur"}, |
| | | ], |
| | | }, |
| | | mergeValues: ['4','5','6','7','7.1','8','8.2','8.3','8.4','8.5','9','9.1','10'] |
| | | }); |
| | | |
| | | const { queryParams,isEdit, dataList,deptList, isAdmin, companyList, caluseList, form } = toRefs(data); |
| | | |
| | | const { queryParams,isEdit, dataList,deptList, isAdmin, companyList, caluseList, form,originRemark, remarkList,dialogVisible,mergeValues,remarkForm,rules } = toRefs(data); |
| | | const noticeRef = ref(); |
| | | onMounted(async ()=>{ |
| | | await getSysClauseList() |
| | | if(userStore.roles.includes('admin')){ |
| | |
| | | |
| | | }) |
| | | |
| | | |
| | | // 获取非管理层选中数量 |
| | | const getRowValueNum = (row)=>{ |
| | | let count = 0; |
| | | for (const key in row) { |
| | | // 检查键是否是数字(忽略非数字键) |
| | | if (!isNaN(key)) { |
| | | const numericKey = parseInt(key, 10); |
| | | // 检查数字键是否在subDepts中且值为true |
| | | if (data.subDepts.includes(numericKey) && row[key] === true) { |
| | | count++; |
| | | } |
| | | } |
| | | } |
| | | return count; |
| | | } |
| | | |
| | | const getSysClauseList = async ()=> { |
| | | const res = await getSysClause() |
| | | if(res.code == 200){ |
| | |
| | | } |
| | | } |
| | | |
| | | const changeStatus = (val)=>{ |
| | | const getRemarksList = async ()=> { |
| | | const res = await getFunctionalRemarkList({companyId: data.queryParams.companyId}) |
| | | if(res.code == 200){ |
| | | data.originRemark = res.data |
| | | for(let item of data.originRemark){ |
| | | const foundObj = data.caluseList.find(i=>i.clauseNum == item.clauseNum) |
| | | if(foundObj){ |
| | | foundObj.remark = item.remark |
| | | } |
| | | } |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | } |
| | | |
| | | const changeStatus = (val,index)=>{ |
| | | if(getRowValueNum(val)<2){ |
| | | data.remarkForm.tableData[index].remark = '' |
| | | } |
| | | const excludeFields = ['clauseNum', 'content', 'manage', 'represent'] |
| | | // 转换当前对象为临时数组 |
| | | const currentList = Object.keys(val).filter(key => !excludeFields.includes(key)).map(key => ({ |
| | | clauseNum: val.clauseNum, |
| | | deptId: Number(key), |
| | |
| | | } |
| | | |
| | | const confirmEdit = async ()=>{ |
| | | if(data.form.list.length == 0){ |
| | | data.isEdit = !data.isEdit |
| | | const valid = await noticeRef.value.validate() |
| | | if(valid){ |
| | | loading.value = true |
| | | data.form.remarks = data.remarkForm.tableData.filter(i=>i.remark && i.remark !== '').map(i=>{ |
| | | return { |
| | | companyId: data.queryParams.companyId, |
| | | clauseNum: i.clauseNum, |
| | | remark: i.remark |
| | | } |
| | | }) |
| | | if(data.form.list.length == 0 && data.form.remarks.length == 0){ |
| | | data.isEdit = !data.isEdit |
| | | await getList() |
| | | return |
| | | } |
| | | data.form.companyId = data.queryParams.companyId |
| | | const res = await saveDistribution(data.form) |
| | | if(res.code == 200){ |
| | | ElMessage.success(res.message) |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | loading.value = false |
| | | await getList() |
| | | return |
| | | } |
| | | loading.value = true |
| | | data.form.companyId = data.queryParams.companyId |
| | | const res = await saveDistribution(data.form) |
| | | if(res.code == 200){ |
| | | ElMessage.success(res.message) |
| | | data.isEdit = !data.isEdit |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | ElMessage.warning('条款有两个归口部门,要填写备注') |
| | | } |
| | | loading.value = false |
| | | await getList() |
| | | data.isEdit = !data.isEdit |
| | | } |
| | | |
| | | const arraySpanMethod = ({ |
| | |
| | | rowIndex, |
| | | columnIndex, |
| | | }) => { |
| | | const mergeValues = ['4','5','6','7','7.1','8','8.2','8.3','8.4','8.5','9','9.1','10'] |
| | | if (mergeValues.includes(row.clauseNum)) { |
| | | if (data.mergeValues.includes(row.clauseNum)) { |
| | | const totalColumns = data.deptList.length + 3 |
| | | if (columnIndex === 0) { |
| | | return [1, 1] |
| | | } else if(columnIndex === 1){ |
| | | return [1,900] |
| | | return [1, Math.max(1, totalColumns - 2)]; |
| | | } |
| | | if (columnIndex < totalColumns - 1) { |
| | | return [0, 0]; |
| | | } |
| | | } |
| | | } |
| | |
| | | const sameNum = data.dataList.filter(i=>i.clauseNum == item.clauseNum).map(j=> { |
| | | return { |
| | | deptId: j.deptId, |
| | | chooseLab: j.chooseLab |
| | | chooseLab: j.chooseLab, |
| | | remark: j.remark |
| | | } |
| | | } |
| | | ) |
| | | for(let i of sameNum){ |
| | | item[i.deptId] = i.chooseLab == 0?false:true |
| | | item.remark = i.remark |
| | | } |
| | | } |
| | | await getRemarksList() |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | data.remarkForm = { |
| | | tableData: JSON.parse(JSON.stringify(data.caluseList)) |
| | | } |
| | | loading.value = false |
| | | } |
| | |
| | | const res = await getDepart({responsType: 1, companyId: data.queryParams.companyId}) |
| | | if(res.code == 200){ |
| | | data.deptList = res.data |
| | | data.subDepts = data.deptList.filter(i=>i.deptType == '0').map(i=>i.deptId) |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | } |
| | | |
| | | const handleClose = ()=>{ |
| | | |
| | | } |
| | | |
| | | const initDistribute = async ()=>{ |
| | |
| | | } |
| | | .cell{ |
| | | padding: 0 4px !important; |
| | | |
| | | .markBox{ |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: center; |
| | | .triangle{ |
| | | width: 18px; |
| | | height: 16px; /* 高度 = 100 * (√3/2) */ |
| | | background-color: #333; |
| | | clip-path: polygon(0% 100%, 50% 0%, 100% 100%); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <el-radio :label="1">女</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="年龄:" prop="age" v-if="state.title !== '修改密码'"> |
| | | <el-input v-model.number.trim="state.form.age" type="number" :disabled="disabled" placeholder="请输入年龄"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="职称:" prop="positional" v-if="state.title !== '修改密码'"> |
| | | <el-input v-model.trim="state.form.positional" :disabled="disabled" placeholder="请输入职称"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="人员类别:" prop="personType" v-if="state.title !== '修改密码'"> |
| | | <el-radio-group v-model="state.form.personType" :disabled="disabled"> |
| | | <el-radio :label="1">技术</el-radio> |
| | | <el-radio :label="2">管理</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="身份证号:" prop="idCard" v-if="state.title !== '修改密码'"> |
| | | <el-input v-model.trim="state.form.idCard" :maxlength="18" :disabled="disabled" placeholder="请输入身份证号"></el-input> |
| | | </el-form-item> |
| | |
| | | type="date" |
| | | value-format="YYYY-MM-DD" |
| | | placeholder="请选择入职时间" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="离职时间:" prop="resignTime" v-if="state.title !== '修改密码'" > |
| | | <el-date-picker |
| | | v-model="state.form.resignTime" |
| | | type="date" |
| | | value-format="YYYY-MM-DD" |
| | | placeholder="请选择离职时间" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="密码:" prop="password" v-if="state.title == '新增' || state.title == '修改密码'"> |
| | |
| | | </el-form-item> |
| | | <el-form-item label="用户类型:" v-if="state.title !== '修改密码'" prop="userType"> |
| | | <el-radio-group v-model="state.form.userType" :disabled="disabled" @change="changeType" v-if="state.title == '新增'"> |
| | | <el-radio :label="0">系统管理员</el-radio> |
| | | <el-radio :label="1">企业管理员</el-radio> |
| | | <el-radio :label="2">企业用户</el-radio> |
| | | <!-- <el-radio :label="3" v-if="!state.isAdmin">车间(岗位)级</el-radio>--> |
| | | <el-radio :label="0" v-if="state.currentUserType == 0">系统管理员</el-radio> |
| | | <el-radio :label="6" v-if="state.currentUserType == 0 || state.currentUserType == 6 ">企业管理员</el-radio> |
| | | <el-radio :label="1" v-if="state.currentUserType == 0 || state.currentUserType == 6 || state.currentUserType ==1">企业用户</el-radio> |
| | | <el-radio :label="2" v-if="state.currentUserType !== 3">部门级</el-radio> |
| | | <el-radio :label="3">车间(岗位)级</el-radio> |
| | | <!-- <el-radio :label="4" v-if="state.currentUserType == 0">其他</el-radio>--> |
| | | </el-radio-group> |
| | | <span v-else-if="state.title == '查看'">{{state.currentUserType === 0 ? '管理员' : state.currentUserType === 1 ? '企业级' : state.currentUserType === 2 ? '部门级' : state.currentUserType === 3 ? '车间级' :'其他'}}</span> |
| | | <span v-else-if="state.title == '编辑'">{{state.form.userType === 0 ? '管理员' : state.form.userType === 1 ? '企业级' : state.form.userType === 2 ? '部门级' : state.form.userType === 3 ? '车间级' :'其他'}}</span> |
| | | <span v-else-if="state.title == '查看'">{{state.currentUserType === 0 ? '系统管理员' : state.currentUserType === 1 ? '企业用户' : state.currentUserType === 6 ? '企业管理员' : state.currentUserType === 2 ? '部门级' : state.currentUserType === 3 ? '车间级' :'其他'}}</span> |
| | | <span v-else-if="state.title == '编辑'">{{state.form.userType === 0 ? '系统管理员' : state.form.userType === 1 ? '企业用户' : state.form.userType === 2 ? '部门级' : state.form.userType === 3 ? '车间级' :'其他'}}</span> |
| | | <!-- <el-radio-group v-model="state.form.userType" :disabled="disabled" @change="changeType" v-else-if="state.title == '编辑'">--> |
| | | <!-- <el-radio :label="0" v-if="state.currentUserType == 0">管理员</el-radio>--> |
| | | <!-- <el-radio :label="1" >企业级</el-radio>--> |
| | |
| | | |
| | | |
| | | </el-form-item> |
| | | <el-form-item label="部门:" prop="deptId" v-if="state.title !== '修改密码'"> |
| | | <el-form-item label="所属上级账号:" prop="companyName" v-if="showChild"> |
| | | <scorllSelect |
| | | :disabled="disabled || state.title =='编辑'" |
| | | ref="scrollRef" |
| | | v-model="state.form.parentName" |
| | | @getval = "getSelectUser" |
| | | placeholder="请选择" |
| | | clearable |
| | | style="width: 45%;" |
| | | filterable |
| | | remote |
| | | searchKey="username" |
| | | :methods="getUser"> |
| | | </scorllSelect> |
| | | </el-form-item> |
| | | <el-form-item label="部门:" prop="deptId" v-if="state.title !== '修改密码' && state.form.userType !== 0"> |
| | | <el-select |
| | | clearable |
| | | v-model="state.form.deptId" |
| | |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="职务:" prop="duty" v-if="state.title !== '修改密码'" > |
| | | <el-form-item label="职务:" prop="duty" v-if="state.title !== '修改密码' && state.form.userType !== 0"> |
| | | <el-input v-model.trim="state.form.duty" :disabled="disabled" placeholder="请输入职务"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="专业:" prop="post" v-if="state.title !== '修改密码'" > |
| | | <el-form-item label="专业:" prop="post" v-if="state.title !== '修改密码' && state.form.userType !== 0"> |
| | | <el-input v-model.trim="state.form.post" :disabled="disabled" placeholder="请输入专业"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="所属上级账号:" prop="companyName" v-if="showChild"> |
| | | <scorllSelect |
| | | :disabled="disabled || state.title =='编辑'" |
| | | ref="scrollRef" |
| | | v-model="state.form.parentName" |
| | | @getval = "getSelectUser" |
| | | placeholder="请选择" |
| | | clearable |
| | | style="width: 45%;" |
| | | filterable |
| | | remote |
| | | searchKey="username" |
| | | :methods="getUser"> |
| | | </scorllSelect> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer v-if="state.title !='查看'"> |
| | |
| | | companyName: '', |
| | | parentId: null, |
| | | entryTime: '', |
| | | resignTime: '', |
| | | idCard: '', |
| | | deptId: null, |
| | | duty: '', |
| | | post: '' |
| | | post: '', |
| | | age: null, |
| | | personType: null, |
| | | positional: '' |
| | | }, |
| | | formRules:{ |
| | | name: [{ required: true, message: '请输入姓名', trigger: 'blur' }], |
| | |
| | | username: [{ required: true, message: '请选择用户名', trigger: 'blur' }], |
| | | password: [{ required: true, validator: validatePwd, trigger: 'blur' }], |
| | | confirmPassword: [{ required: true, validator: equalToPassword, trigger: 'blur' }], |
| | | phone: [{ validator: validateUserPhone, trigger: 'blur' }], |
| | | // phone: [{ validator: validateUserPhone, trigger: 'blur' }], |
| | | userType: [{ required: true, message: '请选择用户类型', trigger: 'blur' }], |
| | | idCard: [{ validator: verifyId, trigger: 'blur' }], |
| | | // idCard: [{ validator: verifyId, trigger: 'blur' }], |
| | | entryTime: [{ required: true, message: '请选择入职时间', trigger: 'blur' }], |
| | | // duty: [{ required: true, message: '请输入职务', trigger: 'blur' }], |
| | | // post: [{ required: true, message: '请输入专业', trigger: 'blur' }] |
| | | age: [{ required: true, message: '请输入年龄', trigger: 'blur' }], |
| | | personType: [{ required: true, message: '请选择人员类别', trigger: 'blur' }], |
| | | positional: [{ required: true, message: '请输入职称', trigger: 'blur' }] |
| | | }, |
| | | companyList: [], |
| | | userList: [], |
| | |
| | | const onSubmit = async () => { |
| | | const valid = await superRef.value.validate(); |
| | | if(valid){ |
| | | if((state.form.userType ===1 && state.form.companyId ===null) || ((state.form.userType ===2 ||state.form.userType ===3) && (state.form.parentId ===null ||state.form.companyId===null))){ |
| | | if((state.form.userType ===2 ||state.form.userType ===3) && (state.form.parentId ===null ||state.form.companyId===null)){ |
| | | ElMessage.warning('请选择所属父级账号') |
| | | return; |
| | | } |
| | |
| | | parentId: data.parentId, |
| | | idCard: data.idCard, |
| | | entryTime: data.entryTime, |
| | | resignTime: data.resignTime, |
| | | duty: data.duty, |
| | | post: data.post |
| | | post: data.post, |
| | | companyName: data.companyName, |
| | | age: data.age, |
| | | personType: data.personType, |
| | | positional: data.positional |
| | | } |
| | | |
| | | const res = await editUser(param) |
| | |
| | | state.form.companyId = null; |
| | | state.form.companyName = ''; |
| | | //当前是管理员级用户 |
| | | console.log(state.currentUserType,'type') |
| | | if(state.currentUserType === 0){ |
| | | if(state.form.userType === 0){ |
| | | showCompany.value = false; |
| | | showChild.value = false; |
| | | }else { |
| | | showCompany.value = true; |
| | | showChild.value = false; |
| | | if(state.form.userType === 3){ |
| | | showChild.value = true |
| | | }else{ |
| | | showChild.value = false; |
| | | } |
| | | |
| | | } |
| | | }else{ |
| | | state.form.companyId = userInfo.value.companyId; |
| | | state.form.companyName = userInfo.value.companyName |
| | | showCompany.value = true |
| | | } |
| | | //当前是企业级/其他用户选择部门 |
| | | if((state.currentUserType === 1 && state.form.userType === 2) || (state.currentUserType === 4 && state.form.userType === 2)){ |
| | | if((state.currentUserType === 1 && state.form.userType === 2) || (state.currentUserType === 4 && state.form.userType === 2) || (state.currentUserType === 6 && state.form.userType === 2)){ |
| | | state.form.parentId = userInfo.value.id; |
| | | state.form.companyName = userInfo.value.companyName |
| | | state.form.companyId = userInfo.value.companyId; |
| | | showChild.value = false; |
| | | showCompany.value = true; |
| | | // showCompany.value = true; |
| | | |
| | | } //当前是企业级/其他用户选择车间 |
| | | else if((state.currentUserType === 1 && state.form.userType === 3) || (state.currentUserType === 4 && state.form.userType === 3)){ |
| | | } else if((state.currentUserType === 1 && state.form.userType === 3) || (state.currentUserType === 4 && state.form.userType === 3)|| (state.currentUserType === 6 && state.form.userType === 3)){ |
| | | state.form.companyName = userInfo.value.companyName |
| | | state.form.companyId = userInfo.value.companyId; |
| | | showCompany.value = true; |
| | | // showCompany.value = true; |
| | | showChild.value = true; |
| | | const param = { |
| | | userType: 2, |
| | |
| | | state.form.parentId = userInfo.value.id; |
| | | state.form.companyName = userInfo.value.companyName |
| | | state.form.companyId = userInfo.value.companyId; |
| | | showCompany.value = true; |
| | | // showCompany.value = true; |
| | | showChild.value = false; |
| | | } |
| | | // if(state.isAdmin){ |
| | | // state.form.companyId = null; |
| | | // state.form.companyName = ''; |
| | | // } |
| | | // state.form.parentId = null; |
| | | // state.form.parentName = ''; |
| | | // if(state.form.userType === 2 || state.form.userType === 3 ){ |
| | | // const param = { |
| | | // userType: state.form.userType-1, |
| | | // companyId: state.form.companyId, |
| | | // } |
| | | // scrollRef.value.getList(param,'change'); |
| | | // } |
| | | } |
| | | |
| | | const handleClose = () => { |
| | |
| | | userType: null, |
| | | sex: 0, |
| | | companyId: null, |
| | | parentId: null |
| | | companyName: '', |
| | | parentId: null, |
| | | entryTime: '', |
| | | resignTime: '', |
| | | idCard: '', |
| | | deptId: null, |
| | | duty: '', |
| | | post: '', |
| | | age: null, |
| | | personType: null, |
| | | positional: '' |
| | | } |
| | | showCompany.value = false; |
| | | showChild.value = false; |
| | |
| | | <!-- 表格数据 --> |
| | | <el-table v-loading="loading" :data="dataList" :border="true"> |
| | | <el-table-column label="序号" type="index" align="center" width="80" /> |
| | | <el-table-column label="用户名" prop="username" align="center" /> |
| | | <el-table-column label="姓名" prop="name" align="center" /> |
| | | <el-table-column label="用户名" prop="username" align="center"/> |
| | | <el-table-column label="姓名" prop="name" align="center"/> |
| | | <el-table-column label="年龄" prop="age" align="center"/> |
| | | <el-table-column label="职称" prop="positional" align="center"/> |
| | | <el-table-column label="人员类别" prop="personType" align="center"> |
| | | <template #default="scope"> |
| | | {{ scope.row.personType == 1?'技术':'管理' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="身份证号" prop="idCard" align="center" /> |
| | | <el-table-column label="入职时间" prop="entryTime" align="center"/> |
| | | <el-table-column label="部门" prop="deptName" align="center"/> |