浏览代码

新增全局deptList,修改文件在线预览

余思翰 1年前
父节点
当前提交
97b0b29690

+ 4
- 2
oa-ui/src/main.js 查看文件

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-01-03 09:23:11
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-06-04 15:11:48
5
+ * @LastEditTime: 2024-06-05 09:39:10
6 6
  */
7 7
 import Vue from 'vue'
8 8
 
@@ -24,7 +24,8 @@ import './assets/icons' // icon
24 24
 import './permission' // permission control
25 25
 import { getDicts } from "@/api/system/dict/data";
26 26
 import { getConfigKey } from "@/api/system/config";
27
-import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree, getUserName, getFileName, reviewWord } from "@/utils/ruoyi";
27
+import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, 
28
+  handleTree, getUserName, getFileName, reviewWord,getDeptName } from "@/utils/ruoyi";
28 29
 // 标题组件
29 30
 import RowTitle from '@/components/RowTitle'
30 31
 
@@ -65,6 +66,7 @@ Vue.prototype.download = download
65 66
 Vue.prototype.handleTree = handleTree
66 67
 Vue.prototype.publicData = publicData
67 68
 Vue.prototype.getUserName = getUserName
69
+Vue.prototype.getDeptName = getDeptName
68 70
 Vue.prototype.getFileName = getFileName
69 71
 Vue.prototype.reviewWord = reviewWord
70 72
 // 全局组件挂载

+ 18
- 10
oa-ui/src/store/modules/user.js 查看文件

@@ -1,5 +1,6 @@
1 1
 import { login, logout, getInfo } from '@/api/login'
2
-import { listUser} from '@/api/system/user'
2
+import { listUser } from '@/api/system/user'
3
+import { listDept } from '@/api/system/dept'
3 4
 import { getToken, setToken, removeToken } from '@/utils/auth'
4 5
 
5 6
 const user = {
@@ -8,11 +9,12 @@ const user = {
8 9
     id: '',
9 10
     name: '',
10 11
     avatar: '',
11
-    deptId:'',
12
-    deptName:'',
12
+    deptId: '',
13
+    deptName: '',
13 14
     roles: [],
14 15
     permissions: [],
15
-    userList:[],
16
+    userList: [],
17
+    deptList: []
16 18
   },
17 19
 
18 20
   mutations: {
@@ -25,10 +27,10 @@ const user = {
25 27
     SET_NAME: (state, name) => {
26 28
       state.name = name
27 29
     },
28
-    SET_DEPTID:(state, deptId) => {
30
+    SET_DEPTID: (state, deptId) => {
29 31
       state.deptId = deptId
30 32
     },
31
-    SET_DEPTNAME:(state, deptName) => {
33
+    SET_DEPTNAME: (state, deptName) => {
32 34
       state.deptName = deptName
33 35
     },
34 36
     SET_AVATAR: (state, avatar) => {
@@ -40,9 +42,12 @@ const user = {
40 42
     SET_PERMISSIONS: (state, permissions) => {
41 43
       state.permissions = permissions
42 44
     },
43
-    SET_USERLIST:(state, userList) => {
45
+    SET_USERLIST: (state, userList) => {
44 46
       state.userList = userList
45 47
     },
48
+    SET_DEPTLIST: (state, deptList) => {
49
+      state.deptList = deptList
50
+    },
46 51
   },
47 52
 
48 53
   actions: {
@@ -77,11 +82,14 @@ const user = {
77 82
           }
78 83
           commit('SET_ID', user.userId)
79 84
           commit('SET_NAME', user.nickName)
80
-          commit('SET_DEPTID',user.deptId)
81
-          commit('SET_DEPTNAME',user.dept.deptName)
85
+          commit('SET_DEPTID', user.deptId)
86
+          commit('SET_DEPTNAME', user.dept.deptName)
82 87
           commit('SET_AVATAR', avatar)
83
-          listUser({pageNum:1,pageSize:9999}).then(result=>{
88
+          listUser({ pageNum: 1, pageSize: 9999 }).then(result => {
84 89
             commit('SET_USERLIST', result.rows)
90
+            listDept({ pageNum: 1, pageSize: 9999 }).then(response => {
91
+              commit('SET_DEPTLIST', response.data)
92
+            })
85 93
           })
86 94
           resolve(res)
87 95
         }).catch(error => {

+ 10
- 0
oa-ui/src/utils/ruoyi.js 查看文件

@@ -258,6 +258,16 @@ export function getUserName(userId) {
258 258
   }
259 259
 }
260 260
 
261
+export function getDeptName(deptId) {
262
+  if (deptId) {
263
+    let arr = this.$store.state.user.deptList.filter(item => item.deptId == deptId)
264
+    if (arr.length == 1) {
265
+      let name = arr[0].deptName
266
+      return name
267
+    }
268
+  }
269
+}
270
+
261 271
 export function getFileName(name) {
262 272
   if (name) {
263 273
     let arr = name.split("/");

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

@@ -2,12 +2,12 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-08 16:08:33
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-27 15:13:37
5
+ * @LastEditTime: 2024-06-05 10:16:54
6 6
 -->
7 7
 <template>
8 8
   <div>
9 9
     <add-budget :taskName="taskName" :taskForm="taskForm" @goBack="goBack" v-if="taskName == '预算编制'"></add-budget>
10
-    <budget-info :taskName="taskName" :taskForm="taskForm" @goBack="goBack" v-if="taskName == '预算审核'"></budget-info>
10
+    <budget-info :taskName="taskName" :taskForm="taskForm" @goBack="goBack" v-if="taskName == '预算审核' || taskName == '预算批准'"></budget-info>
11 11
   </div>
12 12
 </template>
13 13
 

+ 20
- 10
oa-ui/src/views/flowable/form/budget/budgetInfo.vue 查看文件

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-03 16:28:09
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-06-04 16:48:47
5
+ * @LastEditTime: 2024-06-05 10:27:53
6 6
 -->
7 7
 <template>
8 8
   <div class="main">
@@ -140,8 +140,8 @@
140 140
         <td colspan="1" class="head">{{ contract.contractId ? contract.amount : '' }}</td>
141 141
       </tr>
142 142
     </table>
143
-    <el-row v-if="taskName == '预算审核'" class="text-center mt20 mb20">
144
-      <el-button type="success" size="mini" @click="confirmSucess">审批通过</el-button>
143
+    <el-row v-if="taskName == '预算审核' || taskName == '预算批准'" class="text-center mt20 mb20">
144
+      <el-button type="success" size="mini" @click="confirmSucess(taskName)">审批通过</el-button>
145 145
     </el-row>
146 146
   </div>
147 147
 </template>
@@ -250,18 +250,28 @@ export default {
250 250
         this.workContentList = res.rows;
251 251
       })
252 252
     },
253
-    confirmSucess() {
253
+    confirmSucess(taskName) {
254 254
       const params = { taskId: this.taskForm.taskId };
255
-      getNextFlowNode(params).then(res => {
256
-        getUsersManageLeader({ userId: this.budgetForm.compiler }).then(res => {
257
-          let userId = res.data.userId;
258
-          this.$set(this.taskForm.variables, "approval", userId);
255
+      if (taskName == '预算审核') {
256
+        getNextFlowNode(params).then(res => {
257
+          getUsersManageLeader({ userId: this.budgetForm.compiler }).then(res => {
258
+            let userId = res.data.userId;
259
+            this.$set(this.taskForm.variables, "approval", userId);
260
+            complete(this.taskForm).then(response => {
261
+              this.$modal.msgSuccess(response.msg);
262
+              this.$emit("goBack");
263
+            });
264
+          });
265
+        });
266
+      } else if (taskName == '预算批准') {
267
+        getNextFlowNode(params).then(res => {
259 268
           complete(this.taskForm).then(response => {
260 269
             this.$modal.msgSuccess(response.msg);
261 270
             this.$emit("goBack");
262 271
           });
263
-        });
264
-      });
272
+        })
273
+      }
274
+
265 275
     }
266 276
   },
267 277
 };

+ 17
- 10
oa-ui/src/views/flowable/form/oa/carForm.vue 查看文件

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-02-29 11:44:28
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-06-04 10:41:18
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-06-05 16:05:20
6 6
 -->
7 7
 
8 8
 <template>
@@ -12,7 +12,7 @@
12 12
         <el-card>
13 13
           <h2 style="text-align: center;">用车申请表</h2>
14 14
           <div>
15
-            <el-form ref="carForm" :model="form" label-width="100px" :rules="rules">
15
+            <el-form ref="carForm" :model="form" label-width="120px" :rules="rules">
16 16
               <!-- 申请人填写 -->
17 17
               <el-divider></el-divider>
18 18
               <el-row :gutter="20">
@@ -56,17 +56,17 @@
56 56
                 </el-select> -->
57 57
                 <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="1">
58 58
                   <el-descriptions-item label="项目编号" label-class-name="my-label">{{ chooseProject.projectNumber
59
-                  }}</el-descriptions-item>
59
+                    }}</el-descriptions-item>
60 60
                   <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
61
-                  }}</el-descriptions-item>
61
+                    }}</el-descriptions-item>
62 62
                   <el-descriptions-item label="项目负责人" label-class-name="my-label">{{ chooseProject.projectLeaderUser ?
63
-                    chooseProject.projectLeaderUser.nickName : ''
64
-                  }}</el-descriptions-item>
63
+    chooseProject.projectLeaderUser.nickName : ''
64
+                    }}</el-descriptions-item>
65 65
                   <el-descriptions-item label="承担部门" label-class-name="my-label">
66 66
                     <el-tag size="small">{{ chooseProject.undertakingDeptName }}</el-tag>
67 67
                   </el-descriptions-item>
68 68
                   <el-descriptions-item label="项目类型" label-class-name="my-label">{{ chooseProject.projectType
69
-                  }}</el-descriptions-item>
69
+                    }}</el-descriptions-item>
70 70
                 </el-descriptions>
71 71
               </el-form-item>
72 72
               <el-form-item label="用车事由:" prop="applyReason">
@@ -215,7 +215,7 @@
215 215
             </el-row>
216 216
             <el-row style="text-align: center;" v-else>
217 217
               <el-button type="primary" :disabled="taskName == ''" @click="completeApply">{{ taskName == '申请确认' ? "确认" :
218
-                "完成审批" }}</el-button>
218
+    "完成审批" }}</el-button>
219 219
             </el-row>
220 220
           </div>
221 221
         </el-card>
@@ -447,7 +447,6 @@ export default {
447 447
             data.cars = arr;
448 448
           }
449 449
           this.form = data;
450
-          console.log(this.form);
451 450
           if (data.projectId) {
452 451
             getProject(data.projectId).then(response => {
453 452
               this.chooseProject = response.data;
@@ -629,6 +628,14 @@ export default {
629 628
         return
630 629
       } else if (val.length == 1) {
631 630
         this.chooseProject = val[0]
631
+        let undertakingDeptName = []
632
+        if (val[0].undertakingDept) {
633
+          let deptArr = val[0].undertakingDept.split(',');
634
+          for (let dept of deptArr) {
635
+            undertakingDeptName.push(this.getDeptName(dept))
636
+          }
637
+        }
638
+        this.chooseProject.undertakingDeptName = undertakingDeptName.join(',');
632 639
         this.isSelect = true
633 640
         this.form.projectId = val[0].projectId
634 641
       }

+ 18
- 9
oa-ui/src/views/oa/contract/index.vue 查看文件

@@ -7,7 +7,8 @@
7 7
       </el-form-item>
8 8
       <el-form-item label="拟稿人" prop="drafter">
9 9
         <el-select v-model="queryParams.drafter" filterable>
10
-          <el-option v-for="item of $store.state.user.userList" :label="item.nickName" :value="item.userId"></el-option>
10
+          <el-option :key="item.userId" v-for="item of $store.state.user.userList" :label="item.nickName"
11
+            :value="item.userId"></el-option>
11 12
         </el-select>
12 13
       </el-form-item>
13 14
       <el-form-item label="拟稿日期" prop="draftTime">
@@ -147,7 +148,15 @@
147 148
     </el-dialog>
148 149
     <!-- 查看详情 -->
149 150
     <el-dialog :title="title" :visible.sync="openInfo" width="600px" append-to-body>
150
-
151
+      <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
152
+        <li key="li01" class="el-upload-list__item ele-upload-list__item-content">
153
+          <el-link :href="`${baseUrl}${'/profile/upload' + form.contractDocument}`" :underline="false" target="_blank">
154
+            <span class="el-icon-document"> {{ getFileName(form.contractDocument) }} </span>
155
+          </el-link>
156
+        </li>
157
+      </transition-group>
158
+      <el-button class="ml20" type="primary" size="mini" plain
159
+        @click="reviewWord(`${baseUrl}${'/profile/upload' + form.contractDocument}`)">在线预览</el-button>
151 160
     </el-dialog>
152 161
   </div>
153 162
 </template>
@@ -177,7 +186,7 @@ export default {
177 186
       title: "",
178 187
       // 是否显示弹出层
179 188
       open: false,
180
-      openInfo:false,
189
+      openInfo: false,
181 190
       // 查询参数
182 191
       queryParams: {
183 192
         pageNum: 1,
@@ -198,7 +207,7 @@ export default {
198 207
       // 表单校验
199 208
       rules: {
200 209
       },
201
-      project:{}
210
+      project: {}
202 211
     };
203 212
   },
204 213
   created() {
@@ -219,13 +228,13 @@ export default {
219 228
       this.open = false;
220 229
       this.reset();
221 230
     },
222
-    getCommentType(row){
231
+    getCommentType(row) {
223 232
       let name = '';
224
-      if(row == '0'){
233
+      if (row == '0') {
225 234
         name = '无须评审'
226
-      }else if(row == '1'){
235
+      } else if (row == '1') {
227 236
         name = '会议评审'
228
-      }else{
237
+      } else {
229 238
         name = '线上评审'
230 239
       }
231 240
       return name
@@ -270,7 +279,7 @@ export default {
270 279
       this.open = true;
271 280
       this.title = "添加cmc合同评审";
272 281
     },
273
-    handleView(row){
282
+    handleView(row) {
274 283
       this.openInfo = true;
275 284
       this.title = "合同详情";
276 285
       this.form = row

+ 22
- 15
oa-ui/src/views/oa/project/info.vue 查看文件

@@ -112,12 +112,15 @@
112 112
                 <svg-icon slot="prefix" icon-class="file" />
113 113
                 项目任务书
114 114
               </template>
115
-              <el-link type="primary" :href="`${baseUrl}${'/profile/upload' + project.taskDocument}`" :underline="false"
116
-                target="_blank">
117
-                <span class="el-icon-document"> {{ getFileName(project.taskDocument) }} </span>
118
-              </el-link>
119
-              <el-button class="ml20" type="primary" size="mini" plain @click="reviewWord(`${baseUrl}${'/profile/upload' + project.taskDocument}`)">在线预览</el-button>
120
-              <!-- <vue-office-docx style="width:80%;height:100vh" :src="`${baseUrl}${'/profile/upload' + project.taskDocument}`" @rendered="rendered" /> -->
115
+              <div v-if="project.taskDocument">
116
+                <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + project.taskDocument}`)">
117
+                  {{ getFileName(project.taskDocument) }}
118
+                </el-link>
119
+                <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + project.taskDocument}`"
120
+                  :underline="false" target="_blank">
121
+                  <span class="el-icon-download">下载文件</span>
122
+                </el-link>
123
+              </div>
121 124
             </el-descriptions-item>
122 125
             <el-descriptions-item :span="3">
123 126
               <template slot="label">
@@ -200,11 +203,15 @@
200 203
                 <svg-icon slot="prefix" icon-class="documentation" />
201 204
                 组织交底文档
202 205
               </template>
203
-              <el-link type="primary" :href="`${baseUrl}${'/profile/upload' + project.organizeDocument}`"
204
-                :underline="false" target="_blank">
205
-                <span class="el-icon-document"> {{ getFileName(project.organizeDocument) }} </span>
206
-              </el-link>
207
-              <el-button class="ml20" type="primary" size="mini" plain @click="reviewWord(`${baseUrl}${'/profile/upload' + project.organizeDocument}`)">在线预览</el-button>
206
+              <div v-if="project.organizeDocument">
207
+                <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + project.organizeDocument}`)">
208
+                  {{ getFileName(project.organizeDocument) }}
209
+                </el-link>
210
+                <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + project.organizeDocument}`"
211
+                  :underline="false" target="_blank">
212
+                  <span class="el-icon-download">下载文件</span>
213
+                </el-link>
214
+              </div>
208 215
             </el-descriptions-item>
209 216
           </el-descriptions>
210 217
         </div>
@@ -582,11 +589,11 @@ export default {
582 589
       this.$tab.closeOpenPage(obj);
583 590
       this.$router.push({ path: '/project' });
584 591
     },
585
-    reviewWord(url){
592
+    reviewWord(url) {
586 593
       this.$router.push({
587
-        path:'/preview',
588
-        query:{
589
-          url:url
594
+        path: '/preview',
595
+        query: {
596
+          url: url
590 597
         }
591 598
       })
592 599
     }

+ 24
- 29
oa-ui/src/views/oa/tender/index.vue 查看文件

@@ -105,8 +105,7 @@
105 105
       @pagination="getList" />
106 106
 
107 107
     <!-- 添加或修改投标管理对话框 -->
108
-    <el-dialog :title="title" :visible.sync="open" :width="dialogProperty.dialogWidth" append-to-body
109
-      :close-on-click-modal="false">
108
+    <el-dialog :title="title" :visible.sync="open" :width="dialogProperty.dialogWidth" append-to-body>
110 109
       <el-form ref="form" :rules="rules" :model="form" :disabled="formDisabled">
111 110
         <el-descriptions class="margin-top" :column="dialogProperty.column" border>
112 111
           <el-descriptions-item :span="3">
@@ -254,21 +253,15 @@
254 253
             <FileUpload v-if="form.tenderId == null" ref="zbFile" :limit="1" :filePathName="'投标文件'"
255 254
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getUploadPathBidDocument"></FileUpload>
256 255
             <div v-if="form.tenderId != null">
257
-
258
-              <FileUpload ref="zb" :limit="1" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" :isShowTip="false"
256
+              <FileUpload v-if="!isView" ref="zb" :limit="1" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" :isShowTip="false"
259 257
                 :filePathName="'投标文件'" :isModify="true" @input="getUploadPathBidDocument"></FileUpload>
260
-              <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear"
261
-                tag="ul">
262
-                <li key="li01" class="el-upload-list__item ele-upload-list__item-content">
263
-                  <el-link :href="`${baseUrl}${'/profile/upload' + form.bidDocument}`" :underline="false"
264
-                    target="_blank">
265
-                    <span class="el-icon-document"> {{ getFileName(form.bidDocument) }} </span>
266
-                  </el-link>
267
-                  <div class="ele-upload-list__item-content-action">
268
-                    <el-link :underline="false" @click="handleFileDelete('zb')" type="danger">删除</el-link>
269
-                  </div>
270
-                </li>
271
-              </transition-group>
258
+              <el-link type="primary" @click="toPath(`${baseUrl}${'/profile/upload' + form.bidDocument}`)">
259
+                {{ getFileName(form.bidDocument) }}
260
+              </el-link>
261
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.bidDocument}`"
262
+                :underline="false" target="_blank">
263
+                <span class="el-icon-download">下载文件</span>
264
+              </el-link>
272 265
             </div>
273 266
           </el-descriptions-item>
274 267
           <el-descriptions-item :span="3">
@@ -361,20 +354,15 @@
361 354
             <FileUpload v-if="form.tenderId == null" ref="bsFile" :limit="1" :filePathName="'投标文件'"
362 355
               :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getUploadPathTenderDocument"></FileUpload>
363 356
             <div v-if="form.tenderId != null">
364
-              <FileUpload ref="bs" :limit="1" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" :isShowTip="false"
357
+              <FileUpload v-if="!isView" ref="bs" :limit="1" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" :isShowTip="false"
365 358
                 :filePathName="'投标文件'" :isModify="true" @input="getUploadPathTenderDocument"></FileUpload>
366
-              <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear"
367
-                tag="ul">
368
-                <li key="li02" class="el-upload-list__item ele-upload-list__item-content">
369
-                  <el-link :href="`${baseUrl}${'/profile/upload' + form.tenderDocument}`" :underline="false"
370
-                    target="_blank">
371
-                    <span class="el-icon-document"> {{ getFileName(form.tenderDocument) }} </span>
372
-                  </el-link>
373
-                  <div class="ele-upload-list__item-content-action">
374
-                    <el-link :underline="false" @click="handleFileDelete('bs')" type="danger">删除</el-link>
375
-                  </div>
376
-                </li>
377
-              </transition-group>
359
+              <el-link type="primary" @click="toPath(`${baseUrl}${'/profile/upload' + form.tenderDocument}`)">
360
+                {{ getFileName(form.tenderDocument) }}
361
+              </el-link>
362
+              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.tenderDocument}`"
363
+                :underline="false" target="_blank">
364
+                <span class="el-icon-download">下载文件</span>
365
+              </el-link>
378 366
             </div>
379 367
           </el-descriptions-item>
380 368
         </el-descriptions>
@@ -415,6 +403,7 @@ export default {
415 403
       title: "",
416 404
       // 是否显示弹出层
417 405
       open: false,
406
+      isView:true,
418 407
       // 对话框属性
419 408
       dialogProperty: {
420 409
         dialogWidth: '1200px',
@@ -617,6 +606,7 @@ export default {
617 606
       this.formDisabled = false;
618 607
     },
619 608
     handleView(row) {
609
+      this.isView = true;
620 610
       const tenderId = row.tenderId || this.ids
621 611
       getTender(tenderId).then(response => {
622 612
         this.form = response.data;
@@ -628,6 +618,7 @@ export default {
628 618
     /** 修改按钮操作 */
629 619
     handleUpdate(row) {
630 620
       this.reset();
621
+      this.isView = false;
631 622
       const tenderId = row.tenderId || this.ids
632 623
       getTender(tenderId).then(response => {
633 624
         this.form = response.data;
@@ -702,6 +693,10 @@ export default {
702 693
     // 修改投标部门
703 694
     changeDept() {
704 695
       this.getUserList();
696
+    },
697
+    toPath(url) {
698
+      this.open = false
699
+      this.reviewWord(url)
705 700
     }
706 701
   }
707 702
 };

正在加载...
取消
保存