From b231c463d1e14020fae1f5303dd93c2f49c85cdc Mon Sep 17 00:00:00 2001
From: 祖安之光 <11848914+light-of-zuan@user.noreply.gitee.com>
Date: 星期一, 24 十一月 2025 08:54:50 +0800
Subject: [PATCH] 修改新增
---
src/views/build/conpanyFunctionConsult/qualityObjectives/objective/index.vue | 231 ++++++++++++++++++++++++++++++++-------------------------
1 files changed, 130 insertions(+), 101 deletions(-)
diff --git a/src/views/build/conpanyFunctionConsult/qualityObjectives/objective/index.vue b/src/views/build/conpanyFunctionConsult/qualityObjectives/objective/index.vue
index a4f69ec..befb6c8 100644
--- a/src/views/build/conpanyFunctionConsult/qualityObjectives/objective/index.vue
+++ b/src/views/build/conpanyFunctionConsult/qualityObjectives/objective/index.vue
@@ -2,53 +2,48 @@
<div class="app-container">
<div style="margin-bottom: 10px">
<el-form style="display: flex;flex-wrap: wrap;">
-<!-- v-if="!data.isAdmin"-->
- <el-form-item >
+ <el-form-item>
<el-button
type="primary"
plain
icon="Plus"
@click="openDialog('add',{})"
+ v-hasPermi="['qualityGoal:list:add']"
>新增</el-button>
</el-form-item>
- <el-form-item label="企业名称:" v-if="data.isAdmin" style="margin-left: 20px">
- <el-select
- v-model="data.queryParams.companyName"
- filterable
- remote
- @change="selectValue"
- reserve-keyword
- placeholder="请输入企业名称"
- remote-show-suffix
- :remote-method="getCompanyList"
- :loading="loadingCompany"
- style="width: 240px"
- >
+ <el-form-item label="单位名称:" v-if="data.isAdmin" style="margin-left: 20px">
+ <el-select v-model="data.queryParams.companyId" placeholder="请选择" filterable clearable>
<el-option
v-for="item in data.companyList"
:key="item.id"
:label="item.name"
- :value="item.name"
- />
+ :value="item.id">
+ </el-option>
</el-select>
</el-form-item>
<el-form-item label="年份:" style="margin-left: 20px">
+<!-- <el-input v-model="data.queryParams.year" placeholder="请输入年份"></el-input>-->
<el-select
v-model="data.queryParams.year"
placeholder="请选择年份"
style="width: 240px"
+ filterable
+ allow-create
+ default-first-option
+ :reserve-keyword="false"
+ @change="handleChangeNum"
>
<el-option
v-for="item in data.yearList"
:key="item.value"
:label="item.label"
- :value="item.value"
+ :value="item.label"
/>
</el-select>
</el-form-item>
<el-form-item label="目标级别:" style="margin-left: 20px">
<el-select
- v-model="data.queryParams.level"
+ v-model="data.queryParams.type"
placeholder="请选择目标级别"
style="width: 240px"
>
@@ -60,7 +55,7 @@
/>
</el-select>
</el-form-item>
- <el-form-item v-if="data.isAdmin">
+ <el-form-item>
<el-button type="primary" style="margin-left: 30px" @click="searchClick">查询</el-button>
<el-button plain @click="reset">重置</el-button>
</el-form-item>
@@ -77,17 +72,32 @@
<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="companyName" align="center" />-->
<el-table-column label="年份" prop="year" align="center" />
- <el-table-column label="质量目标级别" prop="level" align="center" />
- <el-table-column label="部门名称" prop="name" align="center" />
- <el-table-column label="质量目标" prop="name" align="center" />
- <el-table-column label="目标测量方法" prop="name" align="center" />
- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
+ <el-table-column label="质量目标级别" prop="type" align="center" >
<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-button link type="danger" @click="handleDelete(scope.row)" >删除</el-button>
+ {{scope.row.type == 1 ? '公司级' : '部门级'}}
+ </template>
+ </el-table-column>
+ <el-table-column label="部门名称" prop="name" align="center" >
+ <template #default="scope">
+ <div v-if="scope.row.type == 1">{{scope.row.companyName}}</div>
+ <div v-else>{{scope.row.departName}}</div>
+ </template>
+ </el-table-column>
+ <el-table-column label="质量目标" prop="name" align="center">
+ <template #default="scope">
+ <div v-for="(item,index) in scope.row.qualityTargets">
+ <span>{{index + 1}}、{{item.message}}</span>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column label="目标测量方法" prop="method" align="center" />
+ <el-table-column label="操作" align="center" 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)" v-hasPermi="['qualityGoal:list:edit']">编辑</el-button>
+ <el-button link type="danger" @click="handleDelete(scope.row)" v-hasPermi="['qualityGoal:list:del']">删除</el-button>
</template>
</el-table-column>
</el-table>
@@ -114,6 +124,7 @@
import {getCompany} from "@/api/onlineEducation/company";
import Cookies from "js-cookie";
import {generateWordDocument} from "@/utils/exportWord";
+import {delObject, getObjectPage} from "@/api/qualityObjectives/object";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const noticeRef = ref();
@@ -125,22 +136,30 @@
pageSize: 10,
companyId: null,
year: '',
- level: ''
+ type: ''
},
companyList: [],
isAdmin: false,
yearList: [
{
value: 1,
- label: '2025年'
+ label: '2025'
},
{
value: 2,
- label: '2024年'
+ label: '2024'
},
{
value: 3,
- label: '2023年'
+ label: '2023'
+ },
+ {
+ value: 4,
+ label: '2022'
+ },
+ {
+ value: 5,
+ label: '2021'
},
],
levelList: [
@@ -163,43 +182,26 @@
const userInfo = JSON.parse(Cookies.get('userInfo'))
console.log("userInfo",userInfo)
data.isAdmin = userInfo.userType === 0;
+ if(data.isAdmin){
+ data.queryParams.companyId = null
+ }else {
+ data.queryParams.companyId = userInfo.companyId
+ }
getList();
+ if(data.isAdmin){
+ getCompanyList()
+ }
});
const getList = async () => {
- dataList.value = [
- {
- id: 1,
- level: 1,
- object: 'xxxx',
- method:'方法',
- people2: '秦',
- date2:'2015-8-1',
- people3: '秦',
- date3:'2015-8-1'
- },
- {
- id: 2,
- level: 2,
- object: 'xxxxfg ',
- deptName: '质量管理部',
- method:'方法',
- people1: '秦',
- date1:'2015-8-1',
- people2: '秦',
- date2:'2015-8-1',
- people3: '秦',
- date3:'2015-8-1'
- },
- ]
- // loading.value = true;
- // const res = await getCom(data.queryParams);
- // if(res.code === 200){
- // dataList.value = res.data.list
- // total.value = res.data.total
- // }else{
- // ElMessage.warning(res.message)
- // }
- // loading.value = false;
+ loading.value = true;
+ const res = await getObjectPage(data.queryParams);
+ if(res.code === 200){
+ dataList.value = res.data.list
+ total.value = res.data.total
+ }else{
+ ElMessage.warning(res.message)
+ }
+ loading.value = false;
}
@@ -207,7 +209,7 @@
getList();
}
const openDialog = (type, value) => {
- noticeRef.value.openDialog(type, value);
+ noticeRef.value.openDialog(type, value,data.companyList);
}
const selectValue = (val) => {
data.companyList.forEach(item => {
@@ -217,20 +219,17 @@
})
}
-const getCompanyList = async (val)=>{
- if(val != ""){
- loadingCompany.value = true;
- const queryParams = {
- name: val
- }
- const res = await getCompany(queryParams)
- if (res.code == 200) {
- loadingCompany.value = false;
- data.companyList = res.data.list
-
- } else {
- ElMessage.warning(res.message)
- }
+const getCompanyList = async ()=>{
+ const queryParams = {
+ pageNum: 1,
+ pageSize: 999
+ }
+ const res = await getCompany(queryParams)
+ if (res.code == 200) {
+ data.companyList = res.data.list?res.data.list:[]
+ // data.queryParams.companyId = data.companyList[0].id
+ } else {
+ ElMessage.warning(res.message)
}
}
@@ -245,14 +244,28 @@
/** 重置新增的表单以及其他数据 */
function reset() {
- data.queryParams = {
- companyId: '',
- pageNum: 1,
- pageSize: 10,
+ if(data.isAdmin){
+ data.queryParams = {
+ companyId: '',
+ pageNum: 1,
+ pageSize: 10,
+ year: '',
+ type: ''
+ }
+ choosedData.value = []
+ data.companyList = [];
+ getCompanyList()
+ }else {
+ data.queryParams = {
+ companyId: data.queryParams.companyId,
+ pageNum: 1,
+ pageSize: 10,
+ year: '',
+ type: ''
+ }
}
- choosedData.value = []
- data.companyList = [];
getList();
+
}
const exportData = () => {
if(choosedData.value && choosedData.value.length === 0){
@@ -263,18 +276,27 @@
}
const templatePath = ref('')
const startGeneration = async () => {
+ let name = ''
choosedData.value.forEach(item => {
- if(item.level == 1){
+ console.log('111',item)
+ name = ''
+ item.message = ''
+ if(item.type == 1){
templatePath.value = '/objectCompanyExample.docx'
+ name = item.companyName
}else {
templatePath.value = '/objectDeptExample.docx'
+ name = item.departName
}
const now = new Date()
const year = now.getFullYear()
const month = (now.getMonth() +1).toString().padStart(2, '0');
item.nowDate = year + '-' + month
+ item.qualityTargets.forEach((i,index) => {
+ item.message += index+1 +'、' + i.message + '\n'
+ })
try {
- generateWordDocument(templatePath.value, item, '质量目标.docx');
+ generateWordDocument(templatePath.value, item, name+'_质量目标.docx');
} catch (error){
ElMessage({
type: 'warning',
@@ -297,19 +319,26 @@
type: 'warning',
})
.then( async() => {
- // const res = await delNotice(val);
- // if(res.code === 200){
- // ElMessage({
- // type: 'success',
- // message: '删除成功'
- // });
- // getList();
- // }else{
- // ElMessage.warning(res.message)
- // }
+ const res = await delObject(val.id);
+ if(res.code === 200){
+ ElMessage({
+ type: 'success',
+ message: '删除成功'
+ });
+ getList();
+ }else{
+ ElMessage.warning(res.message)
+ }
})
}
-
+const handleChangeNum = (value) => {
+ if (!/^\d+$/.test(value)) { // 验证是否为数字
+ ElMessage.warning('只能输入数字')
+ data.queryParams.year = '' // 重置选择,避免非法值被添加到options中
+ } else if (!data.yearList.some(option => option.label == value)) { // 确保不是已存在的选项
+ data.yearList.push({ value, label: value }); // 添加新选项(这里简单地将值和标签设为相同)
+ }
+}
</script>
<style lang="scss">
.pag-container{
--
Gitblit v1.9.2