| | |
| | | </el-form> |
| | | </div> |
| | | <!-- 表格数据 --> |
| | | <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 v-loading="loading" :data="dataList" :border="true" @selection-change="handleSelectionChange" :span-method="mergeCells"> |
| | | <el-table-column type="selection" width="55" prop="selection" /> |
| | | <!-- <el-table-column type="index" label="序号" width="80" align="center"></el-table-column>--> |
| | | <el-table-column label="企业名称" prop="companyName" align="center" v-if="data.isAdmin" /> |
| | | <el-table-column label="名称" align="center"> |
| | | <template #default="scope"> |
| | | <span>{{scope.row.year}}年度质量体系改进计划</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160"> |
| | | <el-table-column label="年份" prop="year" align="center" /> |
| | | <el-table-column label="改进项" prop="items" align="center" /> |
| | | <el-table-column label="具体措施" prop="measure" align="center" /> |
| | | <el-table-column label="责任部门" prop="dutyName" align="center" /> |
| | | <el-table-column label="完成时间" prop="finishTime" align="center" /> |
| | | <el-table-column label="跟踪验证" prop="verify" align="center" /> |
| | | <el-table-column label="操作" align="center" prop="operate" class-name="small-padding fixed-width" width="160"> |
| | | <template #default="scope"> |
| | | <el-button link type="primary" @click="openDialog('review',scope.row)" >查看</el-button> |
| | | <el-button link type="primary" @click="openDialog('edit',scope.row)" >编辑</el-button> |
| | |
| | | </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> |
| | | <!-- <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>--> |
| | | <editDialog ref="noticeRef" @getList = "getList"></editDialog> |
| | | </div> |
| | | </template> |
| | |
| | | import {delTable, getTable} from "@/api/qualityObjectives/table"; |
| | | import {delNeedDiscren, getNeedDiscren} from "@/api/need/need"; |
| | | import {delCustomerNeed, getCustomerNeed} from "@/api/customerNeed"; |
| | | import {delInside, getInside} from "@/api/continuousImprovement"; |
| | | import {delInside, getInside, getInsideById} from "@/api/continuousImprovement"; |
| | | import {getQualityTemplateById} from "@/api/standardSys/standardSys"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | | const noticeRef = ref(); |
| | |
| | | loading.value = true; |
| | | const res = await getInside(data.queryParams); |
| | | if(res.code === 200){ |
| | | dataList.value = res.data.list |
| | | total.value = res.data.total |
| | | const resultArray = []; |
| | | for (const obj of res.data.list) { |
| | | const listItemArray = obj.plans; |
| | | for (const listItem of listItemArray) { |
| | | resultArray.push({ |
| | | id:obj.id, |
| | | companyName: obj.companyName, |
| | | year: obj.year, |
| | | items: listItem.items, |
| | | measure: listItem.measure, |
| | | dutyName: listItem.dutyName, |
| | | finishTime: listItem.finishTime, |
| | | verify: listItem.verify, |
| | | }); |
| | | } |
| | | } |
| | | dataList.value = resultArray |
| | | calculateSpan() |
| | | // dataList.value = res.data.list |
| | | // total.value = res.data.total |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | |
| | | }) |
| | | console.log('xxx',item.tableData) |
| | | try { |
| | | generateWordDocument(templatePath.value, item, item.companyName + `_${item.year}年度体系改进计划.docx`); |
| | | generateWordDocument(templatePath.value, item, `${item.year}年度体系改进计划.docx`); |
| | | } catch (error){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | } |
| | | }) |
| | | } |
| | | const handleSelectionChange = (val) => { |
| | | choosedData.value = val |
| | | const handleSelectionChange = async (val) => { |
| | | let arr = [] |
| | | for (const item of val) { |
| | | const res = await getInsideById({improveId: item.id}) |
| | | if(res.code == 200){ |
| | | arr.push(res.data) |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | } |
| | | choosedData.value = arr |
| | | } |
| | | const handleDelete = (val) => { |
| | | ElMessageBox.confirm( |
| | |
| | | data.yearList.push({ value, label: value }); // 添加新选项(这里简单地将值和标签设为相同) |
| | | } |
| | | } |
| | | const mergeCells = ({ row, column, rowIndex, columnIndex }) => { |
| | | if ( column.property == 'operate' || column.property == 'selection' || column.property == 'year' ) { |
| | | const _row = spanArr.value[rowIndex]; |
| | | const _col = _row > 0 ? 1 : 0; |
| | | return [_row, _col]; |
| | | } |
| | | }; |
| | | |
| | | const spanArr = ref([]); // 存储每一行的合并信息 |
| | | const position = ref(0); // 记录当前位置 |
| | | // 计算合并的行数 |
| | | const calculateSpan = () => { |
| | | spanArr.value = []; |
| | | position.value = 0; |
| | | |
| | | dataList.value.forEach((item, index) => { |
| | | if (index === 0) { |
| | | spanArr.value.push(1); |
| | | position.value = 0; |
| | | } else { |
| | | // 判断当前行的id与上一行是否相同 |
| | | if (dataList.value[index].id === dataList.value[index - 1].id) { |
| | | spanArr.value[position.value] += 1; |
| | | spanArr.value.push(0); |
| | | } else { |
| | | spanArr.value.push(1); |
| | | position.value = index; |
| | | } |
| | | } |
| | | }); |
| | | }; |
| | | </script> |
| | | <style lang="scss"> |
| | | .pag-container{ |