瀏覽代碼

新增测绘项目台账,合同编码列,以及关联合同按钮

余思翰 3 月之前
父節點
當前提交
e7b0552dba

+ 2
- 1
oa-ui/src/views/flowable/form/components/chooseContract.vue 查看文件

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-05-22 11:12:57
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-09-05 14:08:32
5
+ * @LastEditTime: 2025-02-21 10:03:23
6 6
 -->
7 7
 <template>
8 8
   <div>
@@ -28,6 +28,7 @@
28 28
     <el-table ref="choosePContract" v-loading="loading" :data="contractList" highlight-current-row
29 29
       @current-change="handleCurrentChange" :row-key="getRowKeys" @row-dblclick="confirmChoose" @row-click="selectRow">
30 30
       <el-table-column label="序号" align="center" type="index" width="55" />
31
+      <el-table-column label="关联项目" align="center" prop="project.projectName"/>
31 32
       <el-table-column label="合同名称" align="center" key="contractName" prop="contractName" min-width="100px" />
32 33
       <el-table-column label="合同编码" align="center" key="contractCode" prop="contractCode" />
33 34
       <el-table-column label="合同编号" align="center" prop="contractNumber" min-width="100px" />

+ 20
- 9
oa-ui/src/views/flowable/task/todo/index.vue 查看文件

@@ -10,6 +10,9 @@
10 10
           placeholder="选择时间">
11 11
         </el-date-picker>
12 12
       </el-form-item>
13
+      <el-form-item label="标题">
14
+        <el-input v-model="searchText" size="small"  @input="filterTitle()" clearable placeholder="仅搜索当前页面标题"></el-input>
15
+      </el-form-item>
13 16
       <el-form-item>
14 17
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
15 18
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -17,15 +20,10 @@
17 20
     </el-form>
18 21
 
19 22
     <el-row :gutter="10" class="mb8">
20
-      <el-col :span="1.5">
21
-        <!-- <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
22
-          v-hasPermi="['system:deployment:remove']">删除
23
-        </el-button> -->
24
-      </el-col>
25 23
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
26 24
     </el-row>
27 25
 
28
-    <el-table v-if="dataShow" v-loading="loading" :data="todoList" border @selection-change="handleSelectionChange">
26
+    <el-table v-if="dataShow" v-loading="loading" :data="filterList" border @selection-change="handleSelectionChange">
29 27
       <el-table-column type="index" label="序号" width="55" align="center" />
30 28
       <!-- <el-table-column label="任务编号" align="center" prop="taskId" :show-overflow-tooltip="true" /> -->
31 29
       <el-table-column label="流程名称" align="center" prop="procDefName" />
@@ -39,18 +37,20 @@
39 37
       <el-table-column label="流程发起人" align="center">
40 38
         <template slot-scope="scope">
41 39
           <label>{{ scope.row.startUserName }} <el-tag type="info" size="mini">{{ scope.row.startDeptName
42
-          }}</el-tag></label>
40
+              }}</el-tag></label>
43 41
         </template>
44 42
       </el-table-column>
45 43
       <el-table-column label="接收时间" align="center" prop="createTime" width="180" />
46 44
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160">
47 45
         <template slot-scope="scope">
48
-          <el-button size="mini" type="text" icon="el-icon-edit-outline" @click="handleProcess(scope.row)">处理</el-button>
46
+          <el-button size="mini" type="text" icon="el-icon-edit-outline"
47
+            @click="handleProcess(scope.row)">处理</el-button>
49 48
           <el-button size="mini" type="text" icon="el-icon-share" @click="handleAssign(scope.row)">转办</el-button>
50 49
         </template>
51 50
       </el-table-column>
52 51
     </el-table>
53 52
 
53
+    <div class="mt20" style="font-size:12px;color:#e45656;text-align:right;">tips:标题搜索只搜索当前页码列表,可在右下角调整每页条数,若当前页面未查询到,可点击下一页;</div>
54 54
     <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
55 55
       @pagination="getList" />
56 56
     <!--选择流程接收人-->
@@ -92,6 +92,7 @@ export default {
92 92
       total: 0,
93 93
       // 流程待办任务表格数据
94 94
       todoList: [],
95
+      filterList: [],
95 96
       // 弹出层标题
96 97
       title: "",
97 98
       // 是否显示弹出层
@@ -103,6 +104,7 @@ export default {
103 104
         name: null,
104 105
         category: null
105 106
       },
107
+      searchText: '',
106 108
       // 表单参数
107 109
       form: {},
108 110
       // 表单校验
@@ -113,7 +115,7 @@ export default {
113 115
       checkSendUser: false, // 是否展示人员选择模块
114 116
       checkType: '', // 选择类型
115 117
       checkValues: null, // 选中任务接收人员数据
116
-      taskId: ''
118
+      taskId: '',
117 119
     };
118 120
   },
119 121
   created() {
@@ -125,10 +127,19 @@ export default {
125 127
       this.loading = true;
126 128
       todoList(this.queryParams).then(response => {
127 129
         this.todoList = response.data.records;
130
+        this.filterList = response.data.records;
128 131
         this.total = response.data.total;
132
+        this.filterTitle();
129 133
         this.loading = false;
130 134
       });
131 135
     },
136
+    filterTitle() {
137
+      this.filterList = this.todoList.filter(data => {
138
+        if (data.title) {
139
+          return !this.searchText || data.title.toLowerCase().includes(this.searchText.toLowerCase())
140
+        }
141
+      })
142
+    },
132 143
     getProjectInfo(row) {
133 144
       getProcessVariables(row.taskId).then(res => {
134 145
         if (res.data) {

+ 33
- 119
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: 2025-01-07 15:34:38
5
+ * @LastEditTime: 2025-02-21 10:20:56
6 6
 -->
7 7
 <template>
8 8
   <div class="project-wrapper">
@@ -72,8 +72,9 @@
72 72
               :percentage="scope.row.percentage" text-color="#fff"></el-progress>
73 73
           </template>
74 74
         </el-table-column>
75
-        <el-table-column label="项目编号" align="center" key="projectNumber" prop="projectNumber" width="120px" sortable  />
75
+        <el-table-column label="项目编号" align="center" key="projectNumber" prop="projectNumber" width="120px" sortable />
76 76
         <el-table-column label="项目名称" align="center" key="projectName" prop="projectName" sortable />
77
+        <el-table-column label="合同编码" align="center" prop="contract.contractCode" sortable />
77 78
         <el-table-column label="承担部门" align="center" key="undertakingDeptName" prop="undertakingDeptName" sortable />
78 79
         <el-table-column label="项目负责人" align="center" key="projectLeaderName" prop="projectLeaderUser.nickName" sortable
79 80
           width="120px" />
@@ -90,126 +91,18 @@
90 91
           <template slot-scope="scope" v-if="scope.row.userId !== 1">
91 92
             <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"
92 93
               v-hasPermi="['oa:project:query']">查看</el-button>
93
-            <!-- <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
94
-              v-hasPermi="['oa:project:edit']">修改</el-button> -->
95 94
             <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
96 95
               v-hasPermi="['oa:project:remove']">删除</el-button>
96
+            <el-button size="mini" type="text" icon="el-icon-document" @click="handleRelate(scope.row)"
97
+              v-hasPermi="['oa:project:relate']">关联合同</el-button>
97 98
           </template>
98 99
         </el-table-column>
99 100
       </el-table>
100 101
       <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
101 102
         :autoScroll="false" @pagination="getList" />
102 103
     </el-card>
103
-    <!-- 新建项目 -->
104
-    <el-dialog :title="title" :visible.sync="addOpen" append-to-body>
105
-      <el-form :model="addForm" :rules="rules" label-width="100px">
106
-        <el-form-item label="项目编号:" prop="projectNumber">
107
-          <el-input v-model="addForm.projectNumber"></el-input>
108
-        </el-form-item>
109
-        <el-form-item label="项目名称:" prop="projectName">
110
-          <el-input v-model="addForm.projectName"></el-input>
111
-        </el-form-item>
112
-        <el-form-item label="项目负责人:" prop="projectLeader">
113
-          <el-tag effect="plain" type="warning" style="margin-right: 10px;"
114
-            v-if="addForm.projectLeaderName != undefined">{{
115
-        addForm.projectLeaderName }}</el-tag>
116
-          <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="choosePeople">选择</el-button>
117
-        </el-form-item>
118
-        <el-form-item label="项目类型:" prop="projectType">
119
-          <el-input v-model="addForm.projectType"></el-input>
120
-        </el-form-item>
121
-        <el-form-item label="项目级别:" prop="projectLevel">
122
-          <el-radio v-model="addForm.projectLevel" label="0">一般项目</el-radio>
123
-          <el-radio v-model="addForm.projectLevel" label="1">重大项目</el-radio>
124
-        </el-form-item>
125
-        <el-form-item label="项目来源:" prop="projectSource">
126
-          <el-radio v-model="addForm.projectSource" label="0">院内</el-radio>
127
-          <el-radio v-model="addForm.projectSource" label="1">院外</el-radio>
128
-        </el-form-item>
129
-        <el-form-item label="甲方单位:" prop="partyA">
130
-          <el-input v-model="addForm.partyA"></el-input>
131
-        </el-form-item>
132
-        <el-form-item label="联系人:" prop="contactPerson">
133
-          <el-input v-model="addForm.contactPerson"></el-input>
134
-        </el-form-item>
135
-        <el-form-item label="联系电话:" prop="telephone">
136
-          <el-input v-model="addForm.telephone"></el-input>
137
-        </el-form-item>
138
-        <el-form-item label="项目概况:" prop="projectRegistrant">
139
-          <table border="1">
140
-            <tr>
141
-              <td style="width:250px;">工作内容</td>
142
-              <td>等级或比例尺</td>
143
-              <td>单位</td>
144
-              <td>工作量</td>
145
-              <td style="width:100px;">要求完成时间</td>
146
-              <td>备注</td>
147
-            </tr>
148
-            <tr v-for="(work, index) in workList" :key="index">
149
-              <td>
150
-                <el-input v-model="work.content" type="textarea" autosize clearable></el-input>
151
-              </td>
152
-              <td>
153
-                <el-input v-model="work.scale" clearable></el-input>
154
-              </td>
155
-              <td>
156
-                <el-input v-model="work.unit" clearable></el-input>
157
-              </td>
158
-              <td>
159
-                <el-input v-model="work.workload" clearable></el-input>
160
-              </td>
161
-              <td>
162
-                <el-date-picker style="width:140px;" v-model="work.deadline" value-format="yyyy-MM-dd" type="date"
163
-                  placeholder="选择日期">
164
-                </el-date-picker>
165
-              </td>
166
-              <td>
167
-                <el-input v-model="work.remark" type="textarea" autosize clearable></el-input>
168
-              </td>
169
-              <td>
170
-                <el-button type="danger" icon="el-icon-minus" size="mini" circle
171
-                  @click="deletWorkItem(index)"></el-button>
172
-              </td>
173
-            </tr>
174
-          </table>
175
-
176
-          <el-button icon="el-icon-plus" size="mini" @click="addWorkList"></el-button>
177
-        </el-form-item>
178
-        <el-form-item label="项目登记人:" prop="projectRegistrant">
179
-          <el-input v-model="addForm.projectRegistrant"></el-input>
180
-        </el-form-item>
181
-        <el-form-item label="备注:" prop="projectRegistrant">
182
-          <el-input v-model="addForm.remark" type="textarea" rows="3"></el-input>
183
-        </el-form-item>
184
-
185
-      </el-form>
186
-      <div slot="footer" class="dialog-footer" style="text-align: center;">
187
-        <el-button type="primary" @click="confirmAddForm">确 定</el-button>
188
-        <el-button @click="cancel">取 消</el-button>
189
-      </div>
190
-      <!-- 人员选择对话框 -->
191
-      <el-dialog width="30%" title="选择项目负责人" :visible.sync="peopleVisible" append-to-body>
192
-        <el-form>
193
-          <el-form-item label="部门:">
194
-            <el-select v-model="peopleForm.deptId" @change="handleChangeDept">
195
-              <el-option v-for="item in peopleForm.deptList" :key="item.deptId" :label="item.deptName"
196
-                :value="item.deptId" v-if="item.deptName != '四川中水成勘院测绘工程有限责任公司'">
197
-              </el-option>
198
-            </el-select>
199
-          </el-form-item>
200
-          <el-form-item label="人员:">
201
-            <el-select v-model="peopleForm.userId">
202
-              <el-option v-for="item in peopleForm.userList" :key="item.userId" :label="item.nickName"
203
-                :value="item.userId">
204
-              </el-option>
205
-            </el-select>
206
-          </el-form-item>
207
-          <el-form-item>
208
-            <el-button @click="confirmPeople" type="primary">确定</el-button>
209
-            <el-button @click="cancelChoosePeople">取消</el-button>
210
-          </el-form-item>
211
-        </el-form>
212
-      </el-dialog>
104
+    <el-dialog title="关联合同" :visible.sync="relateOpen" width="60%" append-to-body>
105
+      <choose-contract @choose="confirmContract" @close="relateOpen = false"></choose-contract>
213 106
     </el-dialog>
214 107
   </div>
215 108
 </template>
@@ -217,6 +110,7 @@
217 110
 <script>
218 111
 import { listProject, listProjectFuzzy, submitProject, modifyProject, delProject } from "@/api/oa/project/project";
219 112
 import { listProjectProgress, getProjectProgress } from "@/api/oa/project/projectProgress";
113
+import { addProjectContract, delProjectContract } from "@/api/oa/contract/projectContract";
220 114
 import { listDept } from '@/api/system/dept';
221 115
 import { listUser, getUser } from '@/api/system/user';
222 116
 import { mapGetters } from 'vuex';
@@ -225,8 +119,10 @@ import { listDefinition } from "@/api/flowable/definition";
225 119
 import { definitionStart, flowXmlAndNode } from "@/api/flowable/definition";
226 120
 import { todoList, getNextFlowNodeByStart } from "@/api/flowable/todo";
227 121
 import { Snowflake } from '@/utils/snowFlake.js'
122
+import chooseContract from '@/views/flowable/form/components/chooseContract.vue';
228 123
 
229 124
 export default {
125
+  components: { chooseContract },
230 126
   name: 'Project',
231 127
   computed: {
232 128
     ...mapGetters(['deptId', 'userId'])
@@ -247,6 +143,7 @@ export default {
247 143
       total: 0,
248 144
       loading: true,
249 145
       addOpen: false,
146
+      relateOpen: false,
250 147
       modifyOpen: false,
251 148
       title: '',
252 149
       addForm: {},
@@ -348,10 +245,6 @@ export default {
348 245
       this.queryParams.pageNum = 1;
349 246
       this.getList();
350 247
     },
351
-    handleAdd() {
352
-      this.title = '新增项目'
353
-      this.addOpen = true
354
-    },
355 248
     handleView(row) {
356 249
       let id = row.projectId
357 250
       this.$router.push(
@@ -376,6 +269,27 @@ export default {
376 269
         this.$modal.msgSuccess("删除成功");
377 270
       }).catch(() => { });
378 271
     },
272
+    // 关联合同
273
+    handleRelate(row) {
274
+      this.relateOpen = true;
275
+      this.addForm = row
276
+    },
277
+    confirmContract(contract) {
278
+      const projectId = this.addForm.projectId;
279
+      let projectContract = {
280
+        projectId: projectId,
281
+        contractId: contract.contractId
282
+      }
283
+      if (!this.addForm.contract) {
284
+        addProjectContract(projectContract)
285
+      } else {
286
+        delProjectContract(this.addForm.contract.contractId).then(() => {
287
+          addProjectContract(projectContract)
288
+        });
289
+      }
290
+      this.getList();
291
+      this.relateOpen = false;
292
+    },
379 293
     confirmAddForm() {
380 294
       this.addForm.workList = this.workList;
381 295
       let formData = new FormData();
@@ -546,7 +460,7 @@ export default {
546 460
       }
547 461
       return path
548 462
     },
549
-    sortIsFinshed(a,b){
463
+    sortIsFinshed(a, b) {
550 464
       return Number(a.isFinished) - Number(b.isFinished)
551 465
     }
552 466
   },

+ 1
- 0
oa-ui/src/views/oa/project/invest.vue 查看文件

@@ -96,6 +96,7 @@
96 96
         </el-table-column>
97 97
         <el-table-column label="项目编号" align="center" key="projectNumber" prop="projectNumber" width="120px" />
98 98
         <el-table-column label="项目名称" align="center" key="projectName" prop="projectName" />
99
+        <el-table-column label="合同编码" align="center" prop="contract.contractCode" />
99 100
         <el-table-column label="承担部门" align="center" key="undertakingDeptName" prop="undertakingDeptName" />
100 101
         <el-table-column label="项目负责人" align="center" key="projectLeaderName" prop="projectLeaderUser.nickName"
101 102
           width="120px" />

Loading…
取消
儲存