zhouwx
9 天以前 2be66e2a590bc719c6ecdb0bbd0aaa4c9b91fd98
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,23 @@
  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();
});
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;
}
@@ -245,13 +254,25 @@
/** 重置新增的表单以及其他数据  */
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 = [];
  }else {
    data.queryParams = {
      companyId: data.queryParams.companyId,
      pageNum: 1,
      pageSize: 10,
      year: '',
      type: ''
    }
  }
  choosedData.value = []
  data.companyList = [];
  getList();
}
const exportData = () => {
@@ -263,18 +284,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 +327,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{