소스 검색

修改安全要求

余思翰 11 달 전
부모
커밋
65e307d756

+ 2090
- 1941
oa-back/sql/cmc_oa(小余测试数据).sql
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
파일 보기


+ 7
- 1
oa-ui/src/utils/deleteResource.js 파일 보기

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-06-13 17:07:59
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-04 10:38:39
5
+ * @LastEditTime: 2024-07-09 17:09:23
6 6
  */
7 7
 import request from '@/utils/request'
8 8
 
@@ -35,6 +35,12 @@ const apiEndpoints = [
35 35
       '/oa/carApproval/:id',
36 36
     ]
37 37
   },
38
+  {
39
+    procDefName: '设备审批',
40
+    apiUrl: [
41
+      '/oa/deviceApproval/:id',
42
+    ]
43
+  },
38 44
   {
39 45
     procDefName: '项目流转',
40 46
     apiUrl: [

+ 133
- 0
oa-ui/src/views/flowable/form/components/chooseSaferequest.vue 파일 보기

@@ -0,0 +1,133 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-07-09 11:13:55
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-07-09 14:27:31
6
+-->
7
+<template>
8
+  <div>
9
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="128px">
10
+      <el-form-item label="安全提示类型">
11
+        <el-select v-model="queryParams.safeType" clearable placeholder="请选择" @change="handleQuery">
12
+          <el-option label="环境管理要求" value="0"></el-option>
13
+          <el-option label="安全生产与职业健康要求" value="1"></el-option>
14
+          <el-option label="信息安全管理要求" value="2"></el-option>
15
+        </el-select>
16
+      </el-form-item>
17
+      <el-form-item>
18
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
19
+      </el-form-item>
20
+    </el-form>
21
+
22
+    <el-table v-loading="loading" :data="safeRequestList" @selection-change="handleSelectionChange"
23
+      :row-key="getRowKeys">
24
+      <el-table-column type="selection" width="55" align="center" />
25
+      <el-table-column label="序号" type="index" width="55" align="center" />
26
+      <el-table-column label="安全提示类型" align="center" prop="safeType" :formatter="formatterLabel" width="120" />
27
+      <el-table-column label="内容" prop="content" />
28
+    </el-table>
29
+
30
+    <div class="text-center mt20">
31
+      <el-button type="primary" @click="confirm">确 定</el-button>
32
+      <el-button @click="$emit('close')">取 消</el-button>
33
+    </div>
34
+    <!-- <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
35
+      @pagination="getList" /> -->
36
+  </div>
37
+</template>
38
+
39
+<script>
40
+import { listSafeRequest, getSafeRequest } from '@/api/oa/safe/safeRequest'
41
+export default {
42
+  props: {
43
+    safeType: {
44
+      type: String,
45
+      default: ''
46
+    }
47
+  },
48
+  watch: {
49
+    safeType(val) {
50
+      this.queryParams.safeType = val;
51
+      this.handleQuery();
52
+    }
53
+  },
54
+  data() {
55
+    return {
56
+      // 遮罩层
57
+      loading: true,
58
+      // 总条数
59
+      total: 0,
60
+      // cmc安全要求表格数据
61
+      safeRequestList: [],
62
+      // 是否显示弹出层
63
+      open: false,
64
+      // 查询参数
65
+      queryParams: {
66
+        pageNum: 1,
67
+        pageSize: 99,
68
+        safeType: null,
69
+        content: null
70
+      },
71
+      // 表单参数
72
+      form: {},
73
+      // 表单校验
74
+      rules: {
75
+      },
76
+      chooseList: []
77
+    }
78
+  },
79
+  created() {
80
+    this.queryParams.safeType = this.safeType;
81
+    this.getList();
82
+  },
83
+  mounted() {
84
+  },
85
+  methods: {
86
+    /** 查询cmc安全要求列表 */
87
+    getList() {
88
+      this.loading = true;
89
+      listSafeRequest(this.queryParams).then(response => {
90
+        this.safeRequestList = response.rows;
91
+        this.total = response.total;
92
+        this.loading = false;
93
+      });
94
+    },
95
+    /** 搜索按钮操作 */
96
+    handleQuery() {
97
+      this.queryParams.pageNum = 1;
98
+      this.getList();
99
+    },
100
+    handleSelectionChange(val) {
101
+      this.chooseList = val
102
+    },
103
+    getRowKeys(row) {
104
+      return row.requestId;
105
+    },
106
+    formatterLabel(row) {
107
+      switch (row.safeType) {
108
+        case '0':
109
+          return '环境管理要求'
110
+        case '1':
111
+          return '安全生产与职业健康要求'
112
+        case '2':
113
+          return '信息安全管理要求'
114
+      }
115
+    },
116
+    formatterChooseList(arr){
117
+      let contentList = [];
118
+      arr.forEach(item => {
119
+        contentList.push(item.content)
120
+      })
121
+      let str = contentList.join('\n')
122
+      return str
123
+    },
124
+    confirm() {
125
+      let confirmRequest = this.formatterChooseList(this.chooseList);
126
+      this.$emit('confirm',confirmRequest)
127
+      this.$emit('close')
128
+    }
129
+  }
130
+}
131
+</script>
132
+
133
+<style lang="scss" scoped></style>

+ 2
- 52
oa-ui/src/views/flowable/form/projectProcess/addproject.vue 파일 보기

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-03-18 11:00:04
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-08 18:19:39
5
+ * @LastEditTime: 2024-07-09 14:41:48
6 6
 -->
7 7
 <template>
8 8
   <div class="project-wrapper">
@@ -48,56 +48,6 @@
48 48
       <el-form-item label="联系电话:" prop="telephone">
49 49
         <el-input v-model="addForm.telephone"></el-input>
50 50
       </el-form-item>
51
-      <!-- <el-form-item label="项目概况:">
52
-        <table border="1">
53
-          <tr>
54
-            <td style="width: 180px">工作内容</td>
55
-            <td>等级或比例尺</td>
56
-            <td>单位</td>
57
-            <td>工作量</td>
58
-            <td style="width: 100px">要求完成时间</td>
59
-            <td>备注</td>
60
-          </tr>
61
-          <tr v-for="(work, index) in workList" :key="index">
62
-            <td>
63
-              <el-input v-model="work.content" type="textarea" clearable
64
-                :autosize="{ minRows: 4, maxRows: 10 }"></el-input>
65
-            </td>
66
-            <td>
67
-              <el-select v-model="work.scale" placeholder="请选择" clearable>
68
-                <el-option v-for="dict in dict.type.cmc_scale_grade" :key="dict.value" :label="dict.label"
69
-                  :value="dict.label" />
70
-              </el-select>
71
-            </td>
72
-            <td>
73
-              <el-select v-model="work.unit" placeholder="请选择" clearable>
74
-                <el-option v-for="dict in dict.type.cmc_unit" :key="dict.value" :label="dict.label"
75
-                  :value="dict.label" />
76
-              </el-select>
77
-            </td>
78
-            <td>
79
-              <el-input v-model="work.workload" clearable></el-input>
80
-            </td>
81
-            <td>
82
-              <el-date-picker style="width: 140px" v-model="work.deadline" value-format="yyyy-MM-dd" type="date"
83
-                placeholder="选择日期">
84
-              </el-date-picker>
85
-            </td>
86
-            <td>
87
-              <el-input v-model="work.remark" type="textarea" clearable
88
-                :autosize="{ minRows: 4, maxRows: 10 }"></el-input>
89
-            </td>
90
-            <td>
91
-              <el-button type="text" style="color:#F56C6C" size="mini" @click="deletWorkItem(index)">删除行</el-button>
92
-            </td>
93
-          </tr>
94
-        </table>
95
-
96
-        <el-button icon="el-icon-plus" size="mini" @click="addWorkList"></el-button>
97
-      </el-form-item> -->
98
-      <!-- 项目安排 -->
99
-      <!-- <arrange-project ref="arrange" :taskForm="taskForm" :taskName="'项目登记'" :disabled="disabled"></arrange-project> -->
100
-      <!--  -->
101 51
       <el-form-item label="任务书上传:" prop="taskDocument">
102 52
         <div v-if="addForm.taskDocument" class="upload-list">
103 53
           <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + addForm.taskDocument}`)">
@@ -136,7 +86,7 @@
136 86
       <el-button type="warning" @click="save" :disabled="disabled">保 存</el-button>
137 87
       <el-button type="primary" @click="confirmAddForm" :disabled="disabled">提 交</el-button>
138 88
     </div>
139
-    <el-dialog title="选择合同" :visible.sync="openContract" width="1000px" append-to-body>
89
+    <el-dialog title="选择合同" :visible.sync="openContract" width="70%" append-to-body>
140 90
       <choose-contract @choose="setContract" @close="openContract = false"></choose-contract>
141 91
     </el-dialog>
142 92
   </div>

+ 16
- 10
oa-ui/src/views/flowable/form/projectProcess/arrangeProject.vue 파일 보기

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-03-19 09:24:06
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-08 18:52:08
5
+ * @LastEditTime: 2024-07-09 09:28:51
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -31,10 +31,13 @@
31 31
       <el-row :gutter="20">
32 32
         <el-col :span="12" :xs="24">
33 33
           <el-form-item label="项目负责人:" prop="projectLeader">
34
-            <el-tag effect="plain" type="warning" style="margin-right: 10px;"
34
+            <el-select v-model="form.projectLeader" placeholder="请选择项目负责人" size="large" disabled>
35
+              <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName" :value="item.userId" />
36
+            </el-select>
37
+            <!-- <el-tag effect="plain" type="warning" style="margin-right: 10px;"
35 38
               v-if="form.projectLeader != '' && form.projectLeader != undefined">{{
36
-      form.projectLeaderName }}</el-tag>
37
-            <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="choosePeople">选择</el-button>
39
+      form.projectLeaderName }}</el-tag> -->
40
+            <el-button type="primary" plain icon="el-icon-plus" @click="choosePeople">选择</el-button>
38 41
           </el-form-item>
39 42
         </el-col>
40 43
         <el-col :span="12" :xs="24">
@@ -131,6 +134,9 @@ export default {
131 134
         deptId: [
132 135
           { required: true, message: "请选择承担部门", trigger: "change" }
133 136
         ],
137
+        projectLeader: [
138
+          { required: true, message: "请选择项目负责人", trigger: "change" }
139
+        ]
134 140
       },
135 141
       deptList: [],
136 142
       deptLeaderList: [],
@@ -247,19 +253,19 @@ export default {
247 253
         type: 'warning'
248 254
       }).then(async () => {
249 255
         this.save();
250
-        let resData = await getDeptLeadersByDeptId({ deptId: 105 });
256
+        let resData = await getUsersDeptLeaderByDept({ deptId: 105 });
251 257
         let approvalId;
252 258
         if (resData.data) {
253
-          approvalId = resData.data[0].userId;
259
+          approvalId = resData.data.userId;
254 260
         }
255 261
         console.log(approvalId);
256 262
         const params = { taskId: this.taskForm.taskId };
257 263
         // 获取下一个流程节点
258 264
         getNextFlowNode(params).then(res => {
259
-        this.$set(this.taskForm.variables, "formId", this.taskForm.formId);
260
-        this.$set(this.taskForm.variables, "budgetInitiator", this.peopleForm.userId || this.form.projectLeader);
261
-        this.$set(this.taskForm.variables, "planInitiator", this.peopleForm.userId || this.form.projectLeader);
262
-        this.$set(this.taskForm.variables, "approval", approvalId);
265
+          this.$set(this.taskForm.variables, "formId", this.taskForm.formId);
266
+          this.$set(this.taskForm.variables, "budgetInitiator", this.peopleForm.userId || this.form.projectLeader);
267
+          this.$set(this.taskForm.variables, "planInitiator", this.peopleForm.userId || this.form.projectLeader);
268
+          this.$set(this.taskForm.variables, "approval", approvalId);
263 269
           complete(this.taskForm).then(response => {
264 270
             this.$modal.msgSuccess(response.msg);
265 271
             this.$emit('goBack');

+ 5
- 3
oa-ui/src/views/flowable/form/projectProcess/assessWork.vue 파일 보기

@@ -128,7 +128,9 @@ export default {
128 128
     },
129 129
     getProjectWorkList() {
130 130
       listProjectWork({ projectId: this.taskForm.formId }).then(res => {
131
-        this.workList = res.rows;
131
+        if (res.rows.length != 0) {
132
+          this.workList = res.rows;
133
+        }
132 134
       })
133 135
     },
134 136
     addWorkList() {
@@ -175,10 +177,10 @@ export default {
175 177
     },
176 178
     async confirm() {
177 179
       this.save();
178
-      let resData = await getDeptLeadersByDeptId({ deptId: 105 });
180
+      let resData = await getUsersDeptLeaderByDept({ deptId: 105 });
179 181
       let approval;
180 182
       if (resData.data) {
181
-        approval = resData.data[1].userId;
183
+        approval = resData.data.userId;
182 184
       }
183 185
       this.$set(this.taskForm.variables, "approval", approval);
184 186
       const params = { taskId: this.taskForm.taskId };

+ 30
- 1
oa-ui/src/views/flowable/form/safeForm.vue 파일 보기

@@ -28,14 +28,23 @@
28 28
             </el-select>
29 29
           </el-form-item>
30 30
           <el-form-item label="环境管理要求" prop="environmentComment">
31
+              <div v-if="taskName == '安全交底'">
32
+                <el-button size="mini" plain @click="chooseSafe('0')" type="primary" icon="el-icon-plus">选择要求</el-button>
33
+              </div>
31 34
             <el-input v-model="form.environmentComment" placeholder="请输入环境管理要求" type="textarea"
32 35
               :disabled="taskName != '安全交底'" :autosize="{ minRows: 8 }" />
33 36
           </el-form-item>
34 37
           <el-form-item label="安全生产与职业健康要求" prop="outsideComment">
38
+              <div v-if="taskName == '安全交底'">
39
+                <el-button size="mini" plain @click="chooseSafe('1')" type="primary" icon="el-icon-plus">选择要求</el-button>
40
+              </div>
35 41
             <el-input v-model="form.outsideComment" placeholder="请输入安全生产与职业健康要求" type="textarea"
36 42
               :disabled="taskName != '安全交底'" :autosize="{ minRows: 8 }" />
37 43
           </el-form-item>
38 44
           <el-form-item label="信息安全管理要求" prop="insideComment">
45
+              <div v-if="taskName == '安全交底'">
46
+                <el-button size="mini" plain @click="chooseSafe('2')" type="primary" icon="el-icon-plus">选择要求</el-button>
47
+              </div>
39 48
             <el-input v-model="form.insideComment" placeholder="请输入信息安全管理要求" type="textarea" :autosize="{ minRows: 8 }"
40 49
               :disabled="taskName != '安全交底'" />
41 50
           </el-form-item>
@@ -86,6 +95,10 @@
86 95
         </el-card>
87 96
       </el-col>
88 97
     </el-row>
98
+
99
+    <el-dialog :title="title" :visible.sync="open" width="70%" append-to-body>
100
+      <choose-saferequest :safeType="safeType" @close="open = false" @confirm="setRequestVals"></choose-saferequest>
101
+    </el-dialog>
89 102
   </div>
90 103
 </template>
91 104
 
@@ -96,10 +109,12 @@ import { listUser } from '@/api/system/user';
96 109
 import flow from '@/views/flowable/task/todo/detail/flow';
97 110
 import { complete, getNextFlowNode } from "@/api/flowable/todo";
98 111
 import { flowXmlAndNode } from "@/api/flowable/definition";
112
+import ChooseSaferequest from './components/chooseSaferequest.vue';
99 113
 
100 114
 export default {
101 115
   components: {
102
-    flow
116
+    flow,
117
+    ChooseSaferequest
103 118
   },
104 119
   name: "Safe",
105 120
   props: {
@@ -116,6 +131,7 @@ export default {
116 131
     return {
117 132
       disclosurerUser: '',
118 133
       accepterUser: '',
134
+      safeType:'',
119 135
       // 遮罩层
120 136
       loading: true,
121 137
       // 选中数组
@@ -347,6 +363,19 @@ export default {
347 363
       this.download('oa/safe/export', {
348 364
         ...this.queryParams
349 365
       }, `safe_${new Date().getTime()}.xlsx`)
366
+    },
367
+    chooseSafe(type){
368
+      this.safeType = type
369
+      this.open = true;
370
+    },
371
+    setRequestVals(input){
372
+      if(this.safeType == '0'){
373
+        this.form.environmentComment = input
374
+      }else if(this.safeType == '1'){
375
+        this.form.outsideComment = input
376
+      }else{
377
+        this.form.insideComment = input
378
+      }
350 379
     }
351 380
   }
352 381
 };

+ 23
- 23
oa-ui/src/views/flowable/form/settleForm.vue 파일 보기

@@ -1,16 +1,11 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-30 09:03:14
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-07-09 14:08:54
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-07-09 17:01:08
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container" v-loading="loading">
9
-    <el-button type="warning" icon="el-icon-printer" @click="printOpen = true">打印</el-button>
10
-    <el-dialog title="结算表格预览" :visible.sync="printOpen" width="65%" append-to-body>
11
-      <settle-print :form="form" :chooseProject="chooseProject" :workList="settleWorkList"
12
-        :settleList="oldSettleSumList" @cancel="printOpen = false"></settle-print>
13
-    </el-dialog>
14 9
     <el-row :gutter="20">
15 10
       <el-col :span="flowDisabled ? 19 : 24" :xs="24">
16 11
         <h2 class="text-center">项目结算表</h2>
@@ -100,7 +95,7 @@
100 95
               </el-link>
101 96
             </div>
102 97
           </el-form-item>
103
-          <el-form-item label="项目管理部审核结算单" prop="">
98
+          <!-- <el-form-item label="项目管理部审核结算单" prop="">
104 99
             <FileUpload v-if="taskName == '项目管理部结算'" :limit="1" :filePathName="'项目结算/项目管理部审核结算单'"
105 100
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setModifyDocument">
106 101
             </FileUpload>
@@ -112,7 +107,7 @@
112 107
                 </span>
113 108
               </el-link>
114 109
             </div>
115
-          </el-form-item>
110
+          </el-form-item> -->
116 111
           <el-form-item label="分管领导审核结算单" prop="">
117 112
             <FileUpload v-if="taskName == '分管审核'" :limit="1" :filePathName="'项目结算/分管领导审核结算单'"
118 113
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setFinalDocument">
@@ -465,6 +460,7 @@
465 460
           </div>
466 461
         </el-form>
467 462
         <div style="text-align: center" v-if="!disabled">
463
+          <el-button type="success" icon="el-icon-printer" @click="printOpen = true">打印</el-button>
468 464
           <el-button type="warning" @click="preserve">保存</el-button>
469 465
           <el-button type="primary" @click="submitNextFlow">提交下一个流程</el-button>
470 466
         </div>
@@ -479,6 +475,10 @@
479 475
       </el-col>
480 476
     </el-row>
481 477
 
478
+    <el-dialog title="结算表格预览" :visible.sync="printOpen" width="65%" append-to-body>
479
+      <settle-print :form="form" :chooseProject="chooseProject" :workList="settleWorkList"
480
+        :settleList="oldSettleSumList" @cancel="printOpen = false"></settle-print>
481
+    </el-dialog>
482 482
     <el-drawer title="选择单价" :visible.sync="drawer" direction="rtl">
483 483
       <choose-price :row="clickWork" @getPrice="getPrice" @cancel="drawer = false"></choose-price>
484 484
     </el-drawer>
@@ -688,14 +688,14 @@ export default {
688 688
         this.form.jsUserName = this.$store.state.user.name;
689 689
         this.form.jsUserId = this.$store.state.user.id;
690 690
         this.form.jsTime = parseTime(new Date(), "{y}-{m}-{d}");
691
-      // } else if (this.taskName == "项目管理部结算") {
692
-      //   this.form.xmUserName = this.$store.state.user.name;
693
-      //   this.form.xmUserId = this.$store.state.user.id;
694
-      //   this.form.xmTime = parseTime(new Date(), "{y}-{m}-{d}");
695
-      // } else if (this.taskName == "结算发起人确认") {
696
-      //   this.form.deptUserName = this.$store.state.user.name;
697
-      //   this.form.deptUserId = this.$store.state.user.id;
698
-      //   this.form.deptTime = parseTime(new Date(), "{y}-{m}-{d}");
691
+        // } else if (this.taskName == "项目管理部结算") {
692
+        //   this.form.xmUserName = this.$store.state.user.name;
693
+        //   this.form.xmUserId = this.$store.state.user.id;
694
+        //   this.form.xmTime = parseTime(new Date(), "{y}-{m}-{d}");
695
+        // } else if (this.taskName == "结算发起人确认") {
696
+        //   this.form.deptUserName = this.$store.state.user.name;
697
+        //   this.form.deptUserId = this.$store.state.user.id;
698
+        //   this.form.deptTime = parseTime(new Date(), "{y}-{m}-{d}");
699 699
       } else if (this.taskName == "经营发展部校核") {
700 700
         this.form.jyUserName = this.$store.state.user.name;
701 701
         this.form.jyUserId = this.$store.state.user.id;
@@ -785,10 +785,10 @@ export default {
785 785
               this.getNextFlowNodeFn(null, 110, false);
786 786
             } else if (this.taskName == "技术质量部审核") {
787 787
               this.getNextFlowNodeFn(null, 107, false);
788
-            // } else if (this.taskName == "项目管理部结算") {
789
-            //   this.getNextFlowNodeFn();
790
-            // } else if (this.taskName == "结算发起人确认") {
791
-            //   this.getNextFlowNodeFn(null, 105, false);
788
+              // } else if (this.taskName == "项目管理部结算") {
789
+              //   this.getNextFlowNodeFn();
790
+              // } else if (this.taskName == "结算发起人确认") {
791
+              //   this.getNextFlowNodeFn(null, 105, false);
792 792
             } else if (this.taskName == "经营发展部校核") {
793 793
               this.getNextFlowNodeFn(null, this.deptId, true);
794 794
             } else if (this.taskName == "分管审核") {
@@ -798,7 +798,7 @@ export default {
798 798
             } else if (this.taskName == "总经理审批") {
799 799
               this.getNextFlowNodeFn();
800 800
             }
801
-          }else{
801
+          } else {
802 802
             this.$message.error('结算合计总金额不能大于预算内项目结算总金额!')
803 803
           }
804 804
         } else {
@@ -950,7 +950,7 @@ export default {
950 950
     },
951 951
     calculateSettle(work) {
952 952
       let sum = work.workload * work.coefficient * work.price;
953
-      if(sum < 600){
953
+      if (sum < 600) {
954 954
         this.$message.warning('不足600,按600算')
955 955
         work.remark = '不足600,按600算'
956 956
         sum = 600

+ 3
- 3
oa-ui/src/views/oa/project/index.vue 파일 보기

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-02-27 14:49:15
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-08 14:36:12
5
+ * @LastEditTime: 2024-07-09 15:26:58
6 6
 -->
7 7
 <template>
8 8
   <div class="project-wrapper">
@@ -108,8 +108,8 @@
108 108
           <template slot-scope="scope" v-if="scope.row.userId !== 1">
109 109
             <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"
110 110
               v-hasPermi="['oa:project:query']">查看</el-button>
111
-            <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
112
-              v-hasPermi="['oa:project:edit']">修改</el-button>
111
+            <!-- <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
112
+              v-hasPermi="['oa:project:edit']">修改</el-button> -->
113 113
             <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
114 114
               v-hasPermi="['oa:project:remove']">删除</el-button>
115 115
           </template>

+ 63
- 16
oa-ui/src/views/oa/project/info.vue 파일 보기

@@ -91,7 +91,7 @@
91 91
                 <svg-icon slot="prefix" icon-class="dept" />
92 92
                 承担部门
93 93
               </template>
94
-              {{ project.undertakingDeptName }}
94
+              {{ getDeptNames(project.undertakingDept) }}
95 95
             </el-descriptions-item>
96 96
             <el-descriptions-item>
97 97
               <template slot="label">
@@ -150,17 +150,26 @@
150 150
       </div>
151 151
       <!-- 项目管理部安排 -->
152 152
       <div class="box1 mt20">
153
-        <div class="title">项目管理部安排
153
+        <div class="title">项目安排
154 154
           <div class="line"></div>
155 155
         </div>
156 156
         <div class="info mt20">
157
-          <el-descriptions class="descriptions" border :column="4" style="text-align: center;">
157
+          <el-descriptions class="descriptions" border :column="2" style="text-align: center;">
158 158
             <el-descriptions-item>
159 159
               <template slot="label">
160 160
                 <svg-icon slot="prefix" icon-class="dept" />
161 161
                 承担部门
162 162
               </template>
163
-              {{ project.undertakingDeptName }}
163
+              <div style="display: flex;">
164
+                <div>{{ getDeptNames(project.undertakingDept) }}</div>
165
+                <div>
166
+                  <el-button class="ml20" type="success" plain size="mini" icon="el-icon-refresh"
167
+                    @click="deptOpen = true" v-hasPermi="['oa:project:edit']">
168
+                    更换部门
169
+                  </el-button>
170
+                </div>
171
+              </div>
172
+
164 173
             </el-descriptions-item>
165 174
             <el-descriptions-item>
166 175
               <template slot="label">
@@ -174,10 +183,10 @@
174 183
                 <svg-icon slot="prefix" icon-class="user" />
175 184
                 项目负责人
176 185
               </template>
177
-              <div style="display: flex;justify-content:space-between;">
186
+              <div style="display: flex;">
178 187
                 <div>{{ project.projectLeaderUser ? project.projectLeaderUser.nickName : "" }}</div>
179 188
                 <div>
180
-                  <el-button class="ml20" type="warning" plain size="mini" icon="el-icon-plus"
189
+                  <el-button class="ml20" type="success" plain size="mini" icon="el-icon-refresh"
181 190
                     @click="prLeaderOpen = true" v-hasPermi="['oa:project:edit']">
182 191
                     更换项目负责人
183 192
                   </el-button>
@@ -191,7 +200,7 @@
191 200
               </template>
192 201
               {{ getUserName(project.siteLeader) }}
193 202
             </el-descriptions-item>
194
-            <el-descriptions-item>
203
+            <el-descriptions-item :span="3">
195 204
               <template slot="label">
196 205
                 <svg-icon slot="prefix" icon-class="form" />
197 206
                 项目预算编制
@@ -199,7 +208,7 @@
199 208
               <!-- v-hasPermi="['oa:project:edit']" -->
200 209
               <el-link type="primary" @click="openBudget = true">项目预算表</el-link>
201 210
             </el-descriptions-item>
202
-            <el-descriptions-item>
211
+            <!-- <el-descriptions-item>
203 212
               <template slot="label">
204 213
                 <svg-icon slot="prefix" icon-class="date" />
205 214
                 组织交底时间
@@ -220,13 +229,13 @@
220 229
                   <span class="el-icon-download">下载文件</span>
221 230
                 </el-link>
222 231
               </div>
223
-            </el-descriptions-item>
232
+            </el-descriptions-item> -->
224 233
           </el-descriptions>
225 234
         </div>
226 235
       </div>
227 236
       <!-- 技术质量部安排 -->
228 237
       <div class="box1 mt20">
229
-        <div class="title">技术质量部安排
238
+        <div class="title">技术安排
230 239
           <div class="line"></div>
231 240
         </div>
232 241
         <div class="info mt20">
@@ -279,8 +288,8 @@
279 288
                 <el-input disabled type="textarea" v-model="projectComment.jyComment"></el-input>
280 289
                 <div class="sign mt10">
281 290
                   <div class="mr20">签名:<span class="auditor">{{ projectComment.jyUser ? projectComment.jyUser.nickName :
282
-                    ''
283
-                  }}</span>
291
+        ''
292
+                      }}</span>
284 293
                   </div>
285 294
                   <div class="ml20"><span>审核时间:{{ projectComment.jyApprovalTime }}</span></div>
286 295
                 </div>
@@ -295,7 +304,7 @@
295 304
                 <el-input disabled type="textarea" v-model="projectComment.manageComment"></el-input>
296 305
                 <div class="sign mt10">
297 306
                   <div class="mr20">签名:<span class="auditor">{{ projectComment.managerUser ?
298
-                    projectComment.managerUser.nickName : '' }}</span>
307
+        projectComment.managerUser.nickName : '' }}</span>
299 308
                   </div>
300 309
                   <div class="ml20"><span>审核时间:{{ projectComment.manageApprovalTime }}</span></div>
301 310
                 </div>
@@ -346,7 +355,7 @@
346 355
               </template>
347 356
               <el-select v-model="devices" multiple disabled style="width:100%">
348 357
                 <el-option v-for="item in deviceList" :key="item.deviceId" :label="item.name + '【' + (item.brand != null ? item.brand : '') + (item.series != null ? '-' + item.series + '】' : '')
349
-                  + (item.code != null ? '(设备编号:' + item.code + ')' : '') + '📍' + item.place" :value="item.deviceId">
358
+        + (item.code != null ? '(设备编号:' + item.code + ')' : '') + '📍' + item.place" :value="item.deviceId">
350 359
                 </el-option>
351 360
               </el-select>
352 361
             </el-descriptions-item>
@@ -449,6 +458,24 @@
449 458
     <el-dialog title="更换项目负责人" :visible.sync="prLeaderOpen" width="1000px" append-to-body>
450 459
       <choose-people :multiple="false" @chooseUser="changeProjectLeader"></choose-people>
451 460
     </el-dialog>
461
+    <el-dialog title="更换承担部门" :visible.sync="deptOpen" width="1000px" append-to-body>
462
+      <el-form>
463
+        <el-form-item label="当前承担部门:">
464
+          {{ getDeptNames(project.undertakingDept) }}
465
+        </el-form-item>
466
+        <el-form-item label="更换承担部门:">
467
+          <el-select v-model="undertakingDept" multiple clearable style="width:80%">
468
+            <el-option v-for="item in $store.state.user.deptList" :key="item.deptId" :label="item.deptName"
469
+              :value="item.deptId">
470
+            </el-option>
471
+          </el-select>
472
+        </el-form-item>
473
+      </el-form>
474
+      <div class="text-center">
475
+        <el-button type="primary" @click="changeUndertakingDept">确定</el-button>
476
+        <el-button @click="deptOpen = false">取消</el-button>
477
+      </div>
478
+    </el-dialog>
452 479
   </div>
453 480
 </template>
454 481
 
@@ -508,6 +535,7 @@ export default {
508 535
       openSafe: false,
509 536
       openTech: false,
510 537
       prLeaderOpen: false,
538
+      deptOpen: false,
511 539
       taskForm: {
512 540
         formId: ''
513 541
       },
@@ -515,7 +543,8 @@ export default {
515 543
       devices: [],
516 544
       cars: [],
517 545
       drivers: [],
518
-      participates: []
546
+      participates: [],
547
+      undertakingDept: []
519 548
     }
520 549
   },
521 550
   methods: {
@@ -651,7 +680,7 @@ export default {
651 680
     changeProjectLeader(val) {
652 681
       let preLeader = this.getUserName(this.project.projectLeader);
653 682
       let curLeader = val.nickName;
654
-      this.$confirm('项目负责人将由' + preLeader + '变更为' + curLeader + ',是否确认', '提示', {
683
+      this.$confirm('项目负责人将由 [' + preLeader + '] 变更为 [' + curLeader + '] ,是否确认', '提示', {
655 684
         confirmButtonText: '确定',
656 685
         cancelButtonText: '取消',
657 686
         type: 'warning'
@@ -664,6 +693,24 @@ export default {
664 693
           this.$router.go(0);
665 694
         })
666 695
       }).catch(() => { });
696
+    },
697
+    changeUndertakingDept() {
698
+      let deptIds = this.undertakingDept.join(',');
699
+      let currentDept = this.getDeptNames(deptIds);
700
+      let preDept = this.getDeptNames(this.project.undertakingDept);
701
+      this.$confirm('承担部门将由 [' + preDept + '] 变更为 [' + currentDept + '] ,是否确认', '提示', {
702
+        confirmButtonText: '确定',
703
+        cancelButtonText: '取消',
704
+        type: 'warning'
705
+      }).then(() => {
706
+        updateProject(
707
+          { projectId: this.project.projectId, undertakingDept: deptIds }
708
+        ).then(res => {
709
+          this.$message.success('承担部门修改成功');
710
+          this.deptOpen = false;
711
+          this.$router.go(0);
712
+        })
713
+      })
667 714
     }
668 715
   },
669 716
 }

+ 53
- 67
oa-ui/src/views/oa/safe/request.vue 파일 보기

@@ -1,6 +1,13 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="128px">
4
+      <el-form-item label="安全提示类型">
5
+        <el-select v-model="queryParams.safeType" clearable placeholder="请选择" @change="handleQuery">
6
+          <el-option label="环境管理要求" value="0"></el-option>
7
+          <el-option label="安全生产与职业健康要求" value="1"></el-option>
8
+          <el-option label="信息安全管理要求" value="2"></el-option>
9
+        </el-select>
10
+      </el-form-item>
4 11
       <el-form-item>
5 12
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
6 13
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -9,88 +16,55 @@
9 16
 
10 17
     <el-row :gutter="10" class="mb8">
11 18
       <el-col :span="1.5">
12
-        <el-button
13
-          type="primary"
14
-          plain
15
-          icon="el-icon-plus"
16
-          size="mini"
17
-          @click="handleAdd"
18
-          v-hasPermi="['oa:safe:add']"
19
-        >新增</el-button>
19
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
20
+          v-hasPermi="['oa:safe:add']">新增</el-button>
20 21
       </el-col>
21 22
       <el-col :span="1.5">
22
-        <el-button
23
-          type="success"
24
-          plain
25
-          icon="el-icon-edit"
26
-          size="mini"
27
-          :disabled="single"
28
-          @click="handleUpdate"
29
-          v-hasPermi="['oa:safe:edit']"
30
-        >修改</el-button>
23
+        <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
24
+          v-hasPermi="['oa:safe:edit']">修改</el-button>
31 25
       </el-col>
32 26
       <el-col :span="1.5">
33
-        <el-button
34
-          type="danger"
35
-          plain
36
-          icon="el-icon-delete"
37
-          size="mini"
38
-          :disabled="multiple"
39
-          @click="handleDelete"
40
-          v-hasPermi="['oa:safe:remove']"
41
-        >删除</el-button>
27
+        <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
28
+          v-hasPermi="['oa:safe:remove']">删除</el-button>
42 29
       </el-col>
43 30
       <el-col :span="1.5">
44
-        <el-button
45
-          type="warning"
46
-          plain
47
-          icon="el-icon-download"
48
-          size="mini"
49
-          @click="handleExport"
50
-          v-hasPermi="['oa:safe:export']"
51
-        >导出</el-button>
31
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
32
+          v-hasPermi="['oa:safe:export']">导出</el-button>
52 33
       </el-col>
53 34
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
54 35
     </el-row>
55 36
 
56 37
     <el-table v-loading="loading" :data="safeRequestList" @selection-change="handleSelectionChange">
57 38
       <el-table-column type="selection" width="55" align="center" />
58
-      <el-table-column label="常用要求id" align="center" prop="requestId" />
59
-      <el-table-column label="安全提示类型" align="center" prop="safeType" />
60
-      <el-table-column label="内容" align="center" prop="content" />
39
+      <el-table-column label="序号" width="55" align="center" prop="requestId" />
40
+      <el-table-column label="安全提示类型" align="center" prop="safeType" :formatter="formatterLabel" />
41
+      <el-table-column label="内容" prop="content" />
61 42
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
62 43
         <template slot-scope="scope">
63
-          <el-button
64
-            size="mini"
65
-            type="text"
66
-            icon="el-icon-edit"
67
-            @click="handleUpdate(scope.row)"
68
-            v-hasPermi="['oa:safe:edit']"
69
-          >修改</el-button>
70
-          <el-button
71
-            size="mini"
72
-            type="text"
73
-            icon="el-icon-delete"
74
-            @click="handleDelete(scope.row)"
75
-            v-hasPermi="['oa:safe:remove']"
76
-          >删除</el-button>
44
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
45
+            v-hasPermi="['oa:safe:edit']">修改</el-button>
46
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
47
+            v-hasPermi="['oa:safe:remove']">删除</el-button>
77 48
         </template>
78 49
       </el-table-column>
79 50
     </el-table>
80
-    
81
-    <pagination
82
-      v-show="total>0"
83
-      :total="total"
84
-      :page.sync="queryParams.pageNum"
85
-      :limit.sync="queryParams.pageSize"
86
-      @pagination="getList"
87
-    />
51
+
52
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
53
+      @pagination="getList" />
88 54
 
89 55
     <!-- 添加或修改cmc安全要求对话框 -->
90 56
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
91
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
57
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
58
+        <el-form-item label="安全提示类型">
59
+          <el-select v-model="form.safeType" clearable placeholder="请选择" @change="handleQuery">
60
+          <el-option label="环境管理要求" value="0"></el-option>
61
+          <el-option label="安全生产与职业健康要求" value="1"></el-option>
62
+          <el-option label="信息安全管理要求" value="2"></el-option>
63
+        </el-select>
64
+        </el-form-item>
92 65
         <el-form-item label="内容">
93
-          <editor v-model="form.content" :min-height="192"/>
66
+          <!-- <editor v-model="form.content" :min-height="192" /> -->
67
+          <el-input type="textarea" v-model="form.content" :autosize="{ minRows: 4}"></el-input>
94 68
         </el-form-item>
95 69
       </el-form>
96 70
       <div slot="footer" class="dialog-footer">
@@ -180,14 +154,14 @@ export default {
180 154
     // 多选框选中数据
181 155
     handleSelectionChange(selection) {
182 156
       this.ids = selection.map(item => item.requestId)
183
-      this.single = selection.length!==1
157
+      this.single = selection.length !== 1
184 158
       this.multiple = !selection.length
185 159
     },
186 160
     /** 新增按钮操作 */
187 161
     handleAdd() {
188 162
       this.reset();
189 163
       this.open = true;
190
-      this.title = "添加cmc安全要求";
164
+      this.title = "添加安全要求";
191 165
     },
192 166
     /** 修改按钮操作 */
193 167
     handleUpdate(row) {
@@ -196,7 +170,7 @@ export default {
196 170
       getSafeRequest(requestId).then(response => {
197 171
         this.form = response.data;
198 172
         this.open = true;
199
-        this.title = "修改cmc安全要求";
173
+        this.title = "修改安全要求";
200 174
       });
201 175
     },
202 176
     /** 提交按钮 */
@@ -222,18 +196,30 @@ export default {
222 196
     /** 删除按钮操作 */
223 197
     handleDelete(row) {
224 198
       const requestIds = row.requestId || this.ids;
225
-      this.$modal.confirm('是否确认删除cmc安全要求编号为"' + requestIds + '"的数据项?').then(function() {
199
+      this.$modal.confirm('是否确认删除cmc安全要求编号为"' + requestIds + '"的数据项?').then(function () {
226 200
         return delSafeRequest(requestIds);
227 201
       }).then(() => {
228 202
         this.getList();
229 203
         this.$modal.msgSuccess("删除成功");
230
-      }).catch(() => {});
204
+      }).catch(() => { });
231 205
     },
232 206
     /** 导出按钮操作 */
233 207
     handleExport() {
234 208
       this.download('oa/safeRequest/export', {
235 209
         ...this.queryParams
236 210
       }, `safeRequest_${new Date().getTime()}.xlsx`)
211
+    },
212
+    formatterLabel(row){
213
+      console.log(row);
214
+      switch (row.safeType){
215
+        case '0':
216
+          return '环境管理要求'
217
+        case '1':
218
+          return '安全生产与职业健康要求'
219
+        case '2':
220
+          return '信息安全管理要求'
221
+      }
222
+         
237 223
     }
238 224
   }
239 225
 };

Loading…
취소
저장