From 5b6c4c659710814ea5f59dcab8ac64ddd8acfe6f Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期四, 03 七月 2025 14:08:44 +0800
Subject: [PATCH] 模板导入

---
 src/views/build/conpanyFunctionConsult/qualityObjectives/objective/index.vue |  192 +++++++++++++++++++++++++++++++-----------------
 1 files changed, 124 insertions(+), 68 deletions(-)

diff --git a/src/views/build/conpanyFunctionConsult/qualityObjectives/objective/index.vue b/src/views/build/conpanyFunctionConsult/qualityObjectives/objective/index.vue
index a4f69ec..5c056b1 100644
--- a/src/views/build/conpanyFunctionConsult/qualityObjectives/objective/index.vue
+++ b/src/views/build/conpanyFunctionConsult/qualityObjectives/objective/index.vue
@@ -2,8 +2,7 @@
   <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
@@ -33,22 +32,28 @@
             </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 +65,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>
@@ -79,11 +84,26 @@
       <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="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">
+          {{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)" >编辑</el-button>
@@ -114,6 +134,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 +146,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 +192,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;
 
 }
 
@@ -218,10 +230,24 @@
 }
 
 const getCompanyList = async (val)=>{
-  if(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)
+    }
+  }else{
+    loadingCompany.value = true;
+    const queryParams = {
+      pageSize: 10,
+      pageNum: 1,
     }
     const res = await getCompany(queryParams)
     if (res.code == 200) {
@@ -245,14 +271,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 +303,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 +346,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