zhouwx
2025-11-07 2ddae70b9d9accc1c2136f6bed6df5d3981b5c77
修改
已修改3个文件
200 ■■■■ 文件已修改
public/projectReviewExample.docx 补丁 | 查看 | 原始文档 | blame | 历史
src/views/build/conpanyFunctionConsult/digitalFileDep/project/projectReview/components/editDialog.vue 194 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/build/conpanyFunctionConsult/digitalFileDep/project/projectReview/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/projectReviewExample.docx
Binary files differ
src/views/build/conpanyFunctionConsult/digitalFileDep/project/projectReview/components/editDialog.vue
@@ -3,9 +3,10 @@
    <el-dialog
        v-model="dialogVisible"
        :title="state.title"
        width="980px"
        width="1080px"
        :before-close="handleClose"
        :close-on-press-escape="false"
        :key="`select_${Date.now()}`"
        :close-on-click-modal="false"
    >
      <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="150px" >
@@ -90,80 +91,15 @@
            </el-col>
          </el-row>
          <el-row :gutter="24">
            <el-col :span="24">
              <el-form-item label="评审依据:" prop="reviewBasis">
                <el-input v-model.trim="state.form.reviewBasis" type="textarea" :rows="4" :disabled="state.title =='查看'" placeholder="评审依据"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="24">
            <el-col :span="24">
              <el-form-item label="评审内容:" prop="reviewContent">
                <el-input v-model.trim="state.form.reviewContent" type="textarea" :rows="4" :disabled="state.title =='查看'" placeholder="评审内容"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="24">
            <el-col :span="24">
              <el-form-item label="评审意见:" prop="reviewOpinion">
                <el-input v-model.trim="state.form.reviewOpinion" type="textarea" :rows="4" :disabled="state.title =='查看'" placeholder="评审意见"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="24">
            <el-col :span="12">
              <el-form-item label="评审组长:" prop="groupId">
                <el-select clearable v-model="state.form.groupId" :disabled="state.title =='查看'" filterable  style="width: 100%">
                  <el-option
                      v-for="item in state.peopleList"
                      :key="item.id"
                      :label="item.name"
                      :value="item.id"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="日期:"  prop="groupTime">
                <el-date-picker
                    :disabled="state.title === '查看'"
                    v-model="state.form.groupTime"
                    type="date"
                    placeholder="请选择日期"
                    value-format="YYYY-MM-DD"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="24">
            <el-col :span="12">
              <el-form-item label="批准领导:" prop="leaderId">
                <el-select clearable v-model="state.form.leaderId" :disabled="state.title =='查看'" filterable  style="width: 100%">
                  <el-option
                      v-for="item in state.peopleList"
                      :key="item.id"
                      :label="item.name"
                      :value="item.id"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="日期:" prop="leaderTime">
                <el-date-picker
                    :disabled="state.title === '查看'"
                    v-model="state.form.leaderTime"
                    type="date"
                    placeholder="请选择日期"
                    value-format="YYYY-MM-DD"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="24">
            <el-col :span="24">
              <el-form-item label="项目文件:" prop="productItemId">
                <el-select clearable v-model="state.form.productItemId" :disabled="state.title =='查看'" filterable style="width: 308px">
              <el-form-item label="评审依据:" prop="productItemIds">
                <el-select
                    clearable
                    multiple
                    v-model="state.productItems"
                    :disabled="state.title =='查看'"
                    filterable
                    style="width: 100%">
                  <el-option
                      v-for="item in state.itemFileList"
                      :key="item.id"
@@ -174,6 +110,70 @@
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="24">
            <el-col :span="24">
              <el-form-item label="评审内容:" prop="reviewContent">
                <el-input v-model.trim="state.form.reviewContent" type="textarea" :rows="4" :disabled="state.title =='查看'" placeholder="评审内容"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
<!--          <el-row :gutter="24">-->
<!--            <el-col :span="24">-->
<!--              <el-form-item label="评审意见:" prop="reviewOpinion">-->
<!--                <el-input v-model.trim="state.form.reviewOpinion" type="textarea" :rows="4" :disabled="state.title =='查看'" placeholder="评审意见"></el-input>-->
<!--              </el-form-item>-->
<!--            </el-col>-->
<!--          </el-row>-->
<!--          <el-row :gutter="24">-->
<!--            <el-col :span="12">-->
<!--              <el-form-item label="评审组长:" prop="groupId">-->
<!--                <el-select clearable v-model="state.form.groupId" :disabled="state.title =='查看'" filterable  style="width: 100%">-->
<!--                  <el-option-->
<!--                      v-for="item in state.peopleList"-->
<!--                      :key="item.id"-->
<!--                      :label="item.name"-->
<!--                      :value="item.id"-->
<!--                  />-->
<!--                </el-select>-->
<!--              </el-form-item>-->
<!--            </el-col>-->
<!--            <el-col :span="12">-->
<!--              <el-form-item label="日期:"  prop="groupTime">-->
<!--                <el-date-picker-->
<!--                    :disabled="state.title === '查看'"-->
<!--                    v-model="state.form.groupTime"-->
<!--                    type="date"-->
<!--                    placeholder="请选择日期"-->
<!--                    value-format="YYYY-MM-DD"-->
<!--                />-->
<!--              </el-form-item>-->
<!--            </el-col>-->
<!--          </el-row>-->
<!--          <el-row :gutter="24">-->
<!--            <el-col :span="12">-->
<!--              <el-form-item label="批准领导:" prop="leaderId">-->
<!--                <el-select clearable v-model="state.form.leaderId" :disabled="state.title =='查看'" filterable  style="width: 100%">-->
<!--                  <el-option-->
<!--                      v-for="item in state.peopleList"-->
<!--                      :key="item.id"-->
<!--                      :label="item.name"-->
<!--                      :value="item.id"-->
<!--                  />-->
<!--                </el-select>-->
<!--              </el-form-item>-->
<!--            </el-col>-->
<!--            <el-col :span="12">-->
<!--              <el-form-item label="日期:" prop="leaderTime">-->
<!--                <el-date-picker-->
<!--                    :disabled="state.title === '查看'"-->
<!--                    v-model="state.form.leaderTime"-->
<!--                    type="date"-->
<!--                    placeholder="请选择日期"-->
<!--                    value-format="YYYY-MM-DD"-->
<!--                />-->
<!--              </el-form-item>-->
<!--            </el-col>-->
<!--          </el-row>-->
          <el-row :gutter="24">
            <el-col :span="24">
              <el-form-item required label= "合同评审人员签署:" >
@@ -200,7 +200,7 @@
                        </el-form-item>
                      </template>
                    </el-table-column>
                    <el-table-column prop="name" label="姓名"  align="center">
                    <el-table-column prop="name" label="姓名"  align="center" width="110">
                      <template #default="{row,$index}">
                        <el-form-item :prop="'reviewUsers.' + '[' + $index + ']' + '.reviewUserId'" :rules="state.rules.reviewUserId">
                          <el-select clearable v-model="row.reviewUserId" :disabled="state.title =='查看'" filterable style="width: 245px" @change="chooseUser($index,row.reviewUserId)">
@@ -216,6 +216,17 @@
                    </el-table-column>
                    <el-table-column prop="userDept" label="单位/部门"  align="center"></el-table-column>
                    <el-table-column prop="userDuty" label="职务/职称"  align="center"></el-table-column>
                    <el-table-column prop="status" label="状态"  align="center">
                      <template #default="{row,$index}">
                        <div>{{row.status == 1 ? '待发送':row.status == 2 ? '待审批':  row.status == 3? '已审批':''}}</div>
                      </template>
                    </el-table-column>
                    <el-table-column prop="reviewOpinion" label="评审意见"  align="center">
                      <template #default="{row,$index}">
                        <div>{{row.reviewOpinion == 1 ? '同意':row.reviewOpinion == 2 ? '不同意':''}}</div>
                      </template>
                    </el-table-column>
                    <el-table-column prop="reviewTime" label="评审日期"  align="center"></el-table-column>
                    <el-table-column prop="sign" label="签名"  align="center" width="120">
                      <template #default="{row,$index}">
                        <el-form-item :prop="'reviewUsers.' + '[' + $index + ']' + '.sign'">
@@ -234,11 +245,6 @@
                          </div>
                          <div v-else></div>
                        </el-form-item>
                      </template>
                    </el-table-column>
                    <el-table-column prop="status" label="状态"  align="center">
                      <template #default="{row,$index}">
                          <div>{{row.status == 1 ? '待发送':row.status == 2 ? '待审批':  row.status == 3? '已审批':''}}</div>
                      </template>
                    </el-table-column>
                    <el-table-column label="操作" align="center" class-name="small-padding fixed-width" v-if="state.title !== '查看'" >
@@ -302,7 +308,7 @@
    groupTime: "",
    leaderId: null,
    leaderTime: "",
    productItemId: null,
    productItemIds: null,
  },
  formRules:{
    companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }],
@@ -321,7 +327,7 @@
    groupTime: [{ required: true, message: '请选择时间', trigger: 'blur' }],
    leaderId: [{ required: true, message: '请选择评审领导', trigger: 'blur' }],
    leaderTime: [{ required: true, message: '请选择时间', trigger: 'blur' }],
    productItemId: [{ required: true, message: '请选择项目文件', trigger: 'blur' }],
    productItemIds: [{ required: true, message: '请选择项目文件', trigger: 'blur' }],
  },
  rules:{
    reviewUserId: [{ required: true, message: '', trigger: 'blur' }],
@@ -350,7 +356,8 @@
      id: 2,
      name: '评审组员'
    },
  ]
  ],
  productItems:[]
})
onMounted(() => {
@@ -372,6 +379,8 @@
        state.form[key] = value[key]
      }
    })
    await nextTick();
    state.productItems = state.form.productItemIds.split(',').map(item => Number(item))
    if(value.filePath) {
      const obj = {
        url: value.filePath,
@@ -380,9 +389,13 @@
      state.fileList = [obj]
    }
    state.form.itemId = state.form.itemId == 0 ? null : state.form.itemId
    state.form.reviewUsers.forEach(item => {
    const list = JSON.parse(JSON.stringify(value.reviewUsers))
    list.forEach(item => {
      item.sign = item.sign ? [import.meta.env.VITE_APP_BASE_API + '/' + item.sign] :[]
    })
    state.form.reviewUsers = list
  }
  await getProjectList()
  await getPeopleList()
@@ -439,6 +452,7 @@
};
const onSubmit = async () => {
  state.form.productItemIds = state.productItems.join(',')
  const valid = await superRef.value.validate();
  if(valid){
    if(state.form.type == 1 && state.form.reviewUsers && state.form.reviewUsers.length == 0){
@@ -541,17 +555,19 @@
    groupTime: "",
    leaderId: null,
    leaderTime: "",
    productItemId: null,
    productItemIds: null,
  }
  state.fileList = []
  state.peopleList = []
  state.productItems = []
  superRef.value.clearValidate();
  superRef.value.resetFields()
  dialogVisible.value = false;
}
const changeCom = () => {
  state.form.itemId = null
  state.form.productItemId = null
  state.form.productItemIds = null
  state.productItems = []
  state.form.reviewUsers.forEach(item => {
    item.reviewUserId = null
    item.userDept = ''
@@ -564,7 +580,8 @@
}
const changeItem = () => {
  state.form.productItemId = null
  state.form.productItemIds = null
  state.productItems = []
  getFileList()
}
const getFileList = async () => {
@@ -604,7 +621,8 @@
    state.form.groupTime = null
    state.form.leaderId = null
    state.form.leaderTime = null
    state.form.productItemId = null
    state.form.productItemIds = null
    state.productItems = []
  }else if(state.form.type == 1){
    state.form.stage = ''
    state.form.fileName = ''
src/views/build/conpanyFunctionConsult/digitalFileDep/project/projectReview/index.vue
@@ -405,9 +405,9 @@
              };
            })
    );
    item.leaderTime = item.leaderTime?.substring(0, 10)
    item.groupTime = item.groupTime?.substring(0, 10)
    console.log(' item.tableList', item.tableList)
    item.productItems = item.productItems.map(i => i.fileName)
    console.log('item.productItems', item.productItems)
    try {
      generateWordDocument(templatePath.value, item, item.itemName + `_项目审批表.docx`);
    } catch (error) {