Browse Source

编写在线预览

余思翰 1 year ago
parent
commit
d936c3f164

+ 1103
- 975
oa-back/sql/cmc_oa(小余测试数据).sql
File diff suppressed because it is too large
View File


+ 4
- 0
oa-ui/package.json View File

37
   },
37
   },
38
   "dependencies": {
38
   "dependencies": {
39
     "@riophae/vue-treeselect": "0.4.0",
39
     "@riophae/vue-treeselect": "0.4.0",
40
+    "@vue-office/docx": "^1.6.2",
41
+    "@vue-office/excel": "^1.7.8",
42
+    "@vue-office/pdf": "^2.0.2",
43
+    "@vue/composition-api": "^1.7.2",
40
     "axios": "0.24.0",
44
     "axios": "0.24.0",
41
     "bpmn-js": "^11.1.0",
45
     "bpmn-js": "^11.1.0",
42
     "bpmn-js-bpmnlint": "^0.15.0",
46
     "bpmn-js-bpmnlint": "^0.15.0",

+ 8
- 0
oa-ui/src/assets/styles/index.scss View File

211
 .auditor {
211
 .auditor {
212
   font-family: 'auditor';
212
   font-family: 'auditor';
213
   font-size: 20px;
213
   font-size: 20px;
214
+}
215
+.preview-btn{
216
+  width: 100px;
217
+  height: 30px;
218
+  border: none;
219
+  background-color: #409EFF;
220
+  color: #fff;
221
+  border-radius: 4px;
214
 }
222
 }

+ 51
- 0
oa-ui/src/components/preview/index.vue View File

1
+<template>
2
+  <div v-loading="loading">
3
+    <vue-office-docx :src="url" v-if="fileType == 'docx'" />
4
+    <vue-office-excel :src="url" v-if="fileType == 'xlsx'" />
5
+    <vue-office-pdf :src="url" v-if="fileType == 'pdf'"></vue-office-pdf>
6
+    <div v-if="fileType == 'doc' || fileType == 'xls'">
7
+      <el-empty :image-size="200" :description="'抱歉,' + fileType + '类型文件不支持在线预览,请下载到本地查看'">
8
+        <el-link type="primary" :href="url" :underline="false" target="_blank">
9
+          <span>立即下载</span>
10
+        </el-link>
11
+      </el-empty>
12
+    </div>
13
+
14
+  </div>
15
+</template>
16
+
17
+<script>
18
+import VueOfficeDocx from "@vue-office/docx";
19
+import VueOfficeExcel from "@vue-office/excel";
20
+import VueOfficePdf from "@vue-office/pdf";
21
+export default {
22
+  components: {
23
+    VueOfficeDocx,
24
+    VueOfficeExcel,
25
+    VueOfficePdf
26
+  },
27
+  data() {
28
+    return {
29
+      loading: true,
30
+      url: "",
31
+      fileType: ""
32
+    };
33
+  },
34
+  created() {
35
+    this.loading = true;
36
+    if (this.$route.query.url) {
37
+      this.url = this.$route.query.url;
38
+      this.getFileType();
39
+    }
40
+  },
41
+  methods: {
42
+    getFileType() {
43
+      let suffix = this.url.split(".").slice(-1);
44
+      this.fileType = suffix;
45
+      this.loading = false;
46
+    }
47
+  },
48
+};
49
+</script>
50
+
51
+<style lang="scss" scoped></style>

+ 5
- 2
oa-ui/src/main.js View File

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

+ 15
- 1
oa-ui/src/router/index.js View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-01-03 09:23:11
3
  * @Date: 2024-01-03 09:23:11
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-31 17:03:36
5
+ * @LastEditTime: 2024-06-04 09:56:16
6
  */
6
  */
7
 /*
7
 /*
8
  * @Author: ysh
8
  * @Author: ysh
321
         name: 'projectInfo',
321
         name: 'projectInfo',
322
         meta: { title: '项目详情', icon: '' }
322
         meta: { title: '项目详情', icon: '' }
323
 
323
 
324
+      }
325
+    ]
326
+  },
327
+  {
328
+    path: '/preview',
329
+    component: Layout,
330
+    hidden: true,
331
+    children: [
332
+      {
333
+        path: '',
334
+        component: () => import('@/components/preview'),
335
+        name: 'preview',
336
+        meta: { title: '在线预览', icon: '' }
337
+
324
       }
338
       }
325
     ]
339
     ]
326
   }
340
   }

+ 26
- 0
oa-ui/src/utils/ruoyi.js View File

246
   } else {
246
   } else {
247
     return [];
247
     return [];
248
   }
248
   }
249
+}
250
+
251
+export function getUserName(userId) {
252
+  if (userId) {
253
+    let arr = this.$store.state.user.userList.filter(item => item.userId == userId)
254
+    if (arr.length == 1) {
255
+      let name = arr[0].nickName
256
+      return name
257
+    }
258
+  }
259
+}
260
+
261
+export function getFileName(name) {
262
+  if (name) {
263
+    let arr = name.split("/");
264
+    return arr[arr.length - 1];
265
+  }
266
+}
267
+
268
+export function reviewWord(url) {
269
+  this.$router.push({
270
+    path: '/preview',
271
+    query: {
272
+      url: url
273
+    }
274
+  })
249
 }
275
 }

+ 2
- 3
oa-ui/src/views/flowable/form/budget/budgetInfo.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-03 16:28:09
3
  * @Date: 2024-04-03 16:28:09
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-31 15:35:26
5
+ * @LastEditTime: 2024-06-04 16:48:47
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="main">
8
   <div class="main">
135
       </tr>
135
       </tr>
136
       <tr v-if="contract.contractId">
136
       <tr v-if="contract.contractId">
137
         <td colspan="3" class="head">利润</td>
137
         <td colspan="3" class="head">利润</td>
138
-        <td colspan="2" class="head">{{ profit }}</td>
138
+        <td colspan="2" class="head">{{ profit.toFixed(2) }}</td>
139
         <td colspan="3" class="head">合同总价约</td>
139
         <td colspan="3" class="head">合同总价约</td>
140
         <td colspan="1" class="head">{{ contract.contractId ? contract.amount : '' }}</td>
140
         <td colspan="1" class="head">{{ contract.contractId ? contract.amount : '' }}</td>
141
       </tr>
141
       </tr>
234
             this.getProjectWorkList();
234
             this.getProjectWorkList();
235
           })
235
           })
236
           listProjectContract({ projectId: this.taskForm.formId }).then(res => {
236
           listProjectContract({ projectId: this.taskForm.formId }).then(res => {
237
-            console.log(res);
238
             if (res.total == 1) {
237
             if (res.total == 1) {
239
               getContract(res.rows[0].contractId).then(response => {
238
               getContract(res.rows[0].contractId).then(response => {
240
                 this.contract = response.data;
239
                 this.contract = response.data;

+ 1
- 0
oa-ui/src/views/flowable/form/budget/components/chooseMoney.vue View File

242
       if (index >= 0 && index < arr.length) {
242
       if (index >= 0 && index < arr.length) {
243
         arr.splice(index, 1);
243
         arr.splice(index, 1);
244
       }
244
       }
245
+      this.getSettleSum();
245
     },
246
     },
246
     /* 获取工作类别 */
247
     /* 获取工作类别 */
247
     getWorkTypeList() {
248
     getWorkTypeList() {

+ 92
- 70
oa-ui/src/views/flowable/form/business/contractForm.vue View File

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-05-10 15:31:57
3
  * @Date: 2024-05-10 15:31:57
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-06-04 09:11:08
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-06-04 16:33:59
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
14
           <el-row :gutter="20">
14
           <el-row :gutter="20">
15
             <el-col :span="12" :xs="24">
15
             <el-col :span="12" :xs="24">
16
               <el-form-item label="投标项目名称:" prop="tenderId">
16
               <el-form-item label="投标项目名称:" prop="tenderId">
17
-                <el-button type="primary" size="mini" @click="tbOpen = true" v-if="taskName == '合同拟稿'">选择投标项目</el-button>
17
+                <el-button type="primary" size="mini" @click="tbOpen = true"
18
+                  v-if="taskName == '合同拟稿'">选择投标项目</el-button>
18
                 <!-- <el-select v-model="form.tenderId" filterable placeholder="请选择" @change="handleSelectTender"
19
                 <!-- <el-select v-model="form.tenderId" filterable placeholder="请选择" @change="handleSelectTender"
19
                   :disabled="taskName != '合同拟稿'" clearable>
20
                   :disabled="taskName != '合同拟稿'" clearable>
20
                   <el-option v-for="item in tenderList" :key="item.value" :label="item.projectName"
21
                   <el-option v-for="item in tenderList" :key="item.value" :label="item.projectName"
23
                 </el-select> -->
24
                 </el-select> -->
24
                 <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="2" direction="vertical">
25
                 <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="2" direction="vertical">
25
                   <el-descriptions-item label="投标项目名称" label-class-name="my-label" :span="2">{{ chooseTender.projectName
26
                   <el-descriptions-item label="投标项目名称" label-class-name="my-label" :span="2">{{ chooseTender.projectName
26
-                  }}</el-descriptions-item>
27
+                    }}</el-descriptions-item>
27
                   <el-descriptions-item label="项目来源" label-class-name="my-label">{{ getProjectSource(chooseTender)
28
                   <el-descriptions-item label="项目来源" label-class-name="my-label">{{ getProjectSource(chooseTender)
28
-                  }}</el-descriptions-item>
29
+                    }}</el-descriptions-item>
29
                   <el-descriptions-item label="招标业主" label-class-name="my-label">{{ chooseTender.partyA
30
                   <el-descriptions-item label="招标业主" label-class-name="my-label">{{ chooseTender.partyA
30
-                  }}</el-descriptions-item>
31
+                    }}</el-descriptions-item>
31
                   <el-descriptions-item label="联系人" label-class-name="my-label">{{ chooseTender.aPerson
32
                   <el-descriptions-item label="联系人" label-class-name="my-label">{{ chooseTender.aPerson
32
-                  }}</el-descriptions-item>
33
+                    }}</el-descriptions-item>
33
                   <el-descriptions-item label="联系电话" label-class-name="my-label">{{ chooseTender.aPhone
34
                   <el-descriptions-item label="联系电话" label-class-name="my-label">{{ chooseTender.aPhone
34
-                  }}</el-descriptions-item>
35
+                    }}</el-descriptions-item>
35
                 </el-descriptions>
36
                 </el-descriptions>
36
               </el-form-item>
37
               </el-form-item>
37
 
38
 
87
 
88
 
88
           </el-row>
89
           </el-row>
89
           <el-form-item label="合同文件" prop="contractDocument">
90
           <el-form-item label="合同文件" prop="contractDocument">
90
-            <FileUpload :disabled="taskName != '合同拟稿'" v-if="form.contractDocument == '' || form.contractDocument == null"
91
-              ref="contractFile" :limit="1" :filePathName="'承接合同/合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']"
92
-              @input="getContractPath"></FileUpload>
91
+            <FileUpload :disabled="taskName != '合同拟稿'"
92
+              v-if="form.contractDocument == '' || form.contractDocument == null" ref="contractFile" :limit="1"
93
+              :filePathName="'承接合同/合同文件'" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="getContractPath">
94
+            </FileUpload>
93
             <div v-if="form.contractDocument != '' && form.contractDocument != null">
95
             <div v-if="form.contractDocument != '' && form.contractDocument != null">
94
               <file-item :document="form.contractDocument"></file-item>
96
               <file-item :document="form.contractDocument"></file-item>
97
+              <button class="preview-btn" type="primary" size="mini" plain
98
+                @click="reviewWord(`${baseUrl}${'/profile/upload' + form.contractDocument}`)">在线预览</button>
95
             </div>
99
             </div>
96
           </el-form-item>
100
           </el-form-item>
97
           <el-divider></el-divider>
101
           <el-divider></el-divider>
172
                   <el-input v-model="payment.paymentAmount" clearable :disabled="taskName != '合同拟稿'"></el-input>
176
                   <el-input v-model="payment.paymentAmount" clearable :disabled="taskName != '合同拟稿'"></el-input>
173
                 </td>
177
                 </td>
174
                 <td>
178
                 <td>
175
-                  <el-date-picker style="width: 140px" v-model="payment.paymentTime" value-format="yyyy-MM-dd" type="date"
176
-                    placeholder="选择日期" :disabled="taskName != '合同拟稿'">
179
+                  <el-date-picker style="width: 140px" v-model="payment.paymentTime" value-format="yyyy-MM-dd"
180
+                    type="date" placeholder="选择日期" :disabled="taskName != '合同拟稿'">
177
                   </el-date-picker>
181
                   </el-date-picker>
178
                 </td>
182
                 </td>
179
                 <td>
183
                 <td>
268
                           <el-link :underline="false" @click="handleFileDelete(comment, 'document')"
272
                           <el-link :underline="false" @click="handleFileDelete(comment, 'document')"
269
                             type="danger">删除</el-link>
273
                             type="danger">删除</el-link>
270
                         </div>
274
                         </div>
275
+                        <button class="preview-btn" type="primary" size="mini" plain
276
+                          @click="reviewWord(`${baseUrl}${'/profile/upload' + comment.document}`)">在线预览</button>
271
                       </li>
277
                       </li>
272
                     </transition-group>
278
                     </transition-group>
273
                   </div>
279
                   </div>
372
           </el-row>
378
           </el-row>
373
           <el-divider></el-divider>
379
           <el-divider></el-divider>
374
           <el-form-item label="签订日期" prop="signDate">
380
           <el-form-item label="签订日期" prop="signDate">
375
-            <el-date-picker clearable v-model="form.signDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择签订日期"
376
-              :disabled="taskName != '合同签订'">
381
+            <el-date-picker clearable v-model="form.signDate" type="date" value-format="yyyy-MM-dd"
382
+              placeholder="请选择签订日期" :disabled="taskName != '合同签订'">
377
             </el-date-picker>
383
             </el-date-picker>
378
           </el-form-item>
384
           </el-form-item>
379
           <el-form-item label="签订备注" prop="signRemark">
385
           <el-form-item label="签订备注" prop="signRemark">
397
                   <div class="ele-upload-list__item-content-action" v-if="taskName != ''">
403
                   <div class="ele-upload-list__item-content-action" v-if="taskName != ''">
398
                     <el-link :underline="false" @click="handleFileDelete(form, 'signScan')" type="danger">删除</el-link>
404
                     <el-link :underline="false" @click="handleFileDelete(form, 'signScan')" type="danger">删除</el-link>
399
                   </div>
405
                   </div>
406
+                  <button class="preview-btn" type="primary" size="mini" plain
407
+                    @click="reviewWord(`${baseUrl}${'/profile/upload' + form.signScan}`)">在线预览</button>
400
                 </li>
408
                 </li>
401
               </transition-group>
409
               </transition-group>
402
             </div>
410
             </div>
956
             })
964
             })
957
           } else {
965
           } else {
958
             this.form.contractId = this.taskForm.formId;
966
             this.form.contractId = this.taskForm.formId;
967
+
959
             addContract(this.form).then(response => {
968
             addContract(this.form).then(response => {
960
-              this.$modal.msgSuccess("新增成功");
961
-              this.open = false;
962
-              this.getList();
963
-            });
964
-            for (let work of this.workList) {
965
-              work.contractId = this.form.contractId
966
-              addContractWork(work);
967
-            }
968
-            for (let payment of this.paymentList) {
969
-              payment.contractId = this.form.contractId
970
-              addContractPayment(payment);
971
-            }
972
-            for (let projectId of this.projectContractForm.projectIds) {
973
-              addProjectContract({ projectId: projectId, contractId: this.form.contractId });
974
-            }
975
-            const params = { taskId: this.taskForm.taskId };
976
-            getNextFlowNode(params).then(res => {
977
-              if (this.commentOpen == false && this.meetingOpen == false) {
978
-                getUsersManageLeader({ userId: this.$store.getters.userId }).then(res => {
979
-                  let userId = res.data.userId;
980
-                  this.$set(this.taskForm.variables, "approval", userId);
981
-                  this.$set(this.taskForm.variables, "commentType", '0');
982
-                  complete(this.taskForm).then(response => {
983
-                    this.$modal.msgSuccess(response.msg);
984
-                    this.$emit('goBack')
985
-                  });
986
-                })
987
-              }
988
-              else if (this.commentOpen == true && this.meetingOpen == false) {
989
-                let approvalList = [];
990
-                for (let comment of this.commentList) {
991
-                  comment.contractId = this.form.contractId
992
-                  addContractComment(comment);
993
-                  approvalList.push(comment.userId)
969
+              if (response.code == 200) {
970
+                this.$modal.msgSuccess("新增成功");
971
+                this.open = false;
972
+                this.getList();
973
+                for (let work of this.workList) {
974
+                  work.contractId = this.form.contractId
975
+                  addContractWork(work);
994
                 }
976
                 }
995
-                this.$set(this.taskForm.variables, "approvalList", approvalList);
996
-                this.$set(this.taskForm.variables, "commentType", '2');
997
-                complete(this.taskForm).then(response => {
998
-                  this.$modal.msgSuccess(response.msg);
999
-                  this.$emit('goBack')
1000
-                });
1001
-              }
1002
-              else if (this.commentOpen == false && this.meetingOpen == true) {
1003
-                this.meetingForm.contractId = this.form.contractId;
1004
-                let formData = new FormData();
1005
-                let jsonForm = JSON.stringify(this.meetingForm);
1006
-                formData.append("form", jsonForm);
1007
-                addContractMeeting(formData);
1008
-                this.$set(this.taskForm.variables, "approval", this.meetingForm.hostId);
1009
-                this.$set(this.taskForm.variables, "commentType", '1');
1010
-                complete(this.taskForm).then(response => {
1011
-                  this.$modal.msgSuccess(response.msg);
1012
-                  this.$emit('goBack')
1013
-                });
977
+                for (let payment of this.paymentList) {
978
+                  payment.contractId = this.form.contractId
979
+                  addContractPayment(payment);
980
+                }
981
+                for (let projectId of this.projectContractForm.projectIds) {
982
+                  addProjectContract({ projectId: projectId, contractId: this.form.contractId });
983
+                }
984
+                const params = { taskId: this.taskForm.taskId };
985
+                getNextFlowNode(params).then(res => {
986
+                  if (this.commentOpen == false && this.meetingOpen == false) {
987
+                    getUsersManageLeader({ userId: this.$store.getters.userId }).then(res => {
988
+                      let userId = res.data.userId;
989
+                      this.$set(this.taskForm.variables, "approval", userId);
990
+                      this.$set(this.taskForm.variables, "commentType", '0');
991
+                      complete(this.taskForm).then(response => {
992
+                        this.$modal.msgSuccess(response.msg);
993
+                        this.$emit('goBack')
994
+                      });
995
+                    })
996
+                  }
997
+                  else if (this.commentOpen == true && this.meetingOpen == false) {
998
+                    let approvalList = [];
999
+                    for (let comment of this.commentList) {
1000
+                      comment.contractId = this.form.contractId
1001
+                      addContractComment(comment);
1002
+                      approvalList.push(comment.userId)
1003
+                    }
1004
+                    this.$set(this.taskForm.variables, "approvalList", approvalList);
1005
+                    this.$set(this.taskForm.variables, "commentType", '2');
1006
+                    complete(this.taskForm).then(response => {
1007
+                      this.$modal.msgSuccess(response.msg);
1008
+                      this.$emit('goBack')
1009
+                    });
1010
+                  }
1011
+                  else if (this.commentOpen == false && this.meetingOpen == true) {
1012
+                    this.meetingForm.contractId = this.form.contractId;
1013
+                    let formData = new FormData();
1014
+                    let jsonForm = JSON.stringify(this.meetingForm);
1015
+                    formData.append("form", jsonForm);
1016
+                    addContractMeeting(formData);
1017
+                    this.$set(this.taskForm.variables, "approval", this.meetingForm.hostId);
1018
+                    this.$set(this.taskForm.variables, "commentType", '1');
1019
+                    complete(this.taskForm).then(response => {
1020
+                      this.$modal.msgSuccess(response.msg);
1021
+                      this.$emit('goBack')
1022
+                    });
1023
+                  }
1024
+                })
1025
+              } else {
1026
+                this.$message.error("新增失败,请确认合同编码是否唯一");
1014
               }
1027
               }
1015
-            })
1028
+            });
1016
           }
1029
           }
1017
         }
1030
         }
1018
       });
1031
       });
1053
       this.form.tenderId = val.tenderId
1066
       this.form.tenderId = val.tenderId
1054
       this.chooseTender = val
1067
       this.chooseTender = val
1055
       this.isSelect = true
1068
       this.isSelect = true
1069
+    },
1070
+    reviewWord(url) {
1071
+      this.$router.push({
1072
+        path: '/preview',
1073
+        query: {
1074
+          url: url
1075
+        }
1076
+      })
1056
     }
1077
     }
1057
   }
1078
   }
1058
 }
1079
 }
1094
 
1115
 
1095
 .ele-upload-list__item-content-action .el-link {
1116
 .ele-upload-list__item-content-action .el-link {
1096
   margin-right: 10px;
1117
   margin-right: 10px;
1097
-}</style>
1118
+}
1119
+</style>

+ 3
- 3
oa-ui/src/views/flowable/form/inProgress/settleData.vue View File

1
 <!--
1
 <!--
2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-05-10 14:45:03
3
  * @Date: 2024-05-10 14:45:03
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-06-03 15:18:06
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-06-04 11:33:23
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="mt20">
8
   <div class="mt20">
35
     </el-table>
35
     </el-table>
36
     <el-dialog title="结算明细" :visible.sync="open" append-to-body width="65%">
36
     <el-dialog title="结算明细" :visible.sync="open" append-to-body width="65%">
37
       <settle-print :form="clickRow" :chooseProject="chooseProject" :workList="workList"
37
       <settle-print :form="clickRow" :chooseProject="chooseProject" :workList="workList"
38
-        :settleList="summaryList"></settle-print>
38
+        :settleList="summaryList" @cancel="open = false"></settle-print>
39
     </el-dialog>
39
     </el-dialog>
40
   </div>
40
   </div>
41
 </template>
41
 </template>

+ 1
- 1
oa-ui/src/views/flowable/form/projectProcess/addproject.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-03-18 11:00:04
3
  * @Date: 2024-03-18 11:00:04
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-06-03 17:15:38
5
+ * @LastEditTime: 2024-06-04 16:55:40
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="project-wrapper">
8
   <div class="project-wrapper">

+ 3
- 1
oa-ui/src/views/flowable/form/projectProcess/arrangeProject.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-03-19 09:24:06
3
  * @Date: 2024-03-19 09:24:06
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-31 16:26:38
5
+ * @LastEditTime: 2024-06-04 17:38:50
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="app-container">
8
   <div class="app-container">
65
                 <span class="el-icon-document"> {{ getFileName(form.organizeDocument) }} </span>
65
                 <span class="el-icon-document"> {{ getFileName(form.organizeDocument) }} </span>
66
               </el-link>
66
               </el-link>
67
             </div>
67
             </div>
68
+            <!-- <button class="preview-btn" type="primary" size="mini" plain @click="reviewWord(`${baseUrl}${'/profile/upload' + form.contractDocument}`)">在线预览</button> -->
68
           </el-form-item>
69
           </el-form-item>
69
         </el-col>
70
         </el-col>
70
       </el-row>
71
       </el-row>
146
     initForm() {
147
     initForm() {
147
       getProject(this.taskForm.formId).then(res => {
148
       getProject(this.taskForm.formId).then(res => {
148
         this.form = res.data;
149
         this.form = res.data;
150
+        console.log( this.form);
149
         if (this.form.undertakingDept != null && this.form.undertakingDept != "" && this.form.undertakingDept != undefined) {
151
         if (this.form.undertakingDept != null && this.form.undertakingDept != "" && this.form.undertakingDept != undefined) {
150
           this.form.deptId = this.form.undertakingDeptName.split(',')
152
           this.form.deptId = this.form.undertakingDeptName.split(',')
151
         }
153
         }

+ 3
- 3
oa-ui/src/views/flowable/form/projectProcess/inProgress.vue View File

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2024-04-15 09:35:41
3
  * @Date: 2024-04-15 09:35:41
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-06-03 17:12:50
5
+ * @LastEditTime: 2024-06-04 16:58:07
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
97
       <div class="headers">
97
       <div class="headers">
98
         项目借款
98
         项目借款
99
         <div class="line"></div>
99
         <div class="line"></div>
100
-        <borrow-data :taskForm="taskForm"></borrow-data>
100
+        <borrow-data :taskForm="taskForm" :taskName="taskName"></borrow-data>
101
       </div>
101
       </div>
102
 
102
 
103
       <div class="headers">
103
       <div class="headers">
104
         成果汇交
104
         成果汇交
105
         <div class="line"></div>
105
         <div class="line"></div>
106
-        <achi-data :taskForm="taskForm"></achi-data>
106
+        <achi-data :taskForm="taskForm" :taskName="taskName"></achi-data>
107
       </div>
107
       </div>
108
       <div class="headers">
108
       <div class="headers">
109
         产值结算(内部)
109
         产值结算(内部)

+ 83
- 100
oa-ui/src/views/oa/contract/index.vue View File

2
   <div class="app-container">
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="68px">
4
       <el-form-item label="合同编号" prop="contractNumber">
4
       <el-form-item label="合同编号" prop="contractNumber">
5
-        <el-input
6
-          v-model="queryParams.contractNumber"
7
-          placeholder="请输入合同编号"
8
-          clearable
9
-          @keyup.enter.native="handleQuery"
10
-        />
5
+        <el-input v-model="queryParams.contractNumber" placeholder="请输入合同编号" clearable
6
+          @keyup.enter.native="handleQuery" />
11
       </el-form-item>
7
       </el-form-item>
12
       <el-form-item label="拟稿人" prop="drafter">
8
       <el-form-item label="拟稿人" prop="drafter">
13
-        <el-input
14
-          v-model="queryParams.drafter"
15
-          placeholder="请输入拟稿人"
16
-          clearable
17
-          @keyup.enter.native="handleQuery"
18
-        />
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>
11
+        </el-select>
19
       </el-form-item>
12
       </el-form-item>
20
       <el-form-item label="拟稿日期" prop="draftTime">
13
       <el-form-item label="拟稿日期" prop="draftTime">
21
-        <el-date-picker clearable
22
-          v-model="queryParams.draftTime"
23
-          type="date"
24
-          value-format="yyyy-MM-dd"
14
+        <el-date-picker clearable v-model="queryParams.draftTime" type="date" value-format="yyyy-MM-dd"
25
           placeholder="请选择拟稿日期">
15
           placeholder="请选择拟稿日期">
26
         </el-date-picker>
16
         </el-date-picker>
27
       </el-form-item>
17
       </el-form-item>
28
       <el-form-item label="签订日期" prop="signDate">
18
       <el-form-item label="签订日期" prop="signDate">
29
-        <el-date-picker clearable
30
-          v-model="queryParams.signDate"
31
-          type="date"
32
-          value-format="yyyy-MM-dd"
19
+        <el-date-picker clearable v-model="queryParams.signDate" type="date" value-format="yyyy-MM-dd"
33
           placeholder="请选择签订日期">
20
           placeholder="请选择签订日期">
34
         </el-date-picker>
21
         </el-date-picker>
35
       </el-form-item>
22
       </el-form-item>
39
       </el-form-item>
26
       </el-form-item>
40
     </el-form>
27
     </el-form>
41
 
28
 
42
-    <el-row :gutter="10" class="mb8">
29
+    <!-- <el-row :gutter="10" class="mb8">
43
       <el-col :span="1.5">
30
       <el-col :span="1.5">
44
-        <el-button
45
-          type="primary"
46
-          plain
47
-          icon="el-icon-plus"
48
-          size="mini"
49
-          @click="handleAdd"
50
-          v-hasPermi="['oa:contract:add']"
51
-        >新增</el-button>
31
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
32
+          v-hasPermi="['oa:contract:add']">新增</el-button>
52
       </el-col>
33
       </el-col>
53
       <el-col :span="1.5">
34
       <el-col :span="1.5">
54
-        <el-button
55
-          type="success"
56
-          plain
57
-          icon="el-icon-edit"
58
-          size="mini"
59
-          :disabled="single"
60
-          @click="handleUpdate"
61
-          v-hasPermi="['oa:contract:edit']"
62
-        >修改</el-button>
35
+        <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
36
+          v-hasPermi="['oa:contract:edit']">修改</el-button>
63
       </el-col>
37
       </el-col>
64
       <el-col :span="1.5">
38
       <el-col :span="1.5">
65
-        <el-button
66
-          type="danger"
67
-          plain
68
-          icon="el-icon-delete"
69
-          size="mini"
70
-          :disabled="multiple"
71
-          @click="handleDelete"
72
-          v-hasPermi="['oa:contract:remove']"
73
-        >删除</el-button>
39
+        <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
40
+          v-hasPermi="['oa:contract:remove']">删除</el-button>
74
       </el-col>
41
       </el-col>
75
       <el-col :span="1.5">
42
       <el-col :span="1.5">
76
-        <el-button
77
-          type="warning"
78
-          plain
79
-          icon="el-icon-download"
80
-          size="mini"
81
-          @click="handleExport"
82
-          v-hasPermi="['oa:contract:export']"
83
-        >导出</el-button>
43
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
44
+          v-hasPermi="['oa:contract:export']">导出</el-button>
84
       </el-col>
45
       </el-col>
85
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
46
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
86
-    </el-row>
47
+    </el-row> -->
87
 
48
 
88
     <el-table v-loading="loading" :data="contractList" @selection-change="handleSelectionChange">
49
     <el-table v-loading="loading" :data="contractList" @selection-change="handleSelectionChange">
89
       <el-table-column type="selection" width="55" align="center" />
50
       <el-table-column type="selection" width="55" align="center" />
90
-      <el-table-column label="合同id" align="center" prop="contractId" />
51
+      <!-- <el-table-column label="合同id" align="center" prop="contractId" /> -->
91
       <el-table-column label="合同编号" align="center" prop="contractNumber" />
52
       <el-table-column label="合同编号" align="center" prop="contractNumber" />
92
       <el-table-column label="合同金额" align="center" prop="amount" />
53
       <el-table-column label="合同金额" align="center" prop="amount" />
93
       <el-table-column label="履约保证金" align="center" prop="deposit" />
54
       <el-table-column label="履约保证金" align="center" prop="deposit" />
94
-      <el-table-column label="合同文件" align="center" prop="contractDocument" />
95
-      <el-table-column label="拟稿人" align="center" prop="drafter" />
55
+      <el-table-column label="合同文件" align="center" prop="contractDocument" show-overflow-tooltip>
56
+        <template slot-scope="scope">
57
+          <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + scope.row.contractDocument}`)">
58
+            {{ getFileName(scope.row.contractDocument) }}
59
+          </el-link>
60
+        </template>
61
+      </el-table-column>
62
+      <el-table-column label="拟稿人" align="center" prop="drafter">
63
+        <template slot-scope="scope">
64
+          {{ getUserName(scope.row.drafter) }}
65
+        </template>
66
+      </el-table-column>
96
       <el-table-column label="拟稿日期" align="center" prop="draftTime" width="180">
67
       <el-table-column label="拟稿日期" align="center" prop="draftTime" width="180">
97
         <template slot-scope="scope">
68
         <template slot-scope="scope">
98
           <span>{{ parseTime(scope.row.draftTime, '{y}-{m}-{d}') }}</span>
69
           <span>{{ parseTime(scope.row.draftTime, '{y}-{m}-{d}') }}</span>
99
         </template>
70
         </template>
100
       </el-table-column>
71
       </el-table-column>
101
-      <el-table-column label="合同备注" align="center" prop="remark" />
102
       <el-table-column label="签订日期" align="center" prop="signDate" width="180">
72
       <el-table-column label="签订日期" align="center" prop="signDate" width="180">
103
         <template slot-scope="scope">
73
         <template slot-scope="scope">
104
           <span>{{ parseTime(scope.row.signDate, '{y}-{m}-{d}') }}</span>
74
           <span>{{ parseTime(scope.row.signDate, '{y}-{m}-{d}') }}</span>
105
         </template>
75
         </template>
106
       </el-table-column>
76
       </el-table-column>
107
       <el-table-column label="签订备注" align="center" prop="signRemark" />
77
       <el-table-column label="签订备注" align="center" prop="signRemark" />
108
-      <el-table-column label="签订扫描件" align="center" prop="signScan" />
109
-      <el-table-column label="评审方式" align="center" prop="commentType" />
78
+      <el-table-column label="签订扫描件" align="center" prop="signScan" show-overflow-tooltip>
79
+        <template slot-scope="scope">
80
+          <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + scope.row.signScan}`)">
81
+            {{ getFileName(scope.row.signScan) }}
82
+          </el-link>
83
+        </template>
84
+      </el-table-column>
85
+      <el-table-column label="评审方式" align="center" prop="commentType">
86
+        <template slot-scope="scope">
87
+          {{ getCommentType(scope.row.commentType) }}
88
+        </template>
89
+      </el-table-column>
90
+      <el-table-column label="合同备注" align="center" prop="remark" />
110
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
91
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
111
         <template slot-scope="scope">
92
         <template slot-scope="scope">
112
-          <el-button
113
-            size="mini"
114
-            type="text"
115
-            icon="el-icon-edit"
116
-            @click="handleUpdate(scope.row)"
117
-            v-hasPermi="['oa:contract:edit']"
118
-          >修改</el-button>
119
-          <el-button
120
-            size="mini"
121
-            type="text"
122
-            icon="el-icon-delete"
123
-            @click="handleDelete(scope.row)"
124
-            v-hasPermi="['oa:contract:remove']"
125
-          >删除</el-button>
93
+          <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"
94
+            v-hasPermi="['oa:contract:query']">查看</el-button>
95
+          <!-- <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
96
+            v-hasPermi="['oa:contract:edit']">修改</el-button>
97
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
98
+            v-hasPermi="['oa:contract:remove']">删除</el-button> -->
126
         </template>
99
         </template>
127
       </el-table-column>
100
       </el-table-column>
128
     </el-table>
101
     </el-table>
129
-    
130
-    <pagination
131
-      v-show="total>0"
132
-      :total="total"
133
-      :page.sync="queryParams.pageNum"
134
-      :limit.sync="queryParams.pageSize"
135
-      @pagination="getList"
136
-    />
102
+
103
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
104
+      @pagination="getList" />
137
 
105
 
138
     <!-- 添加或修改cmc合同评审对话框 -->
106
     <!-- 添加或修改cmc合同评审对话框 -->
139
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
140
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
107
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
108
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
141
         <el-form-item label="合同编号" prop="contractNumber">
109
         <el-form-item label="合同编号" prop="contractNumber">
142
           <el-input v-model="form.contractNumber" placeholder="请输入合同编号" />
110
           <el-input v-model="form.contractNumber" placeholder="请输入合同编号" />
143
         </el-form-item>
111
         </el-form-item>
154
           <el-input v-model="form.drafter" placeholder="请输入拟稿人" />
122
           <el-input v-model="form.drafter" placeholder="请输入拟稿人" />
155
         </el-form-item>
123
         </el-form-item>
156
         <el-form-item label="拟稿日期" prop="draftTime">
124
         <el-form-item label="拟稿日期" prop="draftTime">
157
-          <el-date-picker clearable
158
-            v-model="form.draftTime"
159
-            type="date"
160
-            value-format="yyyy-MM-dd"
125
+          <el-date-picker clearable v-model="form.draftTime" type="date" value-format="yyyy-MM-dd"
161
             placeholder="请选择拟稿日期">
126
             placeholder="请选择拟稿日期">
162
           </el-date-picker>
127
           </el-date-picker>
163
         </el-form-item>
128
         </el-form-item>
165
           <el-input v-model="form.remark" placeholder="请输入合同备注" />
130
           <el-input v-model="form.remark" placeholder="请输入合同备注" />
166
         </el-form-item>
131
         </el-form-item>
167
         <el-form-item label="签订日期" prop="signDate">
132
         <el-form-item label="签订日期" prop="signDate">
168
-          <el-date-picker clearable
169
-            v-model="form.signDate"
170
-            type="date"
171
-            value-format="yyyy-MM-dd"
172
-            placeholder="请选择签订日期">
133
+          <el-date-picker clearable v-model="form.signDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择签订日期">
173
           </el-date-picker>
134
           </el-date-picker>
174
         </el-form-item>
135
         </el-form-item>
175
         <el-form-item label="签订备注" prop="signRemark">
136
         <el-form-item label="签订备注" prop="signRemark">
184
         <el-button @click="cancel">取 消</el-button>
145
         <el-button @click="cancel">取 消</el-button>
185
       </div>
146
       </div>
186
     </el-dialog>
147
     </el-dialog>
148
+    <!-- 查看详情 -->
149
+    <el-dialog :title="title" :visible.sync="openInfo" width="600px" append-to-body>
150
+
151
+    </el-dialog>
187
   </div>
152
   </div>
188
 </template>
153
 </template>
189
 
154
 
190
 <script>
155
 <script>
191
 import { listContract, getContract, delContract, addContract, updateContract } from "@/api/oa/contract/contract";
156
 import { listContract, getContract, delContract, addContract, updateContract } from "@/api/oa/contract/contract";
192
-
193
 export default {
157
 export default {
194
   name: "Contract",
158
   name: "Contract",
195
   data() {
159
   data() {
196
     return {
160
     return {
161
+      baseUrl: process.env.VUE_APP_BASE_API,
197
       // 遮罩层
162
       // 遮罩层
198
       loading: true,
163
       loading: true,
199
       // 选中数组
164
       // 选中数组
212
       title: "",
177
       title: "",
213
       // 是否显示弹出层
178
       // 是否显示弹出层
214
       open: false,
179
       open: false,
180
+      openInfo:false,
215
       // 查询参数
181
       // 查询参数
216
       queryParams: {
182
       queryParams: {
217
         pageNum: 1,
183
         pageNum: 1,
231
       form: {},
197
       form: {},
232
       // 表单校验
198
       // 表单校验
233
       rules: {
199
       rules: {
234
-      }
200
+      },
201
+      project:{}
235
     };
202
     };
236
   },
203
   },
237
   created() {
204
   created() {
252
       this.open = false;
219
       this.open = false;
253
       this.reset();
220
       this.reset();
254
     },
221
     },
222
+    getCommentType(row){
223
+      let name = '';
224
+      if(row == '0'){
225
+        name = '无须评审'
226
+      }else if(row == '1'){
227
+        name = '会议评审'
228
+      }else{
229
+        name = '线上评审'
230
+      }
231
+      return name
232
+    },
255
     // 表单重置
233
     // 表单重置
256
     reset() {
234
     reset() {
257
       this.form = {
235
       this.form = {
283
     // 多选框选中数据
261
     // 多选框选中数据
284
     handleSelectionChange(selection) {
262
     handleSelectionChange(selection) {
285
       this.ids = selection.map(item => item.contractId)
263
       this.ids = selection.map(item => item.contractId)
286
-      this.single = selection.length!==1
264
+      this.single = selection.length !== 1
287
       this.multiple = !selection.length
265
       this.multiple = !selection.length
288
     },
266
     },
289
     /** 新增按钮操作 */
267
     /** 新增按钮操作 */
292
       this.open = true;
270
       this.open = true;
293
       this.title = "添加cmc合同评审";
271
       this.title = "添加cmc合同评审";
294
     },
272
     },
273
+    handleView(row){
274
+      this.openInfo = true;
275
+      this.title = "合同详情";
276
+      this.form = row
277
+    },
295
     /** 修改按钮操作 */
278
     /** 修改按钮操作 */
296
     handleUpdate(row) {
279
     handleUpdate(row) {
297
       this.reset();
280
       this.reset();
325
     /** 删除按钮操作 */
308
     /** 删除按钮操作 */
326
     handleDelete(row) {
309
     handleDelete(row) {
327
       const contractIds = row.contractId || this.ids;
310
       const contractIds = row.contractId || this.ids;
328
-      this.$modal.confirm('是否确认删除cmc合同评审编号为"' + contractIds + '"的数据项?').then(function() {
311
+      this.$modal.confirm('是否确认删除cmc合同评审编号为"' + contractIds + '"的数据项?').then(function () {
329
         return delContract(contractIds);
312
         return delContract(contractIds);
330
       }).then(() => {
313
       }).then(() => {
331
         this.getList();
314
         this.getList();
332
         this.$modal.msgSuccess("删除成功");
315
         this.$modal.msgSuccess("删除成功");
333
-      }).catch(() => {});
316
+      }).catch(() => { });
334
     },
317
     },
335
     /** 导出按钮操作 */
318
     /** 导出按钮操作 */
336
     handleExport() {
319
     handleExport() {

+ 2
- 2
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-05-30 18:13:12
5
+ * @LastEditTime: 2024-06-04 15:49:07
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div class="project-wrapper">
8
   <div class="project-wrapper">
295
     // 查询项目列表
295
     // 查询项目列表
296
     getList() {
296
     getList() {
297
       this.loading = true
297
       this.loading = true
298
-      if(this.deptId > 104){
298
+      if(this.deptId > 107){
299
         this.queryParams.undertakingDept = this.deptId
299
         this.queryParams.undertakingDept = this.deptId
300
       }
300
       }
301
       listProject(this.queryParams).then(response => {
301
       listProject(this.queryParams).then(response => {

+ 11
- 0
oa-ui/src/views/oa/project/info.vue View File

116
                 target="_blank">
116
                 target="_blank">
117
                 <span class="el-icon-document"> {{ getFileName(project.taskDocument) }} </span>
117
                 <span class="el-icon-document"> {{ getFileName(project.taskDocument) }} </span>
118
               </el-link>
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" /> -->
119
             </el-descriptions-item>
121
             </el-descriptions-item>
120
             <el-descriptions-item :span="3">
122
             <el-descriptions-item :span="3">
121
               <template slot="label">
123
               <template slot="label">
202
                 :underline="false" target="_blank">
204
                 :underline="false" target="_blank">
203
                 <span class="el-icon-document"> {{ getFileName(project.organizeDocument) }} </span>
205
                 <span class="el-icon-document"> {{ getFileName(project.organizeDocument) }} </span>
204
               </el-link>
206
               </el-link>
207
+              <el-button class="ml20" type="primary" size="mini" plain @click="reviewWord(`${baseUrl}${'/profile/upload' + project.organizeDocument}`)">在线预览</el-button>
205
             </el-descriptions-item>
208
             </el-descriptions-item>
206
           </el-descriptions>
209
           </el-descriptions>
207
         </div>
210
         </div>
579
       this.$tab.closeOpenPage(obj);
582
       this.$tab.closeOpenPage(obj);
580
       this.$router.push({ path: '/project' });
583
       this.$router.push({ path: '/project' });
581
     },
584
     },
585
+    reviewWord(url){
586
+      this.$router.push({
587
+        path:'/preview',
588
+        query:{
589
+          url:url
590
+        }
591
+      })
592
+    }
582
   },
593
   },
583
 }
594
 }
584
 </script>
595
 </script>

+ 1
- 1
oa-ui/src/views/oa/tender/index.vue View File

89
       <!-- <el-table-column label="标书检查人" align="center" prop="tenderChecker" /> -->
89
       <!-- <el-table-column label="标书检查人" align="center" prop="tenderChecker" /> -->
90
       <!-- <el-table-column label="标书打印装订人" align="center" prop="tenderPrinter" /> -->
90
       <!-- <el-table-column label="标书打印装订人" align="center" prop="tenderPrinter" /> -->
91
       <!-- <el-table-column label="标书文件" align="center" prop="tenderDocument" /> -->
91
       <!-- <el-table-column label="标书文件" align="center" prop="tenderDocument" /> -->
92
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
92
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="120px">
93
         <template slot-scope="scope">
93
         <template slot-scope="scope">
94
           <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"
94
           <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"
95
             v-hasPermi="['oa:tender:query']">查看</el-button>
95
             v-hasPermi="['oa:tender:query']">查看</el-button>

Loading…
Cancel
Save