浏览代码

定期会议 - 新增“开项”功能,关联审计问卷CODE

wangggziwen 8 月之前
父节点
当前提交
3c6bfcf6bb

+ 4 - 0
rc-admin/src/main/java/com/ruoyi/web/controller/rc/TOpenItemController.java

@@ -10,6 +10,7 @@ import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.rc.domain.*;
+import com.ruoyi.rc.service.ITMeetingService;
 import com.ruoyi.rc.service.ITProgressService;
 import com.ruoyi.rc.service.ITQuestionnaireService;
 import com.ruoyi.system.service.ISysDeptService;
@@ -63,6 +64,9 @@ public class TOpenItemController extends BaseController
     @Autowired
     private ITQuestionnaireService tQuestionnaireService;
 
+    @Autowired
+    private ITMeetingService tMeetingService;
+
     /**
      * 流程处理
      */

+ 10 - 0
rc-buisness/src/main/java/com/ruoyi/rc/domain/TMeeting.java

@@ -60,6 +60,16 @@ public class TMeeting extends BaseEntity
     @Excel(name = "章节")
     private String chapName;
 
+    /** 开项问题处理状态 */
+    private String openItemStatus;
+
+    public String getOpenItemStatus() {
+        return openItemStatus;
+    }
+
+    public void setOpenItemStatus(String openItemStatus) {
+        this.openItemStatus = openItemStatus;
+    }
     public String getDirectory() {
         return directory;
     }

+ 3 - 1
rc-buisness/src/main/resources/mapper/rc/TMeetingMapper.xml

@@ -13,10 +13,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="deptId"    column="dept_id"    />
         <result property="personInChargeName"    column="person_in_charge_name"    />
         <result property="chapName"    column="chap_name"    />
+        <result property="openItemStatus"    column="open_item_status"    />
     </resultMap>
 
     <sql id="selectTMeetingVo">
-        select d.id, d.year, d.questionnaire_id, d.person_in_charge, d.remarks, d.dept_id,
+        select d.id, d.year, d.questionnaire_id, d.person_in_charge, d.remarks, d.dept_id, d.open_item_status,
         u.nick_name as person_in_charge_name,
         q.directory, q.code, q.name,
         c.name as chap_name
@@ -69,6 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="personInCharge != null">person_in_charge = #{personInCharge},</if>
             <if test="remarks != null">remarks = #{remarks},</if>
             <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="openItemStatus != null">open_item_status = #{openItemStatus},</if>
         </trim>
         where id = #{id}
     </update>

+ 168 - 1
ruoyi-ui/src/views/rc/meeting/index.vue

@@ -115,7 +115,7 @@
           <el-button icon="el-icon-folder" style="color:#6e96fa;" circle @click="handleDoc(scope.row , 'meeting-actionlist')"></el-button>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" width="180" fixed="right" class-name="small-padding fixed-width">
+      <el-table-column label="操作" align="center" width="120" fixed="right" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -131,6 +131,21 @@
             @click="handleDelete(scope.row)"
             v-hasPermi="['rc:meeting:remove']"
           >删除</el-button>
+          <span v-if="scope.row.openItemStatus != '2'">
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-s-help"
+              @click="handleOpenitem(scope.row)"
+            >开项</el-button>
+          </span>
+          <span v-if="scope.row.openItemStatus == '2'">
+            <el-button
+              size="mini"
+              type="text"
+              style="color: red; cursor: default;"
+            >开项中</el-button>
+          </span>
         </template>
       </el-table-column>
     </el-table>
@@ -253,6 +268,106 @@
         </el-table-column>
       </el-table>
     </el-dialog>
+
+    <!-- 添加或修改开项对话框 -->
+    <el-dialog :title="openitemTitle" :visible.sync="openitemOpen" width="500px" append-to-body>
+      <el-form ref="openitemForm" :model="openitemForm" :rules="openitemRules" label-width="120px">
+        <el-form-item label="问题类型" prop="type">
+          <el-select v-model="openitemForm.type" placeholder="请选择问题类型">
+            <el-option
+              v-for="dict in dict.type.t_open_item_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="存在问题描述" prop="description">
+          <el-input v-model="openitemForm.description" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="开项级别" prop="level">
+          <el-select v-model="openitemForm.level" placeholder="请选择开项级别">
+            <el-option
+              v-for="dict in dict.type.t_open_item_level"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="开项时间" prop="openTime">
+          <el-date-picker clearable
+                          v-model="openitemForm.openTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="请选择开项时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="闭项时间" prop="closeTime">
+          <el-date-picker clearable
+                          v-model="openitemForm.closeTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="请选择闭项时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="问题处理状态" prop="result">
+          <el-select v-model="openitemForm.status" placeholder="请选择问题处理状态">
+            <el-option
+              v-for="dict in dict.type.t_open_item_status"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="负责人" prop="personInCharge">
+          <el-select clearable v-model="openitemForm.personInCharge" placeholder="请选择负责人">
+            <el-option
+              v-for="dict in userOptions"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="审核人" prop="reviewer">
+          <el-select clearable v-model="openitemForm.reviewer" placeholder="请选择审核人">
+            <el-option
+              v-for="dict in userOptions"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="负责人确认" prop="result">
+          <el-select v-model="openitemForm.result" placeholder="请选择负责人确认">
+            <el-option
+              v-for="dict in dict.type.t_open_item_result"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="截至时间" prop="deadline">
+          <el-date-picker clearable
+                          v-model="openitemForm.deadline"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="请选择截至时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="备注" prop="remarks">
+          <el-input v-model="openitemForm.remarks" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitOpenitemForm">确 定</el-button>
+        <el-button @click="cancelOpenitem">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -262,11 +377,17 @@ import { listDept } from "@/api/system/dept";
 import { listAllUser } from "@/api/system/user";
 import { getToken } from "@/utils/auth";
 import { addCommonfile, allFileList, delCommonfile, updateCommonfile } from "@/api/rc/commonfile";
+import { listOpenitem, getOpenitem, delOpenitem, addOpenitem, updateOpenitem } from "@/api/rc/openitem";
 
 export default {
   name: "Meeting",
+  dicts: ['t_open_item_result', 't_open_item_type', 't_open_item_level', 't_open_item_status','t_sec_sub_chap_completion_status', 't_sec_sub_chap_yes_no_na', 't_sec_sub_chap_type', 't_sec_sub_chap_standard'],
   data() {
     return {
+      openitemTitle: "",
+      openitemOpen: false,
+      openitemForm: {},
+      openitemRules: {},
       // 遮罩层
       loading: true,
       // 选中数组
@@ -341,6 +462,52 @@ export default {
     this.getChapterList();
   },
   methods: {
+    /** 开项按钮操作 */
+    handleOpenitem(row) {
+      this.resetOpenitem();
+      this.openitemOpen = true;
+      this.openitemTitle = "添加开项";
+      this.openitemForm.deptId = row.deptId;
+      this.openitemForm.auditId = row.auditId;
+      this.openitemForm.questionnaireId = row.id;
+      this.openitemForm.code = row.code;
+    },
+    /** 开项提交按钮 */
+    submitOpenitemForm() {
+      this.$refs["openitemForm"].validate(valid => {
+        if (valid) {
+          addOpenitem(this.openitemForm).then(response => {
+            this.$modal.msgSuccess("新增开项成功");
+            this.openitemOpen = false;
+          });
+        }
+      });
+    },
+    // 取消按钮
+    cancelOpenitem() {
+      this.openitemOpen = false;
+      this.resetOpenitem();
+    },
+    // 开项表单重置
+    resetOpenitem() {
+      this.openitemForm = {
+        id: null,
+        type: null,
+        questionnaireId: null,
+        description: null,
+        level: null,
+        openTime: null,
+        closeTime: null,
+        status: null,
+        personInCharge: null,
+        reviewer: null,
+        result: null,
+        deadline: null,
+        remarks: null,
+        deptId: null
+      };
+      this.resetForm("openitemForm");
+    },
     handleChapterChange() {
       listCode(this.form.chapterId).then(response => {
         let data = response.data;

+ 2 - 1
ruoyi-ui/src/views/rc/questionnaire/index.vue

@@ -170,6 +170,7 @@
             <el-button
               size="mini"
               type="text"
+              icon="el-icon-s-help"
               @click="handleOpenitem(scope.row)"
             >开项</el-button>
           </span>
@@ -548,7 +549,7 @@ export default {
       this.openitemTitle = "添加开项";
       this.openitemForm.deptId = row.deptId;
       this.openitemForm.auditId = row.auditId;
-      this.openitemForm.questionnaireId = row.id;
+      this.openitemForm.questionnaireId = row.questionnaireId;
       this.openitemForm.code = row.code;
     },
     /** 开项提交按钮 */