Browse Source

修改项目信息

余思翰 1 year ago
parent
commit
da6fee9b31
1 changed files with 200 additions and 17 deletions
  1. 200
    17
      oa-ui/src/views/oa/project/index.vue

+ 200
- 17
oa-ui/src/views/oa/project/index.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-02-27 14:49:15
3
  * @Date: 2024-02-27 14:49:15
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-02-27 17:12:57
5
+ * @LastEditTime: 2024-02-28 17:02:43
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="project-wrapper">
8
   <div class="project-wrapper">
26
       </el-form>
26
       </el-form>
27
     </el-row>
27
     </el-row>
28
     <!-- 项目统计 -->
28
     <!-- 项目统计 -->
29
-    <el-row>
29
+    <!-- <el-row>
30
       <el-col>
30
       <el-col>
31
         <el-row :gutter="10">
31
         <el-row :gutter="10">
32
           <el-col :span="8">
32
           <el-col :span="8">
58
           </el-col>
58
           </el-col>
59
         </el-row>
59
         </el-row>
60
       </el-col>
60
       </el-col>
61
-    </el-row>
61
+    </el-row> -->
62
     <!-- 项目列表 -->
62
     <!-- 项目列表 -->
63
     <el-card style="margin-top: 20px;">
63
     <el-card style="margin-top: 20px;">
64
       <div slot="header" class="card-header">
64
       <div slot="header" class="card-header">
68
             @click="handleAdd">新增项目</el-button>
68
             @click="handleAdd">新增项目</el-button>
69
         </div>
69
         </div>
70
       </div>
70
       </div>
71
-      <el-table v-loading="loading" :data="projectList" style="margin-top: 30px;" header-row-class-name="table-header">
71
+      <el-table v-loading="loading" :data="projectList" style="margin-top: 30px;">
72
         <el-table-column type="index" width="50">
72
         <el-table-column type="index" width="50">
73
         </el-table-column>
73
         </el-table-column>
74
         <el-table-column prop="isFinshed" label="状态" width="90px">
74
         <el-table-column prop="isFinshed" label="状态" width="90px">
94
         @pagination="getList" />
94
         @pagination="getList" />
95
     </el-card>
95
     </el-card>
96
     <!-- 新建项目 -->
96
     <!-- 新建项目 -->
97
-    <el-dialog :title="title" :visible.sync="addOpen" :rules="rules" append-to-body>
98
-      <el-form :model="addForm" label-width="100px">
97
+    <el-dialog :title="title" :visible.sync="addOpen" append-to-body>
98
+      <el-form :model="addForm" :rules="rules" label-width="100px">
99
         <el-form-item label="项目编号:" prop="projectNumber">
99
         <el-form-item label="项目编号:" prop="projectNumber">
100
           <el-input v-model="addForm.projectNumber"></el-input>
100
           <el-input v-model="addForm.projectNumber"></el-input>
101
         </el-form-item>
101
         </el-form-item>
102
         <el-form-item label="项目名称:" prop="projectName">
102
         <el-form-item label="项目名称:" prop="projectName">
103
           <el-input v-model="addForm.projectName"></el-input>
103
           <el-input v-model="addForm.projectName"></el-input>
104
         </el-form-item>
104
         </el-form-item>
105
-        <el-form-item label="项目负责人:" prop="projectNumber">
106
-          <el-button type="primary" plain icon="el-icon-plus" size="mini">选择</el-button>
105
+        <el-form-item label="项目负责人:" prop="projectLeader">
106
+          <el-tag effect="plain" type="warning" style="margin-right: 10px;"
107
+            v-if="addForm.projectLeaderName != undefined">{{ addForm.projectLeaderName }}</el-tag>
108
+          <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="choosePeople">选择</el-button>
109
+        </el-form-item>
110
+        <el-form-item label="项目类型:" prop="projectType">
111
+          <el-input v-model="addForm.projectType"></el-input>
112
+        </el-form-item>
113
+        <el-form-item label="项目级别:" prop="projectLevel">
114
+          <el-radio v-model="addForm.projectLevel" label="0">一般项目</el-radio>
115
+          <el-radio v-model="addForm.projectLevel" label="1">重大项目</el-radio>
116
+        </el-form-item>
117
+        <el-form-item label="项目来源:" prop="projectSource">
118
+          <el-radio v-model="addForm.projectSource" label="0">院内</el-radio>
119
+          <el-radio v-model="addForm.projectSource" label="1">院外</el-radio>
107
         </el-form-item>
120
         </el-form-item>
121
+        <el-form-item label="甲方单位:" prop="partyA">
122
+          <el-input v-model="addForm.partyA"></el-input>
123
+        </el-form-item>
124
+        <el-form-item label="联系人:" prop="contactPerson">
125
+          <el-input v-model="addForm.contactPerson"></el-input>
126
+        </el-form-item>
127
+        <el-form-item label="联系电话:" prop="telephone">
128
+          <el-input v-model="addForm.telephone"></el-input>
129
+        </el-form-item>
130
+        <el-form-item label="项目概况:" prop="projectRegistrant">
131
+          <table border="1">
132
+            <tr>
133
+              <td style="width:250px;">工作内容</td>
134
+              <td>等级或比例尺</td>
135
+              <td>单位</td>
136
+              <td>工作量</td>
137
+              <td style="width:100px;">要求完成时间</td>
138
+              <td>备注</td>
139
+            </tr>
140
+            <tr v-for="(work, index) in workList" :key="index">
141
+              <td>
142
+                <el-input v-model="work.name" type="textarea" autosize clearable></el-input>
143
+              </td>
144
+              <td>
145
+                <el-input v-model="work.scale" clearable></el-input>
146
+              </td>
147
+              <td>
148
+                <el-input v-model="work.unit" clearable></el-input>
149
+              </td>
150
+              <td>
151
+                <el-input v-model="work.workload" clearable></el-input>
152
+              </td>
153
+              <td>
154
+                <!-- <el-input v-model="work.deadline" clearable></el-input> -->
155
+                <el-date-picker style="width:140px;" v-model="work.deadline" type="date" placeholder="选择日期">
156
+                </el-date-picker>
157
+              </td>
158
+              <td>
159
+                <el-input v-model="work.remark" type="textarea" autosize clearable></el-input>
160
+              </td>
161
+              <td>
162
+                <el-button type="danger" icon="el-icon-minus" size="mini" circle
163
+                  @click="deletWorkItem(index)"></el-button>
164
+              </td>
165
+            </tr>
166
+          </table>
167
+
168
+          <el-button icon="el-icon-plus" size="mini" @click="addWorkList"></el-button>
169
+        </el-form-item>
170
+
171
+        <el-form-item label="项目登记人:" prop="projectRegistrant">
172
+          <el-input v-model="addForm.projectRegistrant"></el-input>
173
+        </el-form-item>
174
+
175
+
108
       </el-form>
176
       </el-form>
109
       <div slot="footer" class="dialog-footer" style="text-align: center;">
177
       <div slot="footer" class="dialog-footer" style="text-align: center;">
110
         <el-button type="primary" @click="confirmAddForm">确 定</el-button>
178
         <el-button type="primary" @click="confirmAddForm">确 定</el-button>
111
-        <el-button @click="addOpen = false">取 消</el-button>
179
+        <el-button @click="cancel">取 消</el-button>
112
       </div>
180
       </div>
181
+      <!-- 人员选择对话框 -->
182
+      <el-dialog width="30%" title="选择项目负责人" :visible.sync="peopleVisible" append-to-body>
183
+        <el-form>
184
+          <el-form-item label="部门:">
185
+            <el-select v-model="peopleForm.deptId" @change="handleChangeDept">
186
+              <el-option v-for="item in peopleForm.deptList" :key="item.deptId" :label="item.deptName"
187
+                :value="item.deptId" v-if="item.deptName != '四川中水成勘院测绘工程有限责任公司'">
188
+              </el-option>
189
+            </el-select>
190
+          </el-form-item>
191
+          <el-form-item label="人员:">
192
+            <el-select v-model="peopleForm.userId">
193
+              <el-option v-for="item in peopleForm.userList" :key="item.userId" :label="item.nickName"
194
+                :value="item.userId">
195
+              </el-option>
196
+            </el-select>
197
+          </el-form-item>
198
+          <el-form-item>
199
+            <el-button @click="confirmPeople" type="primary">确定</el-button>
200
+            <el-button>取消</el-button>
201
+          </el-form-item>
202
+        </el-form>
203
+      </el-dialog>
113
     </el-dialog>
204
     </el-dialog>
114
   </div>
205
   </div>
115
 </template>
206
 </template>
116
 
207
 
117
 <script>
208
 <script>
118
 import { listProject } from "@/api/oa/project/project";
209
 import { listProject } from "@/api/oa/project/project";
119
-
210
+import { listDept } from '@/api/system/dept'
211
+import { listUser } from '@/api/system/user'
120
 export default {
212
 export default {
121
   data() {
213
   data() {
122
     return {
214
     return {
124
       queryParams: {
216
       queryParams: {
125
         pageNum: 1,
217
         pageNum: 1,
126
         pageSize: 10,
218
         pageSize: 10,
127
-        projectNumber: undefined,
128
-        projectLeader: undefined,
129
-        projectName: undefined,
219
+        projectNumber: '',
220
+        projectLeader: '',
221
+        projectLeaderName: undefined,
222
+        projectName: '',
130
       },
223
       },
131
       projectList: [],
224
       projectList: [],
132
       total: 0,
225
       total: 0,
135
       title: '',
228
       title: '',
136
       addForm: {},
229
       addForm: {},
137
       rules: {
230
       rules: {
138
-        projectNumber: [{ required: true, message: '请输入项目编号', trigger: 'blur' }]
139
-      }
231
+        projectNumber: [{ required: true, message: '请输入项目编号', trigger: 'blur' }],
232
+        projectName: [{ required: true, message: '请输入项目名称', trigger: 'blur' }]
233
+      },
234
+      peopleVisible: false,
235
+      peopleForm: {
236
+        deptId: '',
237
+        deptList: [],
238
+        userId: '',
239
+        userList: []
240
+      },
241
+      workList: [{
242
+        name: '',
243
+        scale: '',
244
+        unit: '',
245
+        workload: '',
246
+        deadline: '',
247
+        remark: ''
248
+      }]
140
     }
249
     }
141
   },
250
   },
142
   created() {
251
   created() {
143
     this.getList();
252
     this.getList();
253
+    this.getDeptList();
144
   },
254
   },
145
   methods: {
255
   methods: {
146
     // 查询项目列表
256
     // 查询项目列表
147
     getList() {
257
     getList() {
148
       this.loading = true
258
       this.loading = true
149
-      listProject(this.queryForm).then(response => {
259
+      listProject(this.queryParams).then(response => {
150
         this.projectList = response.rows;
260
         this.projectList = response.rows;
151
         this.total = response.total;
261
         this.total = response.total;
152
         this.loading = false;
262
         this.loading = false;
153
       })
263
       })
154
     },
264
     },
265
+    getDeptList() {
266
+      listDept({
267
+        deptName: undefined,
268
+        status: undefined
269
+      }).then(res => {
270
+        this.peopleForm.deptList = res.data
271
+      })
272
+    },
155
     handleQuery() {
273
     handleQuery() {
156
       this.queryParams.pageNum = 1;
274
       this.queryParams.pageNum = 1;
157
       this.getList();
275
       this.getList();
166
     handleDelete(row) {
284
     handleDelete(row) {
167
 
285
 
168
     },
286
     },
169
-    confirmAddForm(){
287
+    confirmAddForm() {
170
 
288
 
289
+    },
290
+    // 人员选择
291
+    choosePeople() {
292
+      this.peopleVisible = true;
293
+    },
294
+    // 改变部门选择
295
+    handleChangeDept(deptId) {
296
+      this.peopleForm.userId = '';
297
+      listUser({ pageSize: 999999, deptId }).then(res => {
298
+        console.log(res);
299
+        this.peopleForm.userList = res.rows
300
+      })
301
+    },
302
+    // 确定项目负责人
303
+    confirmPeople() {
304
+      this.addForm.projectLeader = this.peopleForm.userId;
305
+      this.addForm.projectLeaderName = this.tagLeader()
306
+      this.peopleVisible = false
307
+    },
308
+    tagLeader() {
309
+      if (this.addForm.projectLeader == '' || this.addForm.projectLeader == undefined || this.addForm.projectLeader == null) {
310
+        return undefined
311
+      } else {
312
+        for (let user of this.peopleForm.userList) {
313
+          if (this.addForm.projectLeader == user.userId) {
314
+            return user.nickName
315
+          }
316
+        }
317
+      }
318
+    },
319
+    cancel() {
320
+      this.peopleForm.deptId = '';
321
+      this.peopleForm.userId = '';
322
+      this.addOpen = false;
323
+      this.addForm = {}
324
+    },
325
+    addWorkList() {
326
+      this.workList.push({
327
+        name: '',
328
+        scale: '',
329
+        unit: '',
330
+        workload: '',
331
+        deadline: '',
332
+        remark: ''
333
+      });
334
+    },
335
+    deletWorkItem(index) {
336
+      let arr = this.workList
337
+      if (arr.length == 1) {
338
+        return
339
+      }
340
+      if (index >= 0 && index < arr.length) {
341
+        arr.splice(index, 1);
342
+      }
171
     }
343
     }
172
   },
344
   },
173
 }
345
 }
187
   justify-content: space-between;
359
   justify-content: space-between;
188
   padding: 0 10px;
360
   padding: 0 10px;
189
 }
361
 }
362
+
363
+table {
364
+  /*居中*/
365
+  margin: 0 auto;
366
+  /*边框*/
367
+  /* border: 1px solid black; */
368
+  text-align: center;
369
+  border-collapse: collapse;
370
+  /*设置背景颜色*/
371
+  /* background-color: #bfa; */
372
+}
190
 </style>
373
 </style>

Loading…
Cancel
Save