对比新文件 |
| | |
| | | import request from "@/utils/request"; |
| | | |
| | | export function getNeedDiscren(params) { |
| | | return request({ |
| | | url: '/composite/expect/discren/list', |
| | | method: 'get', |
| | | params: params |
| | | }) |
| | | } |
| | | export function getNeedDiscrenAll(params) { |
| | | return request({ |
| | | url: '/composite/factor/discern/listAll', |
| | | method: 'get', |
| | | params: params |
| | | }) |
| | | } |
| | | |
| | | export function addNeedDiscren(data) { |
| | | return request({ |
| | | url: '/composite/expect/discren/insert', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | export function editNeedDiscren(params) { |
| | | return request({ |
| | | url: `/composite/expect/discren/update`, |
| | | method: 'post', |
| | | data: params |
| | | }) |
| | | } |
| | | |
| | | export function delNeedDiscren(data) { |
| | | return request({ |
| | | url: `/composite/expect/discren/deleted?expectDiscrenId=${data}`, |
| | | method: 'get' |
| | | }) |
| | | } |
| | | |
| | | //评价 |
| | | export function getNeedEvaluate(params) { |
| | | return request({ |
| | | url: '/composite/expect/evaluate/list', |
| | | method: 'get', |
| | | params: params |
| | | }) |
| | | } |
| | | export function getNeedEvaluateAll(params) { |
| | | return request({ |
| | | url: '/composite/expect/discren/listAll', |
| | | method: 'get', |
| | | params: params |
| | | }) |
| | | } |
| | | |
| | | export function addNeedEvaluate(data) { |
| | | return request({ |
| | | url: '/composite/expect/evaluate/insert', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | export function editNeedEvaluate(params) { |
| | | return request({ |
| | | url: `/composite/expect/evaluate/update`, |
| | | method: 'post', |
| | | data: params |
| | | }) |
| | | } |
| | | |
| | | export function delNeedEvaluate(data) { |
| | | return request({ |
| | | url: `/composite/expect/evaluate/deleted?expectEvaluateId=${data}`, |
| | | method: 'get' |
| | | }) |
| | | } |
对比新文件 |
| | |
| | | import request from "@/utils/request"; |
| | | |
| | | export function getRiskControl(params) { |
| | | return request({ |
| | | url: '/composite/risk/manage/list', |
| | | method: 'get', |
| | | params: params |
| | | }) |
| | | } |
| | | export function getRiskControlAll(params) { |
| | | return request({ |
| | | url: '/composite/risk/manage/listAll', |
| | | method: 'get', |
| | | params: params |
| | | }) |
| | | } |
| | | |
| | | export function addRiskControl(data) { |
| | | return request({ |
| | | url: '/composite/risk/manage/insert', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | export function editRiskControl(params) { |
| | | return request({ |
| | | url: `/composite/risk/manage/update`, |
| | | method: 'post', |
| | | data: params |
| | | }) |
| | | } |
| | | |
| | | export function delRiskControl(data) { |
| | | return request({ |
| | | url: `/composite/risk/manage/deleted?riskManageId=${data}`, |
| | | method: 'get' |
| | | }) |
| | | } |
| | | |
| | | //监视记录 |
| | | export function getMonitorRecord(params) { |
| | | return request({ |
| | | url: '/composite/risk/monitor/list', |
| | | method: 'get', |
| | | params: params |
| | | }) |
| | | } |
| | | |
| | | export function addMonitorRecord(data) { |
| | | return request({ |
| | | url: '/composite/risk/monitor/insert', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | export function editMonitorRecord(params) { |
| | | return request({ |
| | | url: `/composite/risk/monitor/update`, |
| | | method: 'post', |
| | | data: params |
| | | }) |
| | | } |
| | | |
| | | export function delMonitorRecord(data) { |
| | | return request({ |
| | | url: `/composite/risk/monitor/deleted?riskMonitorId=${data}`, |
| | | method: 'get' |
| | | }) |
| | | } |
| | |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-form :model="state.form" size="default" ref="busRef" :rules="state.rules" label-position="right" label-width="130"> |
| | | <el-form :model="state.form" size="default" ref="busRef" :rules="state.rules" label-position="right" > |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="企业名称:" prop="companyId" v-if="state.isAdmin"> |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="相关方期望或要求识别表:" prop="year" > |
| | | <el-form-item label="相关方期望或要求识别表:" prop="expectDiscrenId" > |
| | | <el-select |
| | | v-model="state.form.year" |
| | | v-model="state.form.expectDiscrenId" |
| | | placeholder="请选择" |
| | | style="width: 100%" |
| | | @change="changeDiscren" |
| | | :disabled="title === '查看'" |
| | | > |
| | | <el-option |
| | | v-for="item in state.yearList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.label" |
| | | v-for="item in state.needList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="相关方期望或要求识别表:" prop="outEnvironment" > |
| | | <el-form-item label="相关方期望或要求评价表:" :label-width="110" prop="expectContents" > |
| | | <div style="display: flex;width: 100%;"> |
| | | <el-table :data="state.form.outEnvironment" :border="true" > |
| | | <el-table :data="state.form.expectContents" :border="true" > |
| | | <el-table-column type="index" label="序号" align="center"></el-table-column> |
| | | <el-table-column label="相关方" prop="message" align="center" /> |
| | | <el-table-column label="期望或要求" prop="message" align="center" /> |
| | | <el-table-column label="应对措施" prop="message" align="center" /> |
| | | <el-table-column label="评价结果" prop="remark" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + ']' + '.content'" :rules="state.rules.out.content"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="row.content" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <el-table-column label="相关方" prop="stakeholder" align="center" /> |
| | | <el-table-column label="期望或要求" prop="message" align="center"> |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.expectContentMesses" :key="index"> |
| | | <!-- <span>{{ i.expectation }}</span>--> |
| | | <el-input style="margin-bottom: 5px" disabled v-model="i.expectation"></el-input> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center" width="120" v-if="title !== '查看'" > |
| | | <template #default="scope"> |
| | | <el-button link type="danger" @click="delTable(scope.row)" >删除</el-button> |
| | | <el-table-column label="应对措施" prop="message" align="center"> |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.expectContentMesses" :key="index"> |
| | | <!-- <span>{{ i.solutions }}</span>--> |
| | | <el-input disabled style="margin-bottom: 5px" v-model="i.solutions"></el-input> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="评价结果" prop="review" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.expectContentMesses" :key="index"> |
| | | <el-form-item :prop="'expectContents.' + '[' + $index + '].' +'expectContentMesses.' + '[' + index + ']' + '.review'" :rules="state.rules.review"> |
| | | <el-input style="margin-bottom: 5px" :disabled="title === '查看'" v-model="i.review" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column label="操作" align="center" width="120" v-if="title !== '查看'" >--> |
| | | <!-- <template #default="scope">--> |
| | | <!-- <el-button link type="danger" @click="delTable(scope.row)" >删除</el-button>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | </el-table> |
| | | <el-button |
| | | :disabled="title === '查看'" |
| | | type="primary" |
| | | @click="addTableData" |
| | | style="margin-left: 10px" |
| | | >新增</el-button> |
| | | <!-- <el-button--> |
| | | <!-- :disabled="title === '查看'"--> |
| | | <!-- type="primary"--> |
| | | <!-- @click="addTableData"--> |
| | | <!-- style="margin-left: 10px"--> |
| | | <!-- >新增</el-button>--> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="评价人:" prop="compilationId" > |
| | | <el-select clearable v-model="state.form.compilationId" :disabled="title =='查看'" filterable style="width: 240px"> |
| | | <el-form-item label="评价人:" prop="evaluateId" > |
| | | <el-select clearable v-model="state.form.evaluateId" :disabled="title =='查看'" filterable style="width: 240px"> |
| | | <el-option |
| | | v-for="item in state.peopleList" |
| | | :key="item.id" |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="确认人:" prop="ratifyId" > |
| | | <el-select clearable v-model="state.form.ratifyId" :disabled="title =='查看'" filterable style="width: 240px"> |
| | | <el-form-item label="确认人:" prop="confirmId" > |
| | | <el-select clearable v-model="state.form.confirmId" :disabled="title =='查看'" filterable style="width: 240px"> |
| | | <el-option |
| | | v-for="item in state.peopleList" |
| | | :key="item.id" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="日期:" prop="dateTime" > |
| | | <el-form-item label="日期:" prop="evaluateTime" > |
| | | <el-date-picker |
| | | :disabled="title === '查看'" |
| | | v-model="state.form.dateTime" |
| | | v-model="state.form.evaluateTime" |
| | | type="date" |
| | | placeholder="请选择日期" |
| | | /> |
| | |
| | | import {getUser} from "@/api/onlineEducation/user"; |
| | | import {getDept, getObject, getObjectPage} from "@/api/qualityObjectives/object"; |
| | | import {addTable, editTable, getTargetById} from "@/api/qualityObjectives/table"; |
| | | import {addNeedEvaluate, editNeedEvaluate, getNeedEvaluateAll} from "@/api/need/need"; |
| | | |
| | | const dialogVisible = ref(false); |
| | | const title = ref(""); |
| | |
| | | form: { |
| | | id: '', |
| | | companyId: null, |
| | | departId: null, |
| | | year: '', |
| | | compilationId: null, |
| | | checkId: null, |
| | | ratifyId: null, |
| | | dateTime: null, |
| | | outEnvironment:[], |
| | | inEnvironment: [] |
| | | expectDiscrenId: null, |
| | | evaluateId: null, |
| | | confirmId: null, |
| | | evaluateTime: null, |
| | | expectContents:[] |
| | | }, |
| | | rules: { |
| | | companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }], |
| | | departId: [{ required: true, message: '请选择部门', trigger: 'blur' }], |
| | | year: [{ required: true, message: '请选择年份', trigger: 'blur' }], |
| | | compilationId: [{ required: true, message: '请选择编制人', trigger: 'blur' }], |
| | | ratifyId: [{ required: true, message: '请选择批准人', trigger: 'blur' }], |
| | | expectDiscrenId: [{ required: true, message: '请选择相关方期望或要求识别表', trigger: 'blur' }], |
| | | evaluateId: [{ required: true, message: '请选择评价人', trigger: 'blur' }], |
| | | confirmId: [{ required: true, message: '请选择确认人', trigger: 'blur' }], |
| | | evaluateTime: [{ required: true, message: '请选择时间', trigger: 'blur' }], |
| | | checkId: [{ required: true, message: '请选择审核人', trigger: 'blur' }], |
| | | dateTime: [{ required: true, message: '请选择日期', trigger: 'blur' }], |
| | | out: { |
| | | reason: [{required: true, message: "", trigger: "blur"}], |
| | | content: [{required: true, message: "", trigger: "blur"}], |
| | | }, |
| | | in: { |
| | | reason: [{required: true, message: "", trigger: "blur"}], |
| | | content: [{required: true, message: "", trigger: "blur"}], |
| | | }, |
| | | review: [{required: true, message: "", trigger: "blur"}], |
| | | }, |
| | | peopleList: [], |
| | | isAdmin: false, |
| | | companyList: [], |
| | | deptList: [], |
| | | yearList: [ |
| | | { |
| | | value: 1, |
| | | label: '2025' |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: '2024' |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: '2023' |
| | | }, |
| | | { |
| | | value: 4, |
| | | label: '2022' |
| | | }, |
| | | { |
| | | value: 5, |
| | | label: '2021' |
| | | }, |
| | | ], |
| | | outReasonList:[ |
| | | { |
| | | id: 1, |
| | | name: '政治经济因素' |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '法律法规因素' |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: '宏观政策因素' |
| | | }, |
| | | { |
| | | id: 4, |
| | | name: '文化氛围' |
| | | }, |
| | | ], |
| | | inReasonList:[ |
| | | { |
| | | id: 1, |
| | | name: '公司价值观' |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '企业文化' |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: '过程能力' |
| | | }, |
| | | { |
| | | id: 4, |
| | | name: '制度流程因素' |
| | | }, |
| | | ], |
| | | needList: [], |
| | | }) |
| | | |
| | | onMounted(() => { |
| | |
| | | title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ; |
| | | if(type === 'edit' || type === 'review') { |
| | | state.form = JSON.parse(JSON.stringify(value)); |
| | | state.form.confirmId = Number(state.form.confirmId) |
| | | if(state.isAdmin){ |
| | | state.form.companyId = value.companyId |
| | | state.form.companyName = value.companyName |
| | | } |
| | | } |
| | | await getDeptList() |
| | | |
| | | await getNeedList() |
| | | await getPeopleList() |
| | | dialogVisible.value = true; |
| | | } |
| | | |
| | | const getDeptList = async () => { |
| | | const getNeedList = async () => { |
| | | if(state.isAdmin && (state.form.companyId == 0 || state.form.companyId == null)){ |
| | | return |
| | | } |
| | | const param = { |
| | | pageNum: 1, |
| | | pageSize: 999, |
| | | companyId: state.form.companyId |
| | | } |
| | | const res = await getDept(param) |
| | | const res = await getNeedEvaluateAll({companyId: state.form.companyId}) |
| | | if(res.code === 200){ |
| | | state.deptList = res.data |
| | | state.needList = res.data.map(item => { |
| | | return { |
| | | ...item, |
| | | name: item.year + '年度' + item.deptName + '相关方期望或要求识别表' |
| | | } |
| | | }) |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | } |
| | | const onSubmit = async () => { |
| | |
| | | if(title.value === '新增'){ |
| | | console.log('sta',state.form) |
| | | const {id, ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await addTable(data) |
| | | const res = await addNeedEvaluate(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | dialogVisible.value = false; |
| | | }else if(title.value === '编辑'){ |
| | | const {...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await editTable(data) |
| | | const res = await editNeedEvaluate(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | const reset = () => { |
| | | state.form = { |
| | | id: '', |
| | | qualityId: '', |
| | | |
| | | fictionId : '', |
| | | fictionName: '', |
| | | fictionTime:'', |
| | | checkId :'', |
| | | checkName: '', |
| | | checkTime:'', |
| | | ratifyId:'', |
| | | ratifyName: '', |
| | | ratifyTime: '', |
| | | outEnvironment:[], |
| | | companyId: null, |
| | | expectDiscrenId: null, |
| | | evaluateId: null, |
| | | confirmId: null, |
| | | evaluateTime: null, |
| | | expectContents:[] |
| | | } |
| | | state.peopleList = [] |
| | | state.companyList = [] |
| | | state.qualityList = [] |
| | | state.needList = [] |
| | | } |
| | | const getPeopleList = async ()=> { |
| | | if(state.isAdmin && (state.form.companyId == 0 || state.form.companyId == null)){ |
| | |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }; |
| | | |
| | | const changeDiscren = (val) => { |
| | | state.needList.forEach(item => { |
| | | if(item.id == val){ |
| | | state.form.expectContents = item.expectContents |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
| | | const selectValueCom = (val) => { |
| | | state.form.compilationId = null |
| | | state.form.checkId = null |
| | | state.form.ratifyId = null |
| | | state.form.departId = null |
| | | state.form.confirmId = null |
| | | state.form.evaluateId = null |
| | | state.form.expectDiscrenId = null |
| | | state.companyList.forEach(item => { |
| | | if(item.name === val){ |
| | | state.form.companyId = item.id |
| | | } |
| | | }) |
| | | getDeptList() |
| | | getNeedList() |
| | | getPeopleList() |
| | | } |
| | | |
| | | const handleChangeNum = (value) => { |
| | | if (!/^\d+$/.test(value)) { // 验证是否为数字 |
| | | ElMessage.warning('只能输入数字') |
| | | state.form.year = '' // 重置选择,避免非法值被添加到options中 |
| | | } else if (!state.yearList.some(option => option.label === value)) { // 确保不是已存在的选项 |
| | | state.yearList.push({ value, label: value }); // 添加新选项(这里简单地将值和标签设为相同) |
| | | } |
| | | } |
| | | const addTableData = () => { |
| | | state.form.outEnvironment.push({}) |
| | | } |
| | |
| | | <el-table v-loading="loading" :data="dataList" :border="true" @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55" /> |
| | | <el-table-column type="index" label="序号" width="80" align="center"></el-table-column> |
| | | <el-table-column label="名称" prop="companyName" align="center" /> |
| | | <el-table-column label="部门" prop="departName" align="center" /> |
| | | <el-table-column label="名称" align="center"> |
| | | <template #default="scope"> |
| | | <span>{{scope.row.year}}年度{{scope.row.deptName}}相关方期望或要求评价表</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="部门" prop="deptName" align="center" /> |
| | | <el-table-column label="年份" prop="year" align="center" /> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160"> |
| | | <template #default="scope"> |
| | |
| | | import Cookies from "js-cookie"; |
| | | import {generateWordDocument} from "@/utils/exportWord"; |
| | | import {delTable, getTable} from "@/api/qualityObjectives/table"; |
| | | import {delNeedEvaluate, getNeedEvaluate} from "@/api/need/need"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | | const noticeRef = ref(); |
| | |
| | | }); |
| | | const getList = async () => { |
| | | loading.value = true; |
| | | // const res = await getTable(data.queryParams); |
| | | // if(res.code === 200){ |
| | | // dataList.value = res.data.list |
| | | // total.value = res.data.total |
| | | // }else{ |
| | | // ElMessage.warning(res.message) |
| | | // } |
| | | dataList.value = [ |
| | | {} |
| | | ] |
| | | const res = await getNeedEvaluate(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 searchClick = () => { |
| | |
| | | const data = JSON.parse(JSON.stringify(choosedData.value)) |
| | | let name = '' |
| | | data.forEach(item => { |
| | | item.tableList =[ |
| | | { |
| | | num: 1 |
| | | item.evaluateTime = item.evaluateTime.substring(0,10) |
| | | item.tableData = item.expectContents.map((i,index) => { |
| | | return{ |
| | | ...i, |
| | | expectContentMesses: i.expectContentMesses.map((q,qindex) => { |
| | | return{ |
| | | ...q, |
| | | first: qindex == 0, |
| | | num: index+1, |
| | | stakeholder: i.stakeholder |
| | | } |
| | | }) |
| | | } |
| | | ] |
| | | }) |
| | | try { |
| | | generateWordDocument(templatePath.value, item, `_相关方期望或要求评价表.docx`); |
| | | generateWordDocument(templatePath.value, item, item.companyName +`_相关方期望或要求评价表.docx`); |
| | | } catch (error){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | type: 'warning', |
| | | }) |
| | | .then( async() => { |
| | | const res = await delTable(val.id); |
| | | const res = await delNeedEvaluate(val.id); |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | <el-select |
| | | v-model="state.form.year" |
| | | placeholder="请选择年份" |
| | | :disabled="title === '查看'" |
| | | style="width: 100%" |
| | | filterable |
| | | allow-create |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="部门名称:" prop="departId" > |
| | | <el-form-item label="部门名称:" prop="deptId" > |
| | | <el-select |
| | | :disabled="title === '查看'" |
| | | v-model="state.form.departId" |
| | | v-model="state.form.deptId" |
| | | placeholder="请选择部门" |
| | | style="width: 240px" |
| | | > |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="相关方期望或要求识别表:" prop="outEnvironment" > |
| | | <el-form-item label="相关方期望或要求识别表:" prop="expectContents" > |
| | | <div style="display: flex;width: 100%;"> |
| | | <el-table :data="state.form.outEnvironment" :border="true" > |
| | | <el-table :data="state.form.expectContents" :border="true" > |
| | | <el-table-column type="index" label="序号" align="center"></el-table-column> |
| | | <el-table-column label="相关方" prop="content" align="center" > |
| | | <el-table-column label="相关方" prop="stakeholder" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + ']' + '.content'" :rules="state.rules.out.content"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="row.content" placeholder="请输入"></el-input> |
| | | <el-form-item :prop="'expectContents.' + '[' + $index + ']' + '.stakeholder'" :rules="state.rules.stakeholder"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="row.stakeholder" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="期望或要求" prop="content" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + ']' + '.content'" :rules="state.rules.out.content"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="row.content" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <el-table-column label="期望或要求" prop="expectation" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.expectContentMesses" :key="index"> |
| | | <el-form-item :prop="'expectContents.' + '[' + $index + '].' +'expectContentMesses.' + '[' + index + ']' + '.expectation'" :rules="state.rules.expectation"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.expectation" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="应对措施" prop="remark" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="row.remark" placeholder="请输入"></el-input> |
| | | <el-table-column label="应对措施" prop="solutions" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.expectContentMesses" :key="index"> |
| | | <el-form-item :prop="'expectContents.' + '[' + $index + '].' +'expectContentMesses.' + '[' + index + ']' + '.solutions'" :rules="state.rules.solutions"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.solutions" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center" width="120" v-if="title !== '查看'" > |
| | | <template #default="scope"> |
| | | <el-button link type="danger" @click="delTable(scope.row)" >删除</el-button> |
| | | <el-button link type="primary" @click="addObject(scope.row,scope.$index)" >添加</el-button> |
| | | <el-button link type="danger" @click="delObject(scope.row,scope.$index)" >删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="监测频率:" prop="compilationId" > |
| | | <el-input style="width: 240px" :disabled="title === '查看'" v-model="state.form.compilationId" placeholder="请输入"></el-input> |
| | | <el-form-item label="监测频率:" prop="frequency" > |
| | | <el-input style="width: 240px" :disabled="title === '查看'" v-model="state.form.frequency" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="编制:" prop="compilationId" > |
| | | <el-select clearable v-model="state.form.compilationId" :disabled="title =='查看'" filterable style="width: 240px"> |
| | | <el-form-item label="编制:" prop="fictionId" > |
| | | <el-select clearable v-model="state.form.fictionId" :disabled="title =='查看'" filterable style="width: 240px"> |
| | | <el-option |
| | | v-for="item in state.peopleList" |
| | | :key="item.id" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="日期:" prop="dateTime" > |
| | | <el-form-item label="日期:" prop="fictionTime" > |
| | | <el-date-picker |
| | | :disabled="title === '查看'" |
| | | v-model="state.form.dateTime" |
| | | v-model="state.form.fictionTime" |
| | | type="date" |
| | | placeholder="请选择日期" |
| | | /> |
| | |
| | | import {getUser} from "@/api/onlineEducation/user"; |
| | | import {getDept, getObject, getObjectPage} from "@/api/qualityObjectives/object"; |
| | | import {addTable, editTable, getTargetById} from "@/api/qualityObjectives/table"; |
| | | import {addNeedDiscren, editNeedDiscren} from "@/api/need/need"; |
| | | |
| | | const dialogVisible = ref(false); |
| | | const title = ref(""); |
| | |
| | | form: { |
| | | id: '', |
| | | companyId: null, |
| | | departId: null, |
| | | deptId: null, |
| | | year: '', |
| | | compilationId: null, |
| | | fictionId: null, |
| | | checkId: null, |
| | | ratifyId: null, |
| | | dateTime: null, |
| | | outEnvironment:[], |
| | | inEnvironment: [] |
| | | fictionTime: null, |
| | | frequency: '', |
| | | expectContents:[], |
| | | }, |
| | | rules: { |
| | | companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }], |
| | | departId: [{ required: true, message: '请选择部门', trigger: 'blur' }], |
| | | deptId: [{ required: true, message: '请选择部门', trigger: 'blur' }], |
| | | year: [{ required: true, message: '请选择年份', trigger: 'blur' }], |
| | | compilationId: [{ required: true, message: '请选择编制人', trigger: 'blur' }], |
| | | fictionId: [{ required: true, message: '请选择编制人', trigger: 'blur' }], |
| | | ratifyId: [{ required: true, message: '请选择批准人', trigger: 'blur' }], |
| | | checkId: [{ required: true, message: '请选择审核人', trigger: 'blur' }], |
| | | dateTime: [{ required: true, message: '请选择日期', trigger: 'blur' }], |
| | | out: { |
| | | reason: [{required: true, message: "", trigger: "blur"}], |
| | | content: [{required: true, message: "", trigger: "blur"}], |
| | | }, |
| | | in: { |
| | | reason: [{required: true, message: "", trigger: "blur"}], |
| | | content: [{required: true, message: "", trigger: "blur"}], |
| | | }, |
| | | fictionTime: [{ required: true, message: '请选择日期', trigger: 'blur' }], |
| | | frequency: [{ required: true, message: '请输入监测频率', trigger: 'blur' }], |
| | | stakeholder: [{required: true, message: "", trigger: "blur"}], |
| | | expectation: [{required: true, message: "", trigger: "blur"}], |
| | | solutions: [{required: true, message: "", trigger: "blur"}], |
| | | expectContents:[{ required: true, message: '请填写相关方期望或要求识别表', trigger: 'blur' }], |
| | | }, |
| | | peopleList: [], |
| | | isAdmin: false, |
| | |
| | | { |
| | | value: 5, |
| | | label: '2021' |
| | | }, |
| | | ], |
| | | outReasonList:[ |
| | | { |
| | | id: 1, |
| | | name: '政治经济因素' |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '法律法规因素' |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: '宏观政策因素' |
| | | }, |
| | | { |
| | | id: 4, |
| | | name: '文化氛围' |
| | | }, |
| | | ], |
| | | inReasonList:[ |
| | | { |
| | | id: 1, |
| | | name: '公司价值观' |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '企业文化' |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: '过程能力' |
| | | }, |
| | | { |
| | | id: 4, |
| | | name: '制度流程因素' |
| | | }, |
| | | ], |
| | | }) |
| | |
| | | if(title.value === '新增'){ |
| | | console.log('sta',state.form) |
| | | const {id, ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await addTable(data) |
| | | const res = await addNeedDiscren(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | dialogVisible.value = false; |
| | | }else if(title.value === '编辑'){ |
| | | const {...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await editTable(data) |
| | | const res = await editNeedDiscren(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | const reset = () => { |
| | | state.form = { |
| | | id: '', |
| | | qualityId: '', |
| | | |
| | | fictionId : '', |
| | | fictionName: '', |
| | | fictionTime:'', |
| | | checkId :'', |
| | | checkName: '', |
| | | checkTime:'', |
| | | ratifyId:'', |
| | | ratifyName: '', |
| | | ratifyTime: '', |
| | | outEnvironment:[], |
| | | companyId: null, |
| | | deptId: null, |
| | | year: '', |
| | | fictionId: null, |
| | | checkId: null, |
| | | ratifyId: null, |
| | | fictionTime: null, |
| | | frequency: '', |
| | | expectContents:[], |
| | | } |
| | | state.deptList = [] |
| | | state.peopleList = [] |
| | | state.companyList = [] |
| | | state.qualityList = [] |
| | | } |
| | | const getPeopleList = async ()=> { |
| | | if(state.isAdmin && (state.form.companyId == 0 || state.form.companyId == null)){ |
| | |
| | | |
| | | |
| | | const selectValueCom = (val) => { |
| | | state.form.compilationId = null |
| | | state.form.fictionId = null |
| | | state.form.checkId = null |
| | | state.form.ratifyId = null |
| | | state.form.departId = null |
| | | state.form.deptId = null |
| | | state.companyList.forEach(item => { |
| | | if(item.name === val){ |
| | | state.form.companyId = item.id |
| | |
| | | } |
| | | } |
| | | const addTableData = () => { |
| | | state.form.outEnvironment.push({}) |
| | | state.form.expectContents.push({expectContentMesses: [{expectation:'',solutions: ''}],stakeholder: ''}) |
| | | } |
| | | const delTable = (val) => { |
| | | state.form.outEnvironment = state.form.outEnvironment.filter(item=> item != val) |
| | | const addObject = (val,itemIndex) => { |
| | | state.form.expectContents.forEach((item,index) => { |
| | | if(index == itemIndex){ |
| | | item.expectContentMesses.push({expectContentMesses: [{expectation:'',solutions: ''}],stakeholder:val.stakeholder}) |
| | | } |
| | | }) |
| | | } |
| | | const delObject = (val,itemIndex) => { |
| | | state.form.expectContents.forEach((item,index) => { |
| | | if(index == itemIndex){ |
| | | if(item.expectContentMesses.length == 1){ |
| | | state.form.expectContents.splice(index,1) |
| | | }else { |
| | | item.expectContentMesses.pop() |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | defineExpose({ |
| | |
| | | <el-table v-loading="loading" :data="dataList" :border="true" @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55" /> |
| | | <el-table-column type="index" label="序号" width="80" align="center"></el-table-column> |
| | | <el-table-column label="名称" prop="companyName" align="center" /> |
| | | <el-table-column label="部门" prop="departName" align="center" /> |
| | | <el-table-column label="名称" align="center"> |
| | | <template #default="scope"> |
| | | <span>{{scope.row.year}}年度{{scope.row.deptName}}相关方期望或要求识别表</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="部门" prop="deptName" align="center" /> |
| | | <el-table-column label="年份" prop="year" align="center" /> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160"> |
| | | <template #default="scope"> |
| | |
| | | import Cookies from "js-cookie"; |
| | | import {generateWordDocument} from "@/utils/exportWord"; |
| | | import {delTable, getTable} from "@/api/qualityObjectives/table"; |
| | | import {delNeedDiscren, getNeedDiscren} from "@/api/need/need"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | | const noticeRef = ref(); |
| | |
| | | }); |
| | | const getList = async () => { |
| | | loading.value = true; |
| | | // const res = await getTable(data.queryParams); |
| | | // if(res.code === 200){ |
| | | // dataList.value = res.data.list |
| | | // total.value = res.data.total |
| | | // }else{ |
| | | // ElMessage.warning(res.message) |
| | | // } |
| | | dataList.value = [ |
| | | {} |
| | | ] |
| | | const res = await getNeedDiscren(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 templatePath = ref('/needIdentifyExample.docx') |
| | | const startGeneration = async () => { |
| | | const data = JSON.parse(JSON.stringify(choosedData.value)) |
| | | let name = '' |
| | | data.forEach(item => { |
| | | item.tableList =[ |
| | | { |
| | | num: 1 |
| | | item.fictionTime = item.fictionTime.substring(0,10) |
| | | item.tableData = item.expectContents.map((i,index) => { |
| | | return{ |
| | | ...i, |
| | | expectContentMesses: i.expectContentMesses.map((q,qindex) => { |
| | | return{ |
| | | ...q, |
| | | first: qindex == 0, |
| | | num: index+1, |
| | | stakeholder: i.stakeholder |
| | | } |
| | | }) |
| | | } |
| | | ] |
| | | }) |
| | | console.log('xxx',item.tableData) |
| | | try { |
| | | generateWordDocument(templatePath.value, item, `_相关方期望和需求识别.docx`); |
| | | generateWordDocument(templatePath.value, item, item.companyName + `_相关方期望和需求识别表.docx`); |
| | | } catch (error){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | type: 'warning', |
| | | }) |
| | | .then( async() => { |
| | | const res = await delTable(val.id); |
| | | const res = await delNeedDiscren(val.id); |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | <el-select |
| | | v-model="state.form.year" |
| | | placeholder="请选择年份" |
| | | :disabled="title === '查看'" |
| | | style="width: 100%" |
| | | filterable |
| | | allow-create |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="部门名称:" prop="departId" > |
| | | <el-form-item label="部门名称:" prop="deptId" > |
| | | <el-select |
| | | :disabled="title === '查看'" |
| | | v-model="state.form.departId" |
| | | v-model="state.form.deptId" |
| | | placeholder="请选择部门" |
| | | style="width: 240px" |
| | | > |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="文件编号:" prop="departId" > |
| | | <el-input :disabled="title === '查看'" v-model="state.form.content" placeholder="请输入"></el-input> |
| | | <el-form-item label="文件编号:" prop="document" > |
| | | <el-input :disabled="title === '查看'" v-model="state.form.document" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="风险管理控制:" prop="outEnvironment" > |
| | | <div style="display: flex;width: 100%;"> |
| | | <el-table :data="state.form.outEnvironment" :border="true" > |
| | | <el-form-item label="风险管理控制表:" prop="riskContents" > |
| | | <div style="display: flex;width: 100%;margin-top: 10px"> |
| | | <el-table :data="state.form.riskContents" :border="true" > |
| | | <el-table-column type="index" label="序号" align="center"></el-table-column> |
| | | <el-table-column label="质量管理活动/流程/项目管理过程" prop="content" align="center" > |
| | | <el-table-column label="质量管理活动/流程/项目管理过程" prop="process" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + ']' + '.content'" :rules="state.rules.out.content"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="row.remark" placeholder="请输入"></el-input> |
| | | <el-form-item :prop="'riskContents.' + '[' + $index + ']' + '.process'" :rules="state.rules.process"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="row.process" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险识别-潜在的风险事件" prop="content" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-form-item :prop="'riskContents.' + '[' + $index + '].' +'contentMesses.' + '[' + index + ']' + '.riskEvent'" :rules="state.rules.riskEvent"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.riskEvent" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险识别-风险发生的后果" prop="remark" align="center" > |
| | | <el-table-column label="风险识别-风险发生的后果" prop="riskConsequence" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-form-item :prop="'riskContents.' + '[' + $index + '].' +'contentMesses.' + '[' + index + ']' + '.riskConsequence'" :rules="state.rules.riskConsequence"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.riskConsequence" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险评估-严重度" prop="remark" align="center" > |
| | | <el-table-column label="风险评估-严重度" prop="severity" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-form-item :prop="'riskContents.' + '[' + $index + '].' +'contentMesses.' + '[' + index + ']' + '.severity'" :rules="state.rules.severity"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.severity" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险评估-发生频率" prop="remark" align="center" > |
| | | <el-table-column label="风险评估-发生频率" prop="frequency" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-form-item :prop="'riskContents.' + '[' + $index + '].' +'contentMesses.' + '[' + index + ']' + '.frequency'" :rules="state.rules.frequency"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.frequency" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险评估-RPN" prop="remark" align="center" > |
| | | <el-table-column label="风险评估-RPN" prop="rpn" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-form-item :prop="'riskContents.' + '[' + $index + '].' +'contentMesses.' + '[' + index + ']' + '.rpn'" :rules="state.rules.rpn"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.rpn" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险评估-风险等级" prop="remark" align="center" > |
| | | <el-table-column label="风险评估-风险等级" prop="riskLevel" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-form-item :prop="'riskContents.' + '[' + $index + '].' +'contentMesses.' + '[' + index + ']' + '.riskLevel'" :rules="state.rules.riskLevel"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.riskLevel" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险对应措施-预防措施" prop="remark" align="center" > |
| | | <el-table-column label="风险对应措施-预防措施" prop="measures" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-form-item :prop="'riskContents.' + '[' + $index + '].' +'contentMesses.' + '[' + index + ']' + '.measures'" :rules="state.rules.measures"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.measures" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险对应措施-责任人" prop="remark" align="center" > |
| | | <el-table-column label="风险对应措施-责任人" prop="chargeUser" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-form-item :prop="'riskContents.' + '[' + $index + '].' +'contentMesses.' + '[' + index + ']' + '.chargeUser'" :rules="state.rules.chargeUser"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.chargeUser" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center" width="120" v-if="title !== '查看'" > |
| | | <template #default="scope"> |
| | | <el-button link type="primary" @click="addObject(scope.row)" >添加</el-button> |
| | | <el-button link type="danger" @click="delObject(scope.row)" >删除</el-button> |
| | | <el-button link type="primary" @click="addObject(scope.row,scope.$index)" >添加</el-button> |
| | | <el-button link type="danger" @click="delObject(scope.row,scope.$index)" >删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="编制:" prop="compilationId" > |
| | | <el-select clearable v-model="state.form.compilationId" :disabled="title =='查看'" filterable style="width: 240px"> |
| | | <el-form-item label="编制:" prop="fictionId" > |
| | | <el-select clearable v-model="state.form.fictionId" :disabled="title =='查看'" filterable style="width: 240px"> |
| | | <el-option |
| | | v-for="item in state.peopleList" |
| | | :key="item.id" |
| | |
| | | import {getUser} from "@/api/onlineEducation/user"; |
| | | import {getDept, getObject, getObjectPage} from "@/api/qualityObjectives/object"; |
| | | import {addTable, editTable, getTargetById} from "@/api/qualityObjectives/table"; |
| | | import {addRiskControl, editRiskControl} from "@/api/riskManage/risk"; |
| | | |
| | | const dialogVisible = ref(false); |
| | | const title = ref(""); |
| | |
| | | form: { |
| | | id: '', |
| | | companyId: null, |
| | | departId: null, |
| | | deptId: null, |
| | | year: '', |
| | | compilationId: null, |
| | | fictionId: null, |
| | | checkId: null, |
| | | ratifyId: null, |
| | | dateTime: null, |
| | | outEnvironment:[], |
| | | inEnvironment: [] |
| | | document: null, |
| | | riskContents: [] |
| | | }, |
| | | rules: { |
| | | companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }], |
| | | departId: [{ required: true, message: '请选择部门', trigger: 'blur' }], |
| | | deptId: [{ required: true, message: '请选择部门', trigger: 'blur' }], |
| | | year: [{ required: true, message: '请选择年份', trigger: 'blur' }], |
| | | compilationId: [{ required: true, message: '请选择编制人', trigger: 'blur' }], |
| | | fictionId: [{ required: true, message: '请选择编制人', trigger: 'blur' }], |
| | | ratifyId: [{ required: true, message: '请选择批准人', trigger: 'blur' }], |
| | | checkId: [{ required: true, message: '请选择审核人', trigger: 'blur' }], |
| | | dateTime: [{ required: true, message: '请选择日期', trigger: 'blur' }], |
| | | out: { |
| | | reason: [{required: true, message: "", trigger: "blur"}], |
| | | content: [{required: true, message: "", trigger: "blur"}], |
| | | }, |
| | | in: { |
| | | reason: [{required: true, message: "", trigger: "blur"}], |
| | | content: [{required: true, message: "", trigger: "blur"}], |
| | | }, |
| | | document: [{ required: true, message: '请输入文件编号', trigger: 'blur' }], |
| | | riskContents: [{ required: true, message: '请输入风险管理控制表', trigger: 'blur' }], |
| | | num:[{required: true, message: "", trigger: "blur"}], |
| | | riskEvent:[{required: true, message: "", trigger: "blur"}], |
| | | riskConsequence:[{required: true, message: "", trigger: "blur"}], |
| | | severity:[{required: true, message: "", trigger: "blur"}], |
| | | frequency:[{required: true, message: "", trigger: "blur"}], |
| | | rpn:[{required: true, message: "", trigger: "blur"}], |
| | | riskLevel:[{required: true, message: "", trigger: "blur"}], |
| | | measures:[{required: true, message: "", trigger: "blur"}], |
| | | chargeUser:[{required: true, message: "", trigger: "blur"}], |
| | | process:[{required: true, message: "", trigger: "blur"}], |
| | | }, |
| | | peopleList: [], |
| | | isAdmin: false, |
| | |
| | | { |
| | | value: 5, |
| | | label: '2021' |
| | | }, |
| | | ], |
| | | outReasonList:[ |
| | | { |
| | | id: 1, |
| | | name: '政治经济因素' |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '法律法规因素' |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: '宏观政策因素' |
| | | }, |
| | | { |
| | | id: 4, |
| | | name: '文化氛围' |
| | | }, |
| | | ], |
| | | inReasonList:[ |
| | | { |
| | | id: 1, |
| | | name: '公司价值观' |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '企业文化' |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: '过程能力' |
| | | }, |
| | | { |
| | | id: 4, |
| | | name: '制度流程因素' |
| | | }, |
| | | ], |
| | | }) |
| | |
| | | if(title.value === '新增'){ |
| | | console.log('sta',state.form) |
| | | const {id, ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await addTable(data) |
| | | const res = await addRiskControl(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | dialogVisible.value = false; |
| | | }else if(title.value === '编辑'){ |
| | | const {...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await editTable(data) |
| | | const res = await editRiskControl(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | ratifyId:'', |
| | | ratifyName: '', |
| | | ratifyTime: '', |
| | | outEnvironment:[], |
| | | riskContents:[], |
| | | } |
| | | state.peopleList = [] |
| | | state.companyList = [] |
| | |
| | | |
| | | |
| | | const selectValueCom = (val) => { |
| | | state.form.compilationId = null |
| | | state.form.fictionId = null |
| | | state.form.checkId = null |
| | | state.form.ratifyId = null |
| | | state.form.departId = null |
| | | state.form.deptId = null |
| | | state.companyList.forEach(item => { |
| | | if(item.name === val){ |
| | | state.form.companyId = item.id |
| | |
| | | } |
| | | } |
| | | const addTableData = () => { |
| | | state.form.outEnvironment.push({mess: [{id: null}]}) |
| | | state.form.riskContents.push({contentMesses: [{riskEvent: '',riskConsequence: '',severity: '',frequency: '',rpn: '',riskLevel: '',measures: '',chargeUser: ''}],process: ''}) |
| | | |
| | | } |
| | | const addObject = (val) => { |
| | | state.form.outEnvironment.forEach(item => { |
| | | if(item.id == val.id){ |
| | | item.mess.push({id: item.id}) |
| | | const addObject = (val,itemIndex) => { |
| | | state.form.riskContents.forEach((item,index) => { |
| | | if(itemIndex == index){ |
| | | item.contentMesses.push({id: item.id}) |
| | | } |
| | | }) |
| | | |
| | | } |
| | | const delObject = (val) => { |
| | | state.form.outEnvironment.forEach(item => { |
| | | if(item.id == val.id){ |
| | | if(item.mess.length == 1){ |
| | | ElMessage.warning('至少保留一组数据') |
| | | return |
| | | const delObject = (val,itemIndex) => { |
| | | state.form.riskContents.forEach((item,index) => { |
| | | if(index == itemIndex){ |
| | | if(item.contentMesses.length == 1){ |
| | | state.form.riskContents.splice(index,1) |
| | | }else { |
| | | item.contentMesses.pop() |
| | | } |
| | | item.mess.pop() |
| | | } |
| | | }) |
| | | } |
| | |
| | | <el-table v-loading="loading" :data="dataList" :border="true" @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55" /> |
| | | <el-table-column type="index" label="序号" width="80" align="center"></el-table-column> |
| | | <el-table-column label="名称" prop="companyName" align="center" /> |
| | | <el-table-column label="部门" prop="departName" align="center" /> |
| | | <el-table-column label="名称" align="center"> |
| | | <template #default="scope"> |
| | | <span>{{scope.row.year}}年度{{scope.row.deptName}}风险管理控制表</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="部门" prop="deptName" align="center" /> |
| | | <el-table-column label="年份" prop="year" align="center" /> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160"> |
| | | <template #default="scope"> |
| | |
| | | import Cookies from "js-cookie"; |
| | | import {generateWordDocument} from "@/utils/exportWord"; |
| | | import {delTable, getTable} from "@/api/qualityObjectives/table"; |
| | | import {delRiskControl, getRiskControl} from "@/api/riskManage/risk"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | | const noticeRef = ref(); |
| | |
| | | }); |
| | | const getList = async () => { |
| | | loading.value = true; |
| | | // const res = await getTable(data.queryParams); |
| | | // if(res.code === 200){ |
| | | // dataList.value = res.data.list |
| | | // total.value = res.data.total |
| | | // }else{ |
| | | // ElMessage.warning(res.message) |
| | | // } |
| | | dataList.value = [ |
| | | {} |
| | | ] |
| | | const res = await getRiskControl(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 templatePath = ref('/riskControlExample.docx') |
| | | const startGeneration = async () => { |
| | | const data = JSON.parse(JSON.stringify(choosedData.value)) |
| | | let name = '' |
| | | data.forEach(item => { |
| | | item.tableList =[ |
| | | { |
| | | flow: 'xxx', |
| | | mess: [ |
| | | { |
| | | first:true, |
| | | flow: 'xxx', |
| | | event: 'xxxxxx' |
| | | }, |
| | | { |
| | | first:false, |
| | | flow: 'xxx', |
| | | event: '2222' |
| | | }, |
| | | ] |
| | | }, |
| | | { |
| | | flow: '444444', |
| | | mess: [ |
| | | { |
| | | first:true, |
| | | flow: '444444', |
| | | event: 'gg' |
| | | }, |
| | | |
| | | ] |
| | | item.tableData = item.riskContents.map((i,index) => { |
| | | return{ |
| | | ...i, |
| | | contentMesses: i.contentMesses.map((q,qindex) => { |
| | | return{ |
| | | ...q, |
| | | first: qindex == 0, |
| | | num: index+1, |
| | | process: i.process |
| | | } |
| | | }) |
| | | } |
| | | ] |
| | | }) |
| | | try { |
| | | generateWordDocument(templatePath.value, item, `_相关方期望和需求识别.docx`); |
| | | generateWordDocument(templatePath.value, item, item.companyName+`_风险管理控制表.docx`); |
| | | } catch (error){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | type: 'warning', |
| | | }) |
| | | .then( async() => { |
| | | const res = await delTable(val.id); |
| | | const res = await delRiskControl(val.id); |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="风险管理控制:" prop="departId" > |
| | | <el-form-item label="风险管理控制:" prop="riskManageId" > |
| | | <el-select |
| | | :disabled="title === '查看'" |
| | | v-model="state.form.departId" |
| | | v-model="state.form.riskManageId" |
| | | placeholder="请选择" |
| | | style="width: 240px" |
| | | style="width:100%" |
| | | @change="changeRisk" |
| | | > |
| | | <el-option |
| | | v-for="item in state.deptList" |
| | | :key="item.deptId" |
| | | :label="item.deptName" |
| | | :value="item.deptId" |
| | | v-for="item in state.riskList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="风险管理分析监视记录:" prop="outEnvironment" > |
| | | <el-form-item label="风险管理分析监视记录:" prop="riskContents" > |
| | | <div style="display: flex;width: 100%;"> |
| | | <el-table :data="state.form.outEnvironment" :border="true" > |
| | | <el-table :data="state.form.riskContents" :border="true" > |
| | | <el-table-column type="index" label="序号" align="center"></el-table-column> |
| | | <el-table-column label="质量管理活动/流程/项目管理过程" prop="content" align="center" /> |
| | | <el-table-column label="质量管理活动/流程/项目管理过程" prop="process" align="center" /> |
| | | <el-table-column label="风险识别-潜在的风险事件" prop="content" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-input style="margin-bottom: 5px" type="textarea" disabled v-model="i.riskEvent"></el-input> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险识别-风险发生的后果" prop="remark" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-input style="margin-bottom: 5px" type="textarea" disabled v-model="i.riskConsequence"></el-input> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险评估-严重度" prop="remark" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-input style="margin-bottom: 5px" type="textarea" disabled v-model="i.severity"></el-input> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险评估-发生频率" prop="remark" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-input style="margin-bottom: 5px" type="textarea" disabled v-model="i.frequency"></el-input> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险评估-RPN" prop="remark" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-input style="margin-bottom: 5px" type="textarea" disabled v-model="i.rpn"></el-input> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险评估-风险等级" prop="remark" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-input style="margin-bottom: 5px" type="textarea" disabled v-model="i.riskLevel"></el-input> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险对应措施-预防措施" prop="remark" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-input style="margin-bottom: 5px" type="textarea" disabled v-model="i.measures"></el-input> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="风险对应措施-责任人" prop="remark" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-input style="margin-bottom: 5px" type="textarea" disabled v-model="i.chargeUser"></el-input> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="监视-监视时间" prop="remark" align="center" > |
| | | <el-table-column label="监视-监视时间" prop="monitorTime" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-form-item :prop="'riskContents.' + '[' + $index + '].' +'contentMesses.' + '[' + index + ']' + '.monitorTime'" :rules="state.rules.monitorTime"> |
| | | <el-input style="margin-bottom: 5px" :disabled="title === '查看'" type="textarea" v-model="i.monitorTime" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="监视-评价结果" prop="remark" align="center" > |
| | | <el-table-column label="监视-评价结果" prop="review" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <div v-for="(i,index) in row.mess" :key="index"> |
| | | <el-form-item :prop="'outEnvironment.' + '[' + $index + '].' +'mess.' + '[' + index + ']' + '.num'" :rules="state.rules.num"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" v-model="i.num" placeholder="请输入"></el-input> |
| | | <div v-for="(i,index) in row.contentMesses" :key="index"> |
| | | <el-form-item :prop="'riskContents.' + '[' + $index + '].' +'contentMesses.' + '[' + index + ']' + '.review'" :rules="state.rules.review"> |
| | | <el-input style="margin-bottom: 5px" :disabled="title === '查看'" type="textarea" v-model="i.review" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center" width="120" v-if="title !== '查看'" > |
| | | <template #default="scope"> |
| | | <el-button link type="primary" @click="addObject(scope.row)" >添加</el-button> |
| | | <el-button link type="danger" @click="delObject(scope.row)" >删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-button |
| | | :disabled="title === '查看'" |
| | | type="primary" |
| | | @click="addTableData" |
| | | style="margin-left: 10px" |
| | | >新增</el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="编制:" prop="compilationId" > |
| | | <el-select clearable v-model="state.form.compilationId" :disabled="title =='查看'" filterable style="width: 240px"> |
| | | <el-form-item label="编制:" prop="fictionId" > |
| | | <el-select clearable v-model="state.form.fictionId" :disabled="title =='查看'" filterable style="width: 240px"> |
| | | <el-option |
| | | v-for="item in state.peopleList" |
| | | :key="item.id" |
| | |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="批准:" prop="ratifyId" > |
| | | <el-select clearable v-model="state.form.ratifyId" :disabled="title =='查看'" filterable style="width: 240px"> |
| | | <el-option |
| | |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="日期:" prop="checkTime" > |
| | | <el-date-picker |
| | | :disabled="title === '查看'" |
| | | v-model="state.form.checkTime" |
| | | type="date" |
| | | placeholder="请选择日期" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | import {getUser} from "@/api/onlineEducation/user"; |
| | | import {getDept, getObject, getObjectPage} from "@/api/qualityObjectives/object"; |
| | | import {addTable, editTable, getTargetById} from "@/api/qualityObjectives/table"; |
| | | import {addMonitorRecord, editMonitorRecord, getRiskControlAll} from "@/api/riskManage/risk"; |
| | | |
| | | const dialogVisible = ref(false); |
| | | const title = ref(""); |
| | |
| | | form: { |
| | | id: '', |
| | | companyId: null, |
| | | departId: null, |
| | | riskManageId: null, |
| | | year: '', |
| | | compilationId: null, |
| | | fictionId: null, |
| | | checkId: null, |
| | | ratifyId: null, |
| | | dateTime: null, |
| | | outEnvironment:[], |
| | | inEnvironment: [] |
| | | checkTime: null, |
| | | riskContents:[], |
| | | }, |
| | | rules: { |
| | | companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }], |
| | | departId: [{ required: true, message: '请选择部门', trigger: 'blur' }], |
| | | riskManageId: [{ required: true, message: '请选择风险管理控制', trigger: 'blur' }], |
| | | year: [{ required: true, message: '请选择年份', trigger: 'blur' }], |
| | | compilationId: [{ required: true, message: '请选择编制人', trigger: 'blur' }], |
| | | fictionId: [{ required: true, message: '请选择编制人', trigger: 'blur' }], |
| | | ratifyId: [{ required: true, message: '请选择批准人', trigger: 'blur' }], |
| | | checkId: [{ required: true, message: '请选择审核人', trigger: 'blur' }], |
| | | dateTime: [{ required: true, message: '请选择日期', trigger: 'blur' }], |
| | | out: { |
| | | reason: [{required: true, message: "", trigger: "blur"}], |
| | | content: [{required: true, message: "", trigger: "blur"}], |
| | | }, |
| | | in: { |
| | | reason: [{required: true, message: "", trigger: "blur"}], |
| | | content: [{required: true, message: "", trigger: "blur"}], |
| | | }, |
| | | num:[{required: true, message: "", trigger: "blur"}], |
| | | checkTime: [{ required: true, message: '请选择日期', trigger: 'blur' }], |
| | | monitorTime:[{required: true, message: "", trigger: "blur"}], |
| | | review:[{required: true, message: "", trigger: "blur"}], |
| | | }, |
| | | peopleList: [], |
| | | isAdmin: false, |
| | | companyList: [], |
| | | deptList: [], |
| | | yearList: [ |
| | | { |
| | | value: 1, |
| | | label: '2025' |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: '2024' |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: '2023' |
| | | }, |
| | | { |
| | | value: 4, |
| | | label: '2022' |
| | | }, |
| | | { |
| | | value: 5, |
| | | label: '2021' |
| | | }, |
| | | ], |
| | | outReasonList:[ |
| | | { |
| | | id: 1, |
| | | name: '政治经济因素' |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '法律法规因素' |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: '宏观政策因素' |
| | | }, |
| | | { |
| | | id: 4, |
| | | name: '文化氛围' |
| | | }, |
| | | ], |
| | | inReasonList:[ |
| | | { |
| | | id: 1, |
| | | name: '公司价值观' |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '企业文化' |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: '过程能力' |
| | | }, |
| | | { |
| | | id: 4, |
| | | name: '制度流程因素' |
| | | }, |
| | | ], |
| | | riskList: [], |
| | | }) |
| | | |
| | | onMounted(() => { |
| | |
| | | state.form.companyName = value.companyName |
| | | } |
| | | } |
| | | await getDeptList() |
| | | await getRiskList() |
| | | await getPeopleList() |
| | | dialogVisible.value = true; |
| | | } |
| | | |
| | | const getDeptList = async () => { |
| | | const getRiskList = async () => { |
| | | if(state.isAdmin && (state.form.companyId == 0 || state.form.companyId == null)){ |
| | | return |
| | | } |
| | | const param = { |
| | | pageNum: 1, |
| | | pageSize: 999, |
| | | companyId: state.form.companyId |
| | | } |
| | | const res = await getDept(param) |
| | | const res = await getRiskControlAll(param) |
| | | if(res.code === 200){ |
| | | state.deptList = res.data |
| | | state.riskList = res.data.map(item => { |
| | | return { |
| | | ...item, |
| | | name: item.year + '年度' + item.deptName + '风险管理控制' |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | const onSubmit = async () => { |
| | |
| | | if(title.value === '新增'){ |
| | | console.log('sta',state.form) |
| | | const {id, ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await addTable(data) |
| | | const res = await addMonitorRecord(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | dialogVisible.value = false; |
| | | }else if(title.value === '编辑'){ |
| | | const {...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await editTable(data) |
| | | const res = await editMonitorRecord(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | const reset = () => { |
| | | state.form = { |
| | | id: '', |
| | | qualityId: '', |
| | | |
| | | fictionId : '', |
| | | fictionName: '', |
| | | fictionTime:'', |
| | | checkId :'', |
| | | checkName: '', |
| | | checkTime:'', |
| | | ratifyId:'', |
| | | ratifyName: '', |
| | | ratifyTime: '', |
| | | outEnvironment:[], |
| | | companyId: null, |
| | | riskManageId: null, |
| | | year: '', |
| | | fictionId: null, |
| | | checkId: null, |
| | | ratifyId: null, |
| | | checkTime: null, |
| | | riskContents:[], |
| | | } |
| | | state.peopleList = [] |
| | | state.companyList = [] |
| | | state.qualityList = [] |
| | | state.riskList = [] |
| | | } |
| | | const getPeopleList = async ()=> { |
| | | if(state.isAdmin && (state.form.companyId == 0 || state.form.companyId == null)){ |
| | |
| | | |
| | | |
| | | const selectValueCom = (val) => { |
| | | state.form.compilationId = null |
| | | state.form.riskManageId = null |
| | | state.form.fictionId = null |
| | | state.form.checkId = null |
| | | state.form.ratifyId = null |
| | | state.form.departId = null |
| | | state.companyList.forEach(item => { |
| | | if(item.name === val){ |
| | | state.form.companyId = item.id |
| | | } |
| | | }) |
| | | getDeptList() |
| | | getRiskList() |
| | | getPeopleList() |
| | | } |
| | | |
| | | const handleChangeNum = (value) => { |
| | | if (!/^\d+$/.test(value)) { // 验证是否为数字 |
| | | ElMessage.warning('只能输入数字') |
| | | state.form.year = '' // 重置选择,避免非法值被添加到options中 |
| | | } else if (!state.yearList.some(option => option.label === value)) { // 确保不是已存在的选项 |
| | | state.yearList.push({ value, label: value }); // 添加新选项(这里简单地将值和标签设为相同) |
| | | } |
| | | } |
| | | const addTableData = () => { |
| | | state.form.outEnvironment.push({mess: [{id: null}]}) |
| | | |
| | | } |
| | | const addObject = (val) => { |
| | | state.form.outEnvironment.forEach(item => { |
| | | if(item.id == val.id){ |
| | | item.mess.push({id: item.id}) |
| | | } |
| | | }) |
| | | |
| | | } |
| | | const delObject = (val) => { |
| | | state.form.outEnvironment.forEach(item => { |
| | | if(item.id == val.id){ |
| | | if(item.mess.length == 1){ |
| | | ElMessage.warning('至少保留一组数据') |
| | | return |
| | | } |
| | | item.mess.pop() |
| | | const changeRisk = (val) => { |
| | | state.riskList.forEach(item => { |
| | | if(val == item.id){ |
| | | state.form.riskContents = item.riskContents |
| | | } |
| | | }) |
| | | } |
| | | |
| | | defineExpose({ |
| | | openDialog |
| | | }); |
| | |
| | | <el-table v-loading="loading" :data="dataList" :border="true" @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55" /> |
| | | <el-table-column type="index" label="序号" width="80" align="center"></el-table-column> |
| | | <el-table-column label="名称" prop="companyName" align="center" /> |
| | | <el-table-column label="部门" prop="departName" align="center" /> |
| | | <el-table-column label="名称" align="center"> |
| | | <template #default="scope"> |
| | | <span>{{scope.row.year}}年度{{scope.row.deptName}}风险管理分析监视记录表</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="部门" prop="deptName" align="center" /> |
| | | <el-table-column label="年份" prop="year" align="center" /> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160"> |
| | | <template #default="scope"> |
| | |
| | | import Cookies from "js-cookie"; |
| | | import {generateWordDocument} from "@/utils/exportWord"; |
| | | import {delTable, getTable} from "@/api/qualityObjectives/table"; |
| | | import {delMonitorRecord, getMonitorRecord} from "@/api/riskManage/risk"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | | const noticeRef = ref(); |
| | |
| | | }); |
| | | const getList = async () => { |
| | | loading.value = true; |
| | | // const res = await getTable(data.queryParams); |
| | | // if(res.code === 200){ |
| | | // dataList.value = res.data.list |
| | | // total.value = res.data.total |
| | | // }else{ |
| | | // ElMessage.warning(res.message) |
| | | // } |
| | | dataList.value = [ |
| | | {} |
| | | ] |
| | | const res = await getMonitorRecord(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 data = JSON.parse(JSON.stringify(choosedData.value)) |
| | | let name = '' |
| | | data.forEach(item => { |
| | | item.tableList =[ |
| | | { |
| | | flow: 'xxx', |
| | | mess: [ |
| | | { |
| | | first:true, |
| | | flow: 'xxx', |
| | | event: 'xxxxxx' |
| | | }, |
| | | { |
| | | first:false, |
| | | flow: 'xxx', |
| | | event: '2222' |
| | | }, |
| | | ] |
| | | }, |
| | | { |
| | | flow: '444444', |
| | | mess: [ |
| | | { |
| | | first:true, |
| | | flow: '444444', |
| | | event: 'gg' |
| | | }, |
| | | |
| | | ] |
| | | item.checkTime = item.checkTime.substring(0,10) |
| | | item.tableData = item.riskContents.map((i,index) => { |
| | | return{ |
| | | ...i, |
| | | contentMesses: i.contentMesses.map((q,qindex) => { |
| | | return{ |
| | | ...q, |
| | | first: qindex == 0, |
| | | num: index+1, |
| | | process: i.process |
| | | } |
| | | }) |
| | | } |
| | | ] |
| | | }) |
| | | try { |
| | | generateWordDocument(templatePath.value, item, `_相关方期望和需求识别.docx`); |
| | | generateWordDocument(templatePath.value, item, item.companyName + `_风险管理分析监视记录表.docx`); |
| | | } catch (error){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | }); |
| | | } |
| | | }) |
| | | } |
| | | function idGroupToTree(data) { |
| | | const groups = data.reduce((map, item) => { |
| | | map.has(item.type) || map.set(item.type, []); |
| | | map.get(item.type).push(item); |
| | | return map; |
| | | }, new Map()); |
| | | return Array.from(groups).map(([type, items]) => ({ |
| | | type, |
| | | children: items |
| | | })); |
| | | } |
| | | const handleSelectionChange = (val) => { |
| | | choosedData.value = val |
| | |
| | | type: 'warning', |
| | | }) |
| | | .then( async() => { |
| | | const res = await delTable(val.id); |
| | | const res = await delMonitorRecord(val.id); |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '删除成功' |
| | | }); |
| | | getList(); |
| | | await getList(); |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |