| | |
| | | |
| | | }) |
| | | } |
| | | export function delProject(data) { |
| | | return request({ |
| | | url: `/manage/project/remove/` + data.id, |
| | | method: 'delete' |
| | | }) |
| | | } |
| | | |
| | | |
| | |
| | | { |
| | | path: 'business', |
| | | name: 'business', |
| | | meta: { title: '业务范围',icon: 'form'} |
| | | meta: { title: '业务范围管理',icon: 'form'} |
| | | }, |
| | | { |
| | | path: 'area', |
| | | name: 'area', |
| | | meta: { title: '地区维护',icon: 'form'} |
| | | meta: { title: '地区维护管理',icon: 'form'} |
| | | }, |
| | | { |
| | | path: 'major', |
| | | name: 'major', |
| | | meta: { title: '专业方向管理',icon: 'form'} |
| | | } |
| | | |
| | | ] |
| | |
| | | name: 'area', |
| | | meta: { title: '地区维护',icon: 'form'} |
| | | }, |
| | | { |
| | | path: 'major', |
| | | component: () => import('@/views/safetyReview/baseSet/major/index.vue'), |
| | | name: 'major', |
| | | meta: { title: '专业方向',icon: 'form'} |
| | | }, |
| | | ] |
| | | }, |
| | | |
对比新文件 |
| | |
| | | <template> |
| | | <div class="notice"> |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | :title="title" |
| | | width="500px" |
| | | :before-close="handleClose" |
| | | > |
| | | <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="110px" > |
| | | <el-form-item label="专业方向:" prop="label"> |
| | | <el-input v-model.trim="state.form.label"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="handleClose" size="default">取 消</el-button> |
| | | <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import {reactive, ref, toRefs} from 'vue' |
| | | import Editor from "@/components/Editor/index.vue"; |
| | | import {ElMessage} from "element-plus"; |
| | | import {addNotice} from "@/api/backManage/notice"; |
| | | import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate"; |
| | | |
| | | const dialogVisible = ref(false); |
| | | const title = ref(""); |
| | | const busRef = ref(); |
| | | const length = ref() |
| | | const emit = defineEmits(["getList"]); |
| | | const state = reactive({ |
| | | form: { |
| | | id: '', |
| | | label: '', |
| | | value: '', |
| | | dictType: "sys_major_orientation", |
| | | }, |
| | | formRules:{ |
| | | label: [{ required: true, message: '请输入业务范围', trigger: 'blur' }], |
| | | }, |
| | | |
| | | }) |
| | | |
| | | const openDialog = async (type, value) => { |
| | | length.value = value.listLength |
| | | title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ; |
| | | if(type === 'edit') { |
| | | state.form = value; |
| | | const param = { |
| | | dictId: value.id |
| | | } |
| | | const res = await getDictDetail(param); |
| | | if(res.code === 200){ |
| | | state.form = res.data |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | } |
| | | dialogVisible.value = true; |
| | | } |
| | | |
| | | const onSubmit = async () => { |
| | | const valid = await busRef.value.validate(); |
| | | if(valid){ |
| | | if(title.value === '新增'){ |
| | | const param = { |
| | | dictType: "sys_major_orientation", |
| | | label: state.form.label, |
| | | value: length.value.toString() |
| | | } |
| | | const res = await addDict(param) |
| | | 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 param = { |
| | | id: state.form.id, |
| | | dictType: state.form.dictType, |
| | | label: state.form.label, |
| | | value: state.form.value |
| | | } |
| | | const res = await editDict(param) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '新增成功' |
| | | }); |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | emit("getList") |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | } |
| | | } |
| | | } |
| | | |
| | | const handleClose = () => { |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | |
| | | } |
| | | const reset = () => { |
| | | state.form = { |
| | | id: '', |
| | | label: '', |
| | | value: '', |
| | | dictType: "sys_major_orientation", |
| | | } |
| | | } |
| | | defineExpose({ |
| | | openDialog |
| | | }); |
| | | |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .notice{ |
| | | :deep(.el-form .el-form-item__label) { |
| | | font-size: 15px; |
| | | } |
| | | .file { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | } |
| | | } |
| | | </style> |
对比新文件 |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <div style="margin-bottom: 10px"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="Plus" |
| | | @click="openDialog('add',{})" |
| | | >新增</el-button> |
| | | </div> |
| | | <!-- 表格数据 --> |
| | | <el-table v-loading="loading" :data="dataList" :border="true"> |
| | | <el-table-column label="专业方向" prop="label" align="center" /> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" > |
| | | <template #default="scope"> |
| | | <el-button link type="primary" @click="openDialog('edit',scope.row)" >编辑</el-button> |
| | | <el-button link type="danger" @click="handleDelete(scope.row)" >删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div class="pag-container"> |
| | | <el-pagination |
| | | v-model:current-page="data.queryParams.pageNum" |
| | | v-model:page-size="data.queryParams.pageSize" |
| | | :page-sizes="[10,15,20,25]" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | /> |
| | | </div> |
| | | <major-dialog ref="busRef" @getList=getList></major-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import {getCurrentInstance, onMounted, reactive, ref, toRefs} from "vue"; |
| | | import majorDialog from './components/majorDialog.vue' |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import {delDict, getDictList} from "@/api/backManage/evaluate"; |
| | | import {delNotice} from "@/api/backManage/notice"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | | const busRef = ref(); |
| | | const dictType = ref("sys_major_orientation") |
| | | const data = reactive({ |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | dictType: dictType.value |
| | | }, |
| | | total: 0, |
| | | dataList: [ |
| | | ] |
| | | |
| | | |
| | | }); |
| | | |
| | | const { queryParams, total, dataList } = toRefs(data); |
| | | |
| | | onMounted(() => { |
| | | getList(); |
| | | }); |
| | | const getList = async () => { |
| | | loading.value = true; |
| | | const res = await getDictList(data.queryParams); |
| | | if(res.code === 200){ |
| | | dataList.value = res.data.list |
| | | total.value = res.data.total |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | loading.value = false; |
| | | } |
| | | const handleSizeChange = (val) => { |
| | | data.queryParams.pageNum = 1; |
| | | data.queryParams.pageSize = val |
| | | getList() |
| | | } |
| | | const handleCurrentChange = (val) => { |
| | | data.queryParams.pageNum = val |
| | | getList() |
| | | } |
| | | const openDialog = (type, value) => { |
| | | value.listLength = dataList.value.length> 0 ?dataList.value.length:0; |
| | | busRef.value.openDialog(type, value); |
| | | } |
| | | |
| | | /** 重置新增的表单以及其他数据 */ |
| | | function reset() { |
| | | proxy.resetForm("roleRef"); |
| | | } |
| | | const handleDelete = (val) => { |
| | | ElMessageBox.confirm( |
| | | '确定删除此条数据?', |
| | | '提示', |
| | | { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | }) |
| | | .then( async() => { |
| | | const res = await delDict(val); |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '删除成功' |
| | | }); |
| | | getList(); |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | </script> |
| | | <style> |
| | | .pag-container{ |
| | | float: right; |
| | | margin-top: 10px; |
| | | } |
| | | </style> |
| | |
| | | }); |
| | | |
| | | const riskOpen = async (type,val) => { |
| | | state.formData.projectId = val; |
| | | if(type === 'detail' || type === 'edit' ){ |
| | | const res = await getDetail({projectId: val}); |
| | | if(res.code == 200){ |
| | |
| | | if (res.code == 200) { |
| | | ElMessage.success('保存成功') |
| | | formRef.value.clearValidate(); |
| | | emit('getNextStatus', res.data); |
| | | emit('getNextStatus', state.formData.projectId); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | |
| | | } |
| | | }else if(type === 'clickEdit'){ |
| | | const { ...data} = JSON.parse(JSON.stringify(state.formData)) |
| | | data.id = val; |
| | | data.project.id = val; |
| | | delete data.project.area; |
| | | data.isInBusiness = state.tableData[0].status === 1; |
| | | data.isSatisfyNeed = state.tableData[1].status === 1; |
| | |
| | | <template #default="scope"> |
| | | <el-button link type="primary" @click="toProcess('view',scope.row)">查看</el-button> |
| | | <el-button link type="primary" @click="toProcess('edit',scope.row)">编辑</el-button> |
| | | <el-button link type="danger">删除</el-button> |
| | | <el-button link type="danger" @click="del(scope.row)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | |
| | | <script setup> |
| | | import {onMounted, reactive, ref} from "vue"; |
| | | import {getProjectList, getProjectStatistics} from "@/api/projectManage/project"; |
| | | import {ElMessage} from "element-plus"; |
| | | import {delProject, getProjectList, getProjectStatistics} from "@/api/projectManage/project"; |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import {delMonitor} from "@/api/sysUsers"; |
| | | const router = useRouter(); |
| | | |
| | | const loading = ref(false); |
| | |
| | | value.type = type; |
| | | router.push({ path: '/process', query: {id: value.id, type: type}}); |
| | | } |
| | | const del = (val) => { |
| | | ElMessageBox.confirm( |
| | | '确定删除此条数据?', |
| | | '提示', |
| | | { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | }) |
| | | .then( async() => { |
| | | const res = await delProject(val) |
| | | if(res.code == 200){ |
| | | ElMessage.success('数据删除成功') |
| | | getList() |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | |
| | | <span class="text-eclipse" style="margin-left: 5px">{{item.name}}</span> |
| | | </div> |
| | | </div> |
| | | <div v-for="child in item.subMenus" :key="child.id"> |
| | | <div class="down-item" :class="{itemActive: child.status === 1 || child.status === 3, itemPrev: child.status === 2}" @click="chooseSubMenu(child,true)"> |
| | | <div v-for="child in item.subMenus" :key="child.id" @click="chooseSubMenu(child,true)"> |
| | | <div class="down-item" :class="{itemActive: child.status === 1 || child.status === 3, itemPrev: child.status === 2}"> |
| | | <div class="item-icon-status0" v-if="child.status === 0">{{child.id}}</div> |
| | | <div class="item-icon-status0 item-icon-status1" v-else-if="child.status === 1 || (selectedObj.status === 3 && child.id === selectedObj.id)">{{child.id}}</div> |
| | | <div class="item-icon-status0 item-icon-status2" v-else-if="child.status === 2 "><img :src="itemStatus2Png"></div> |
| | |
| | | <div class="card-header">{{selectedObj.id}}- {{selectedObj.name}}</div> |
| | | <div class="card-content"> |
| | | <div :style="'height:' + middleContentHeight + 'px'" style="overflow-y: scroll;"> |
| | | <rickAnalysis ref="riskRef" v-if="selectedObj.id === 2" @getNextStatus="getNextStatus"></rickAnalysis> |
| | | <contract-manage ref="contractMngRef" v-if="selectedObj.id === 1" @getNextStatus="getNextStatus"></contract-manage> |
| | | <rickAnalysis ref="riskRef" v-if="selectedObj.id === 1" @getNextStatus="getNextStatus"></rickAnalysis> |
| | | <contract-manage ref="contractMngRef" v-if="selectedObj.id === 2" @getNextStatus="getNextStatus"></contract-manage> |
| | | <evaluate-task-notice ref="evaluteRef" v-if="selectedObj.id === 3" @getNextStatus="getNextStatus"></evaluate-task-notice> |
| | | <evaluate-plan ref="evalPlanRef" v-if="selectedObj.id === 4" @getNextStatus="getNextStatus"></evaluate-plan> |
| | | </div> |
| | | <div style="display: flex;align-items: center;justify-content: center;margin-bottom: -20px"> |
| | | <el-button type="primary" v-if="selectedObj.id !== 1" style="width: 80px" @click="back">上一步</el-button> |
| | | <el-button type="warning" style="width: 80px" v-if="projectStatus === 'edit' && selectedObj.status !== 1" @click="clickEdit">变更</el-button> |
| | | <!-- <el-button type="warning" style="width: 80px" v-if="selectedObj.status === 1" @click="save">暂存</el-button>--> |
| | | <el-button type="primary" style="width: 80px" @click="next">下一步</el-button> |
| | | <el-button type="warning" style="width: 80px" v-if="(projectStatus === 'add' && selectedObj.status === 1)||(projectStatus === 'edit' && selectedObj.status === 1) " @click="save">保存</el-button> |
| | | <el-button type="warning" style="width: 80px" v-if="(projectStatus === 'edit' && selectedObj.status !== 1) || (projectStatus === 'add' && selectedObj.status !== 1) " @click="clickEdit">变更</el-button> |
| | | <el-button type="primary" style="width: 80px" v-if="selectedObj.id !== 14" @click="next">下一步</el-button> |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | |
| | | if(item.id <= res.data){ |
| | | item.status = 2 |
| | | } |
| | | if(projectStatus.value !== 'view'){ |
| | | if(item.id === res.data + 1){ |
| | | item.status = 4; |
| | | nextObj.value = item; |
| | | } |
| | | } |
| | | if(item.id === res.data){ |
| | | item.status = 3; |
| | |
| | | setTimeout(() => { |
| | | goRouter(selectedObj.value.id) |
| | | }, 10) |
| | | |
| | | } |
| | | }) |
| | | menuList.value[0].status = 1; |
| | |
| | | if(item.id <= res.data) { |
| | | item.status = 2 |
| | | } |
| | | if(projectStatus.value !== 'view'){ |
| | | if(item.id === res.data + 1){ |
| | | item.status = 4; |
| | | nextObj.value = item; |
| | | } |
| | | } |
| | | if(item.id === res.data){ |
| | | item.status = 3; |
| | | selectedObj.value =item; |
| | | |
| | | setTimeout(() => { |
| | | goRouter(selectedObj.value.id) |
| | | }, 10) |
| | |
| | | if(item.id <= res.data) { |
| | | item.status = 2 |
| | | } |
| | | if(projectStatus.value !== 'view'){ |
| | | if(item.id === res.data + 1){ |
| | | item.status = 4; |
| | | nextObj.value = item; |
| | | } |
| | | } |
| | | if(item.id === res.data){ |
| | | item.status = 3; |
| | |
| | | if(item.id <= res.data) { |
| | | item.status = 2 |
| | | } |
| | | if(projectStatus.value !== 'view'){ |
| | | if(item.id === res.data + 1){ |
| | | item.status = 4; |
| | | nextObj.value = item; |
| | | } |
| | | } |
| | | if(item.id === res.data){ |
| | | item.status = 3; |
| | |
| | | if(item.id <= res.data) { |
| | | item.status = 2 |
| | | } |
| | | if(projectStatus.value !== 'view'){ |
| | | if(item.id === res.data + 1){ |
| | | item.status = 4; |
| | | nextObj.value = item; |
| | | } |
| | | } |
| | | if(item.id === res.data){ |
| | | item.status = 3; |
| | |
| | | selectedObj.value.status = 1; |
| | | nextObj.value.status = 2; |
| | | nextObj.value = val; |
| | | // if(flag){ |
| | | // setTimeout(() => { |
| | | // goRouter(selectedObj.value.id) |
| | | // }, 10) |
| | | // } |
| | | //跳转 |
| | | }, 10) |
| | | } |
| | |
| | | nextMenu(4) |
| | | } |
| | | } else { |
| | | //下一步——保存 |
| | | goRouter(selectedObj.value.id,'add') |
| | | } |
| | | |
| | | setTimeout( () => { |
| | | goRouter(selectedObj.value.id) |
| | | }, 100) |
| | | isShowMenu.value = false; |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '请按顺序操作,未完成步骤无法查看!' |
| | | }); |
| | | }, 10) |
| | | } |
| | | // |
| | | // setTimeout( () => { |
| | | // goRouter(selectedObj.value.id) |
| | | // }, 100) |
| | | } |
| | | |
| | | const nextMenu = (id) => { |
| | | menuList.value[id].subMenus.forEach( item => { |
| | | if(item.id === selectedObj.value.id + 1){ |
| | | chooseSubMenu(item,false); |
| | | chooseSubMenu(item,true); |
| | | } |
| | | }) |
| | | } |
| | |
| | | const backMenu = (id) => { |
| | | menuList.value[id].subMenus.forEach(async item => { |
| | | if(item.id === selectedObj.value.id - 1){ |
| | | await chooseSubMenu(item,false); |
| | | await chooseSubMenu(item,true); |
| | | } |
| | | }) |
| | | } |
| | |
| | | }else if (selectedObj.value.id-1 >11){ |
| | | backMenu(4) |
| | | } |
| | | setTimeout( () => { |
| | | goRouter(selectedObj.value.id) |
| | | // switch (selectedObj.value.id){ |
| | | // case 1: |
| | | // if(projectStatus.value === 'view'){ |
| | | // riskRef.value.riskOpen('detail',projectId.value); |
| | | // }else { |
| | | // riskRef.value.riskOpen('edit',projectId.value); |
| | | // } |
| | | // break; |
| | | // case 2: |
| | | // |
| | | // break; |
| | | // case 3: |
| | | // |
| | | // break; |
| | | // case 4: |
| | | // |
| | | // break; |
| | | // case 5: |
| | | // |
| | | // break; |
| | | // case 6: |
| | | // |
| | | // break; |
| | | // case 7: |
| | | // |
| | | // break; |
| | | // case 8: |
| | | // |
| | | // break; |
| | | // case 9: |
| | | // |
| | | // break; |
| | | // case 10: |
| | | // |
| | | // break; |
| | | // case 11: |
| | | // |
| | | // break; |
| | | // case 12: |
| | | // |
| | | // break; |
| | | // case 13: |
| | | // |
| | | // break; |
| | | // case 14: |
| | | // |
| | | // break; |
| | | // } |
| | | }, 100) |
| | | // setTimeout( () => { |
| | | // goRouter(selectedObj.value.id) |
| | | // }, 100) |
| | | |
| | | } |
| | | const clickEdit = () => { |
| | | |
| | | goRouter(selectedObj.value.id,'clickEdit') |
| | | // switch (selectedObj.value.id){ |
| | | // case 1: |
| | | // riskRef.value.riskOpen('clickEdit',projectId.value); |
| | | // break; |
| | | // case 2: |
| | | // |
| | | // break; |
| | | // case 3: |
| | | // |
| | | // break; |
| | | // case 4: |
| | | // |
| | | // break; |
| | | // case 5: |
| | | // |
| | | // break; |
| | | // case 6: |
| | | // |
| | | // break; |
| | | // case 7: |
| | | // |
| | | // break; |
| | | // case 8: |
| | | // |
| | | // break; |
| | | // case 9: |
| | | // |
| | | // break; |
| | | // case 10: |
| | | // |
| | | // break; |
| | | // case 11: |
| | | // |
| | | // break; |
| | | // case 12: |
| | | // |
| | | // break; |
| | | // case 13: |
| | | // |
| | | // break; |
| | | // case 14: |
| | | // |
| | | // break; |
| | | // } |
| | | } |
| | | const getNextStatus = (val) => { |
| | | getStatus(val); |
| | | const getNextStatus = async (val) => { |
| | | projectId.value = val; |
| | | console.log("val",val) |
| | | const res = await getProjectStatus(val); |
| | | if(res.code == 200){ |
| | | if(res.data <=4){ |
| | | menuList.value[0].subMenus.forEach(item => { |
| | | if(item.id <= res.data){ |
| | | item.status = 2 |
| | | } |
| | | if(item.id === res.data + 1){ |
| | | item.status = 1; |
| | | selectedObj.value =item; |
| | | nextObj.value = item; |
| | | } |
| | | // else if(item.id === res.data ){ |
| | | // item.status = 3; |
| | | // selectedObj.value =item; |
| | | // }else if(item.id === res.data + 1){ |
| | | // item.status = 4; |
| | | // nextObj.value = item; |
| | | // } |
| | | }) |
| | | menuList.value[0].status = 1; |
| | | console.log("menu11",menuList.value) |
| | | } |
| | | if(res.data >=4 && res.data<=6){ |
| | | setMenuList(0) |
| | | menuList.value[1].subMenus.forEach(item => { |
| | | if(item.id <= res.data) { |
| | | item.status = 2 |
| | | } |
| | | if(item.id === res.data + 1){ |
| | | item.status = 1; |
| | | selectedObj.value =item; |
| | | nextObj.value = item; |
| | | } |
| | | // if(item.id === res.data){ |
| | | // item.status = 3; |
| | | // selectedObj.value =item; |
| | | // } |
| | | }) |
| | | menuList.value[0].status = 2; |
| | | menuList.value[1].status = 1; |
| | | console.log("menu22",menuList.value) |
| | | } |
| | | if(res.data >= 6 && res.data <= 9){ |
| | | setMenuList(0); |
| | | setMenuList(1); |
| | | menuList.value[2].subMenus.forEach(item => { |
| | | if(item.id <= res.data) { |
| | | item.status = 2 |
| | | } |
| | | if(item.id === res.data + 1){ |
| | | item.status = 1; |
| | | selectedObj.value =item; |
| | | nextObj.value = item; |
| | | } |
| | | // if(item.id === res.data){ |
| | | // item.status = 3; |
| | | // selectedObj.value =item; |
| | | // } |
| | | }) |
| | | menuList.value[0].status = 2; |
| | | menuList.value[1].status = 2; |
| | | menuList.value[2].status = 1; |
| | | } |
| | | if(res.data >= 9 && res.data <=11){ |
| | | setMenuList(0); |
| | | setMenuList(1); |
| | | setMenuList(2); |
| | | menuList.value[3].subMenus.forEach(item => { |
| | | if(item.id <= res.data) { |
| | | item.status = 2 |
| | | } |
| | | if(item.id === res.data + 1){ |
| | | item.status = 1; |
| | | selectedObj.value =item; |
| | | nextObj.value = item; |
| | | } |
| | | // if(item.id === res.data){ |
| | | // item.status = 3; |
| | | // selectedObj.value =item; |
| | | // } |
| | | }) |
| | | menuList.value[0].status = 2; |
| | | menuList.value[1].status = 2; |
| | | menuList.value[2].status = 2; |
| | | menuList.value[3].status = 1; |
| | | } |
| | | if(res.data >= 11){ |
| | | setMenuList(0); |
| | | setMenuList(1); |
| | | setMenuList(2); |
| | | setMenuList(3); |
| | | // if(res.data === 11){ |
| | | // menuList.value[3].subMenus[1].status = 3; |
| | | // } |
| | | menuList.value[4].subMenus.forEach(item => { |
| | | if(item.id <= res.data) { |
| | | item.status = 2 |
| | | } |
| | | if(item.id === res.data + 1){ |
| | | item.status = 1; |
| | | selectedObj.value =item; |
| | | nextObj.value = item; |
| | | } |
| | | // if(item.id === res.data){ |
| | | // item.status = 3; |
| | | // selectedObj.value =item; |
| | | // } |
| | | menuList.value[0].status = 2; |
| | | menuList.value[1].status = 2; |
| | | menuList.value[2].status = 2; |
| | | menuList.value[3].status = 2; |
| | | menuList.value[4].status = 1; |
| | | if(res.data === 14 && res.data === item.id){ |
| | | item.status = 3; |
| | | menuList.value[4].status = 2; |
| | | selectedObj.value =item; |
| | | } |
| | | }) |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | const save = () => { |
| | | goRouter(selectedObj.value.id,'add') |
| | | |
| | | } |
| | | const goRouter = (val,type) => { |
| | | switch (val){ |
| | | case 1: |
| | |
| | | }else if (type === 'clickEdit'){ |
| | | riskRef.value.riskOpen('clickEdit',projectId.value); |
| | | }else { |
| | | if(projectStatus.value === 'view'){ |
| | | if(projectStatus.value === 'view' || projectStatus.value === 'add'){ |
| | | riskRef.value.riskOpen('detail',projectId.value); |
| | | }else { |
| | | }else if(projectStatus.value === 'edit'){ |
| | | riskRef.value.riskOpen('edit',projectId.value); |
| | | } |
| | | } |
| | |
| | | break; |
| | | case 2: |
| | | if(type === 'add'){ |
| | | contractMngRef.value.riskOpen('add',''); |
| | | contractMngRef.value.riskOpen('add',projectId.value); |
| | | }else if (type === 'clickEdit'){ |
| | | contractMngRef.value.riskOpen('clickEdit',projectId.value); |
| | | }else { |
| | | if(projectStatus.value === 'view'){ |
| | | if(projectStatus.value === 'view' || projectStatus.value === 'add'){ |
| | | contractMngRef.value.riskOpen('detail',projectId.value); |
| | | }else { |
| | | }else if(projectStatus.value === 'edit'){ |
| | | contractMngRef.value.riskOpen('edit',projectId.value); |
| | | } |
| | | } |
| | |
| | | break; |
| | | case 3: |
| | | if(type === 'add'){ |
| | | evaluteRef.value.riskOpen('add',''); |
| | | evaluteRef.value.riskOpen('add',projectId.value); |
| | | }else if (type === 'clickEdit'){ |
| | | evaluteRef.value.riskOpen('clickEdit',projectId.value); |
| | | }else { |
| | | if(projectStatus.value === 'view'){ |
| | | if(projectStatus.value === 'view' || projectStatus.value === 'add'){ |
| | | evaluteRef.value.riskOpen('detail',projectId.value); |
| | | }else { |
| | | }else if(projectStatus.value === 'edit'){ |
| | | evaluteRef.value.riskOpen('edit',projectId.value); |
| | | } |
| | | } |
| | |
| | | border-radius: 50%; |
| | | background: #b9c2d5; |
| | | margin-right: 10px; |
| | | min-width: 21px; |
| | | min-height: 21px; |
| | | } |
| | | .item-icon-status1{ |
| | | color: #3b75ff; |
| | |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | :title="state.title" |
| | | width="830px" |
| | | width="900px" |
| | | :before-close="handleClose" |
| | | > |
| | | <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="110px" > |
| | | <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="150px" > |
| | | <el-row :gutter="22"> |
| | | <el-col :span="11"> |
| | | <el-form-item label="姓名:" prop="name" v-if="state.title !== '修改密码'"> |
| | | <el-input v-model.trim="state.form.name" ></el-input> |
| | | <el-input v-model.trim="state.form.name" placeholder="请输入姓名"></el-input> |
| | | </el-form-item> |
| | | |
| | | </el-col> |
| | | <el-col :span="11"> |
| | | <el-form-item label="手机号:" prop="phone" v-if="state.title !== '修改密码'"> |
| | | <el-input v-model.trim="state.form.phone" :maxlength="11" ></el-input> |
| | | <el-input v-model.trim="state.form.phone" :maxlength="11" placeholder="手机号"></el-input> |
| | | </el-form-item> |
| | | |
| | | </el-col> |
| | |
| | | <el-row :gutter="22"> |
| | | <el-col :span="11"> |
| | | <el-form-item label="用户名:" prop="username" v-if="state.title !== '修改密码'"> |
| | | <el-input v-model.trim="state.form.username" :disabled="state.title === '编辑'"></el-input> |
| | | <el-input v-model.trim="state.form.username" :disabled="state.title === '编辑'" placeholder="请输入用户名"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="11"> |
| | |
| | | <el-row :gutter="22"> |
| | | <el-col :span="11"> |
| | | <el-form-item label="所属机构:" prop="agencyId" v-if="state.title !== '修改密码'"> |
| | | <el-select v-model="state.form.agencyId" v-loadMore="loadMore" class="m-2" placeholder="请选择机构" popper-class="more_select_dropdown" @change="selectChange" > |
| | | <el-select v-model="state.form.agencyId" style="width: 100%" v-loadMore="loadMore" class="m-2" placeholder="请选择机构" popper-class="more_select_dropdown" > |
| | | <el-option |
| | | v-for="item in state.agencyList" |
| | | :key="item.id" |
| | |
| | | </el-col> |
| | | <el-col :span="11"> |
| | | <el-form-item label="职务:" prop="post" v-if="state.title !== '修改密码'"> |
| | | <el-input v-model.trim="state.form.post" :maxlength="11" ></el-input> |
| | | <!-- <el-input v-model.trim="state.form.post" :maxlength="11" ></el-input>--> |
| | | <el-select v-model="state.form.post" class="m-2" style="width: 100%" placeholder="请选择职务" popper-class="more_select_dropdown" > |
| | | <el-option |
| | | v-for="item in state.postList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.name" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="22"> |
| | | <el-col :span="11"> |
| | | <el-form-item label="职称:" prop="jobTitle" v-if="state.title !== '修改密码'"> |
| | | <el-input v-model.trim="state.form.jobTitle" :maxlength="11" ></el-input> |
| | | <el-input v-model.trim="state.form.jobTitle" :maxlength="11" placeholder="请输入职称"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="11"> |
| | | <el-form-item label="专业方向:" prop="major" v-if="state.title !== '修改密码'"> |
| | | <el-input v-model.trim="state.form.major" :maxlength="11" ></el-input> |
| | | <el-form-item label="专业方向:" prop="majorShow" v-if="state.title !== '修改密码'" > |
| | | <el-select v-model="state.form.majorShow" value-key="id" class="m-2" style="width: 100%" multiple placeholder="请选择专业方向" popper-class="more_select_dropdown" @change="selectChange"> |
| | | <el-option |
| | | v-for="item in state.majorList" |
| | | :key="item.id" |
| | | :label="item.label" |
| | | :value="item" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <div v-for="(item,index) in state.form.majorShow" :key="item.id" style="margin-bottom: 20px" > |
| | | <el-form-item :label="item.label+'证书编号:'" > |
| | | <el-input v-model="item.certificateNo" :placeholder="'请输入'+item.label+'证书编号'"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="22"> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="22"> |
| | | <el-col :span="11"> |
| | | <el-form-item label="专家类型:" prop="expertType" v-if="state.title !== '修改密码'"> |
| | | <el-radio-group v-model="state.form.expertType" class="ml-4"> |
| | | <el-radio :label="1" >安全评价</el-radio> |
| | | <el-radio :label="2" >检验检测</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="11"> |
| | | <el-form-item label="评价师等级:" prop="level" v-if="state.title !== '修改密码'"> |
| | | <el-select v-model="state.form.level" class="m-2" style="width: 100%" placeholder="请选择评价师等级" popper-class="more_select_dropdown" > |
| | | <el-option |
| | | v-for="item in state.levelList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.name" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | |
| | | <el-form-item prop="socialAttach" label="社保:" v-if="state.title !== '修改密码'"> |
| | | <el-upload |
| | |
| | | import {resetUserPwd} from "../../../../../api/sysUsers"; |
| | | import {getToken} from "@/utils/auth"; |
| | | import {getInsitutionList} from "@/api/backManage/insitution"; |
| | | import {getDictList} from "@/api/backManage/evaluate"; |
| | | |
| | | const emit = defineEmits(["getList"]); |
| | | const dialogVisible = ref(false) |
| | |
| | | salaryAttach: [], |
| | | post: '', |
| | | jobTitle: '', |
| | | level: '', |
| | | majorShow: [], |
| | | major: '', |
| | | expertType: 1, |
| | | password: '', |
| | |
| | | password: [{ required: true, validator: validatePwd, trigger: 'blur' }], |
| | | confirmPassword: [{ required: true, validator: equalToPassword, trigger: 'blur' }], |
| | | phone: [{ required: true, validator: validateUserPhone, trigger: 'blur' }], |
| | | post: [{ required: true, message: '请输入职务', trigger: 'blur' }], |
| | | post: [{ required: true, message: '请选择职务', trigger: 'change' }], |
| | | jobTitle:[{ required: true, message: '请输入职称', trigger: 'blur' }], |
| | | major:[{ required: true, message: '请输入专业方向', trigger: 'blur' }], |
| | | // agencyId: [{ required: true, message: '请选择所属机构', trigger: 'blur' }], |
| | | level: [{ required: true, message: '请选择评价师等级', trigger: 'change' }], |
| | | majorShow:[{ required: true, message: '请选择专业方向', trigger: 'change' }], |
| | | agencyId: [{ required: true, message: '请选择所属机构', trigger: 'change' }], |
| | | socialAttach: [{required: true, trigger: "blur", message: "请上传社保图片"}], |
| | | medicalAttach: [{required: true, trigger: "blur", message: "请上传医保图片"}], |
| | | salaryAttach: [{required: true, trigger: "blur", message: "请上传工资清单"}], |
| | |
| | | dialogImg: false, |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | postList: [ |
| | | { |
| | | id: '1', |
| | | name: '法人' |
| | | }, |
| | | { |
| | | id: '2', |
| | | name: '过程控制负责人' |
| | | }, |
| | | { |
| | | id: '3', |
| | | name: '机构负责人' |
| | | }, |
| | | { |
| | | id: '4', |
| | | name: '技术负责人' |
| | | }, |
| | | { |
| | | id: '5', |
| | | name: '员工' |
| | | }, |
| | | ], |
| | | majorList: [], |
| | | levelList: [ |
| | | { |
| | | id: '1', |
| | | name: '一级' |
| | | }, |
| | | { |
| | | id: '2', |
| | | name: '二级' |
| | | }, |
| | | { |
| | | id: '3', |
| | | name: '三级' |
| | | }, |
| | | { |
| | | id: '4', |
| | | name: '其他' |
| | | }, |
| | | ] |
| | | }) |
| | | |
| | | onMounted(()=>{ |
| | | getAgency() |
| | | getMajor() |
| | | }) |
| | | |
| | | const openDialog = async (type, value) => { |
| | |
| | | name: url.name |
| | | } |
| | | }); |
| | | const arr = [] |
| | | const certificateList = JSON.parse(res.data.certificateNo) |
| | | for( let key in certificateList) { |
| | | arr.push( { |
| | | id: parseInt(key), |
| | | certificateNo: certificateList[key], |
| | | }) |
| | | arr.forEach((item,index) => { |
| | | item.label = res.data.majorNames[index] |
| | | }) |
| | | } |
| | | state.form.majorShow = arr; |
| | | console.log(state.form.majorShow,'certificateList') |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | |
| | | const onSubmit = async () => { |
| | | const valid = await superRef.value.validate(); |
| | | if(valid){ |
| | | state.form.majorShow.forEach(item => { |
| | | if(item.certificateNo == ''){ |
| | | ElMessage.warning('请输入对应的证书编号') |
| | | return ; |
| | | } |
| | | }) |
| | | if(state.title == '新增'){ |
| | | const {confirmPassword,id,socialList,salaryList,medicalList,...data} = state.form |
| | | data.password = Base64.encode(data.password) |
| | | let obj = {}; |
| | | data.majorShow.forEach(item => { |
| | | obj[item.id] = item.certificateNo; |
| | | }) |
| | | data.major = JSON.stringify(obj); |
| | | delete data.majorShow; |
| | | |
| | | console.log('data',data) |
| | | const res = await addExpert(data); |
| | | if(res.code == 200){ |
| | |
| | | }else if(state.title == '编辑'){ |
| | | const {confirmPassword,socialList,salaryList,medicalList,...data} = state.form |
| | | data.password = Base64.encode(data.password) |
| | | let obj = {}; |
| | | data.majorShow.forEach(item => { |
| | | obj[item.id] = item.certificateNo; |
| | | }) |
| | | data.major = JSON.stringify(obj); |
| | | delete data.majorShow; |
| | | delete data.certificateNo; |
| | | delete data.majorNames; |
| | | console.log('editdata',data) |
| | | const res = await editExpert(data) |
| | | if(res.code == 200){ |
| | |
| | | salaryAttach: [], |
| | | post: '', |
| | | jobTitle: '', |
| | | level:'', |
| | | majorShow: [], |
| | | major: '', |
| | | expertType: 1, |
| | | password: '', |
| | |
| | | state.salaryList = []; |
| | | state.medicalList = []; |
| | | state.socialList = []; |
| | | state.form.selectMajorList = []; |
| | | } |
| | | const picSize = async (rawFile) => { |
| | | if(rawFile.size / 1024 / 1024 > 5){ |
| | |
| | | ElMessage.warning(res.message) |
| | | } |
| | | } |
| | | const getMajor = async () => { |
| | | const queryParams = { |
| | | pageNum: 1, |
| | | pageSize: 50, |
| | | dictType: 'sys_major_orientation' |
| | | } |
| | | const res = await getDictList(queryParams); |
| | | if(res.code === 200){ |
| | | state.majorList = res.data.list |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | |
| | | getAgency() |
| | | }, 500) |
| | | } |
| | | |
| | | //选中值发生变化时触发 |
| | | const selectChange = () => { |
| | | console.log('选中的xxxx') |
| | | const selectChange = (val) => { |
| | | // state.form.selectMajorList= val; |
| | | console.log('选中的xxxx',val) |
| | | } |
| | | |
| | | defineExpose({ |
| | |
| | | <!-- 表格数据 --> |
| | | <el-table v-loading="loading" :data="dataList" :border="true"> |
| | | <el-table-column label="用户ID" prop="id" align="center" /> |
| | | <el-table-column label="姓名" prop="name" align="center" /> |
| | | <el-table-column label="手机号" prop="phone" align="center" /> |
| | | <el-table-column label="用户名" prop="username" align="center" /> |
| | | <el-table-column label="姓名" prop="name" align="center" width="110" /> |
| | | <el-table-column label="手机号" prop="phone" align="center" width="125" /> |
| | | <el-table-column label="用户名" prop="username" align="center" width="110" /> |
| | | <el-table-column label="性别" prop="sex" align="center" > |
| | | <template #default="scope"> |
| | | <span v-if="scope.row.sex === 0">男</span> |
| | | <span v-if="scope.row.sex === 1">女</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="所属机构" prop="agency.name" align="center" /> |
| | | <el-table-column label="所属机构" prop="agency.name" align="center" width="110" /> |
| | | <el-table-column label="社保" prop="socialSecurity" align="center" width="120"> |
| | | <template #default="scope"> |
| | | <div class="demo-image__preview" v-if="scope.row.socialAttach && scope.row.socialAttach.length>0"> |
| | |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="职务" prop="post" align="center" /> |
| | | <el-table-column label="职务" prop="post" align="center" width="120" /> |
| | | <el-table-column label="职称" prop="jobTitle" align="center" /> |
| | | <el-table-column label="专业方向" prop="major" align="center" /> |
| | | <el-table-column label="专业方向" prop="majorNames" align="center" width="100" /> |
| | | <el-table-column label="评价师等级" prop="level" align="center" width="100" /> |
| | | <el-table-column label="业绩汇总" prop="summary" align="center" /> |
| | | <el-table-column label="最近评价时间" prop="lastTime" align="center" width="120" /> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120" > |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="140" > |
| | | <template #default="scope"> |
| | | <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button> |
| | | <el-button link type="danger" @click="handleDelete(scope.row)" >删除</el-button> |