| | |
| | | </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-column label="名称" prop="companyName" align="center" > |
| | | <template #default="scope"> |
| | | <span>{{scope.row.year}}年度{{scope.row.companyName}}质量管理体系工作策划安排及完成情况</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center" class-naame="small-padding fixed-width" > |
| | | <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="企业名称" v-if="data.isAdmin" prop="companyName" align="center" /> |
| | | <el-table-column label="年份" prop="year" align="center" /> |
| | | <el-table-column label="项目" prop="project" align="center" /> |
| | | <el-table-column label="内容" prop="content" align="center" /> |
| | | <el-table-column label="参加人员" prop="participant" align="center" /> |
| | | <el-table-column label="时间" prop="applyTime" align="center" /> |
| | | <el-table-column label="完成时间" prop="accomplishTime" align="center" /> |
| | | <el-table-column label="完成情况" prop="accomplishStatus" align="center" /> |
| | | <el-table-column label="操作" align="center" prop="operate" class-naame="small-padding fixed-width" > |
| | | <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 {generateWordDocument} from "@/utils/exportWord"; |
| | | import {delTable, getTable} from "@/api/qualityObjectives/table"; |
| | | import {delDiscern, getDiscern} from "@/api/environment/factors"; |
| | | import {delQualityTemplate, getQualityTemplate} from "@/api/standardSys/standardSys"; |
| | | import {delQualityTemplate, getQualityTemplate, getQualityTemplateById} from "@/api/standardSys/standardSys"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | | const noticeRef = ref(); |
| | |
| | | getCompanyList() |
| | | } |
| | | }); |
| | | |
| | | const getList = async () => { |
| | | loading.value = true; |
| | | const res = await getQualityTemplate(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.planMesses; |
| | | for (const listItem of listItemArray) { |
| | | resultArray.push({ |
| | | id:obj.id, |
| | | companyName: obj.companyName, |
| | | year: obj.year, |
| | | project: listItem.project, |
| | | content: listItem.content, |
| | | participant: listItem.participant, |
| | | applyTime: listItem.applyTime, |
| | | accomplishTime: listItem.accomplishTime, |
| | | accomplishStatus: listItem.accomplishStatus, |
| | | }); |
| | | } |
| | | } |
| | | dataList.value = resultArray |
| | | calculateSpan() |
| | | // total.value = resultArray.length |
| | | // dataList.value = res.data.list |
| | | // total.value = res.data.total |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | |
| | | item.tableList = item.planMesses |
| | | |
| | | try { |
| | | generateWordDocument(templatePath.value, item, item.companyName+`_质量管理体系工作策划安排及完成情况.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 getQualityTemplateById({planId: 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"> |