Procházet zdrojové kódy

新增任务通知单打印

余思翰 před 9 měsíci
rodič
revize
1ee1644c13

+ 23
- 2
oa-ui/src/utils/deleteResource.js Zobrazit soubor

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-06-13 17:07:59
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-08-02 17:02:24
5
+ * @LastEditTime: 2024-08-09 15:00:11
6 6
  */
7 7
 import request from '@/utils/request'
8 8
 
@@ -68,7 +68,28 @@ const apiEndpoints = [
68 68
     apiUrl: [
69 69
       '/oa/projectChange/:id',
70 70
     ]
71
-  }
71
+  },
72
+  {
73
+    procDefName: '成果归档',
74
+    apiUrl: [
75
+      '/oa/archive/:id',
76
+    ]
77
+  },
78
+  {
79
+    procDefName: '其他结算',
80
+    apiUrl: [
81
+      '/oa/settle/:id',
82
+      '/oa/settleSummary/:id',
83
+      '/oa/settleWork/:id',
84
+    ]
85
+  },
86
+  {
87
+    procDefName: '品牌项目支付',
88
+    apiUrl: [
89
+      '/oa/brand/:id',
90
+      '/oa/brandPayment/:id'
91
+    ]
92
+  },
72 93
 ]
73 94
 
74 95
 // 编写一个方法来处理删除请求,并同时发送所有API请求  

+ 1
- 2
oa-ui/src/views/flowable/form/business/brandForm.vue Zobrazit soubor

@@ -99,8 +99,7 @@
99 99
           </el-form-item>
100 100
         </el-form>
101 101
         <div style="text-align: center;">
102
-          <el-button type="primary" @click="submitForm" v-if="taskName == '支付申请'">确 定</el-button>
103
-          <el-button @click="cancel" v-if="taskName == '支付申请'">取 消</el-button>
102
+          <el-button type="primary" @click="submitForm" v-if="taskName == '支付申请'">提 交</el-button>
104 103
           <el-button @click="preserve()" type="warning" v-if="taskName == '财务反馈'">保 存</el-button>
105 104
           <el-button @click="submitForm" type="danger" v-if="taskName == '财务反馈'">保存并结束</el-button>
106 105
         </div>

+ 212
- 0
oa-ui/src/views/flowable/form/components/print/projectPrint.vue Zobrazit soubor

@@ -0,0 +1,212 @@
1
+<template>
2
+  <div>
3
+    <div id="printProject">
4
+      <h2 class="text-center title">任务通知单</h2>
5
+      <table border="1">
6
+        <tr>
7
+          <td class="fontbold">项目名称</td>
8
+          <td>{{ project.projectName }}</td>
9
+          <td class="fontbold">项目编号</td>
10
+          <td :colspan="3">{{ project.projectNumber }}</td>
11
+        </tr>
12
+        <tr>
13
+          <td class="fontbold">项目类型</td>
14
+          <td>{{ project.projectType }}</td>
15
+          <td class="fontbold">项目来源</td>
16
+          <td :colspan="3">{{ project.projectSource == '0' ? '院内' : '院外' }}</td>
17
+        </tr>
18
+        <tr>
19
+          <td class="fontbold">承担部门</td>
20
+          <td>{{ getDeptNames(project.undertakingDept) }}</td>
21
+          <td class="fontbold">项目负责人</td>
22
+          <td :colspan="3">{{ getUserName(project.projectLeader) }}</td>
23
+        </tr>
24
+        <tr>
25
+          <td class="fontbold">甲方单位</td>
26
+          <td>{{ project.partyA ? project.partyA.partyAName : '' }}</td>
27
+          <td class="fontbold">联系人及电话</td>
28
+          <td :colspan="3">{{ project.contactPerson + '/' + project.telephone }}</td>
29
+        </tr>
30
+        <tr>
31
+          <td :colspan="10" class="header bg text-center">测绘项目计划工作量</td>
32
+        </tr>
33
+        <tr class="text-center">
34
+          <td class="fontbold">序号</td>
35
+          <td class="fontbold">工作内容</td>
36
+          <td class="fontbold">比例尺或等级</td>
37
+          <td class="fontbold">单位</td>
38
+          <td class="fontbold">工作量</td>
39
+          <td class="fontbold">要求完成时间</td>
40
+        </tr>
41
+        <tr v-for="(work, index) in workList" class="text-center">
42
+          <td>{{ index + 1 }}</td>
43
+          <td>{{ work.content }}</td>
44
+          <td>{{ work.scale }}</td>
45
+          <td>{{ work.unit }}</td>
46
+          <td>{{ work.workload }}</td>
47
+          <td>{{ work.price }}</td>
48
+        </tr>
49
+        <!-- page-break-after:always  自动分页代码-->
50
+        <tr>
51
+          <td :colspan="10" class="header bg text-center">审核情况</td>
52
+        </tr>
53
+        <tr>
54
+          <td class="fontbold">
55
+            经营发展部审核
56
+          </td>
57
+          <td :colspan="5">
58
+            <div class="minHeight">{{ projectComment.jyComment }}</div>
59
+            <el-row>
60
+              <el-col :span="6" :offset="11">
61
+                签名:<span class="auditor">{{ getUserName(projectComment.jyApprover) }}</span>
62
+              </el-col>
63
+              <el-col :span="6">
64
+                审批日期:<span>{{ projectComment.jyApprovalTime }}</span>
65
+              </el-col>
66
+            </el-row>
67
+          </td>
68
+        </tr>
69
+        <tr>
70
+          <td class="fontbold">
71
+            分管领导批准
72
+          </td>
73
+          <td :colspan="5">
74
+            <div class="minHeight">{{ projectComment.manageComment }}</div>
75
+            <el-row>
76
+              <el-col :span="6" :offset="11">
77
+                签名:<span class="auditor">{{ getUserName(projectComment.manageApprover) }}</span>
78
+              </el-col>
79
+              <el-col :span="6">
80
+                审批日期:<span>{{ projectComment.manageApprovalTime }}</span>
81
+              </el-col>
82
+            </el-row>
83
+          </td>
84
+        </tr>
85
+        <tr>
86
+          <td class="fontbold">
87
+            生产部门确认
88
+          </td>
89
+          <td :colspan="5">
90
+            <div class="minHeight">{{ projectComment.scComment }}</div>
91
+            <el-row>
92
+              <el-col :span="6" :offset="11">
93
+                签名:<span class="auditor">{{ projectComment.scApproverName }}</span>
94
+              </el-col>
95
+              <el-col :span="6" style="min-width:180px;">
96
+                审批日期:<span>{{ projectComment.scApprovalTime }}</span>
97
+              </el-col>
98
+            </el-row>
99
+          </td>
100
+        </tr>
101
+      </table>
102
+    </div>
103
+    <div class="text-center mt20">
104
+      <el-button type="primary" v-print="print">确认打印</el-button>
105
+      <el-button @click="$emit('cancel')">取消</el-button>
106
+    </div>
107
+  </div>
108
+</template>
109
+
110
+<script>
111
+export default {
112
+  props: {
113
+    project: {
114
+      type: Object
115
+    },
116
+    workList: {
117
+      type: Array
118
+    },
119
+    projectComment: {
120
+      type: Object
121
+    }
122
+  },
123
+  data() {
124
+    return {
125
+      print: {
126
+        id: 'printProject',
127
+        popTitle: '任务通知单', // 打印配置页上方标题
128
+        extraHead: '', //最上方的头部文字,附加在head标签上的额外标签,使用逗号分隔
129
+        preview: false, // 是否启动预览模式,默认是false(开启预览模式,可以先预览后打印)
130
+        previewTitle: '', // 打印预览的标题(开启预览模式后出现),
131
+        previewPrintBtnLabel: '', // 打印预览的标题的下方按钮文本,点击可进入打印(开启预览模式后出现)
132
+        zIndex: '', // 预览的窗口的z-index,默认是 20002(此值要高一些,这涉及到预览模式是否显示在最上面)
133
+        previewBeforeOpenCallback() { }, //预览窗口打开之前的callback(开启预览模式调用)
134
+        previewOpenCallback() { }, // 预览窗口打开之后的callback(开启预览模式调用)
135
+        beforeOpenCallback() { }, // 开启打印前的回调事件
136
+        openCallback() { }, // 调用打印之后的回调事件
137
+        closeCallback() { }, //关闭打印的回调事件(无法确定点击的是确认还是取消)
138
+        url: '',
139
+        standard: '',
140
+        extraCss: ''
141
+      }
142
+    }
143
+  },
144
+}
145
+</script>
146
+<style lang="scss" scoped>
147
+table {
148
+  /*边框*/
149
+  /* border: 1px solid black; */
150
+  width: 90%;
151
+  // text-align: center;
152
+  border-collapse: collapse;
153
+  margin: 0 auto;
154
+
155
+  /*设置背景颜色*/
156
+  /* background-color: #bfa; */
157
+  td {
158
+    padding: 10px;
159
+    // line-height: 30px;
160
+  }
161
+}
162
+
163
+.header {
164
+  font-family: '黑体';
165
+  font-size: 16px;
166
+  font-weight: bold;
167
+  line-height: 30px;
168
+}
169
+
170
+.bg {
171
+  background-color: #eee;
172
+  -webkit-print-color-adjust: exact;
173
+}
174
+
175
+.title {
176
+  font-family: '黑体';
177
+  font-size: 25px;
178
+  font-weight: bold;
179
+  line-height: 30px;
180
+}
181
+
182
+.fontbold {
183
+  font-weight: bold;
184
+  text-align: center;
185
+  max-width: 200px;
186
+}
187
+
188
+.conment-width {
189
+  // max-width: 200px;
190
+}
191
+
192
+
193
+
194
+@page {
195
+  size: auto;
196
+  /* 去除页脚 */
197
+  margin-bottom: 0;
198
+  // 横向A4
199
+  // size:A4 landscape;
200
+}
201
+
202
+@media print {
203
+  #print table {
204
+    width: 100%;
205
+  }
206
+  
207
+}
208
+
209
+.minHeight {
210
+  min-height: 80px;
211
+}
212
+</style>

+ 1
- 2
oa-ui/src/views/flowable/form/projectProcess/index.vue Zobrazit soubor

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-02-27 14:49:15
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-08 16:19:34
5
+ * @LastEditTime: 2024-08-09 15:26:54
6 6
 -->
7 7
 
8 8
 <template>
@@ -60,7 +60,6 @@
60 60
         </el-card>
61 61
       </el-col>
62 62
     </el-row>
63
-
64 63
   </div>
65 64
 </template>
66 65
 

+ 45
- 44
oa-ui/src/views/oa/device/detail.vue Zobrazit soubor

@@ -102,19 +102,21 @@
102 102
           </div>
103 103
           <el-row :gutter="10" class="mb8">
104 104
             <el-col :span="1.5">
105
-              <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAddExpense" v-hasPermi="['device:record:add']">新增</el-button>
105
+              <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAddExpense"
106
+                v-hasPermi="['device:record:add']">新增</el-button>
106 107
             </el-col>
107 108
             <el-col :span="1.5">
108 109
               <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple"
109 110
                 @click="handleDeleteExpense" v-hasPermi="['device:record:remove']">删除</el-button>
110 111
             </el-col>
111 112
             <el-col :span="1.5">
112
-              <el-button type="warning" plain icon="el-icon-download" size="mini"
113
-                @click="handleExportExpense" v-hasPermi="['device:record:export']">导出</el-button>
113
+              <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExportExpense"
114
+                v-hasPermi="['device:record:export']">导出</el-button>
114 115
             </el-col>
115 116
             <el-col :span="1.5">
116
-              <el-button type="info" plain icon="el-icon-s-release" size="mini" @click="handleScrap" v-hasPermi="['device:record:add']">{{ scrapButtonName
117
-              }}</el-button>
117
+              <el-button type="info" plain icon="el-icon-s-release" size="mini" @click="handleScrap"
118
+                v-hasPermi="['device:record:add']">{{ scrapButtonName
119
+                }}</el-button>
118 120
             </el-col>
119 121
           </el-row>
120 122
           <el-table v-loading="loading" :data="expenseList" @selection-change="handleSelectionExpenseChange">
@@ -127,7 +129,7 @@
127 129
             <el-table-column label="费用类型" align="center" prop="expenseType">
128 130
               <template slot-scope="scope">
129 131
                 <el-tag :type="expenseTypeStyle(scope.row.expenseType)">{{ expenseTypeText(scope.row.expenseType)
130
-                }}</el-tag>
132
+                  }}</el-tag>
131 133
               </template>
132 134
             </el-table-column>
133 135
             <el-table-column label="费用金额" align="center" prop="expense" />
@@ -137,19 +139,25 @@
137 139
               </template>
138 140
             </el-table-column>
139 141
             <el-table-column label="备注" align="center" prop="remark" />
140
-            <el-table-column label="附件" align="center" prop="document" />
142
+            <el-table-column label="附件" align="center" prop="document">
143
+              <template slot-scope="scope">
144
+                <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + scope.row.document}`)">
145
+                  {{ getFileName(scope.row.document) }}
146
+                </el-link>
147
+              </template>
148
+            </el-table-column>
141 149
             <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
142 150
               <template slot-scope="scope">
143
-                <el-button size="mini" type="text" icon="el-icon-edit"
144
-                  @click="handleUpdateExpense(scope.row)" v-hasPermi="['device:record:edit']">修改</el-button>
145
-                <el-button size="mini" type="text" icon="el-icon-delete"
146
-                  @click="handleDeleteExpense(scope.row)" v-hasPermi="['device:record:remove']">删除</el-button>
151
+                <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdateExpense(scope.row)"
152
+                  v-hasPermi="['device:record:edit']">修改</el-button>
153
+                <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDeleteExpense(scope.row)"
154
+                  v-hasPermi="['device:record:remove']">删除</el-button>
147 155
               </template>
148 156
             </el-table-column>
149 157
           </el-table>
150 158
 
151
-          <pagination v-show="expenseTotal > 0" :total="expenseTotal" :autoScroll="false" :page.sync="queryParams.pageNum"
152
-            :limit.sync="queryParams.pageSize" @pagination="getExpenseList" />
159
+          <pagination v-show="expenseTotal > 0" :total="expenseTotal" :autoScroll="false"
160
+            :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getExpenseList" />
153 161
         </el-card>
154 162
       </el-col>
155 163
       <el-col :span="12" :xs="24">
@@ -160,15 +168,16 @@
160 168
           </div>
161 169
           <el-row v-if="routeType == 'supply'" :gutter="10" class="mb8">
162 170
             <el-col :span="1.5">
163
-              <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAddHandover" v-hasPermi="['device:record:add']">新增</el-button>
171
+              <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAddHandover"
172
+                v-hasPermi="['device:record:add']">新增</el-button>
164 173
             </el-col>
165 174
             <el-col :span="1.5">
166 175
               <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple"
167 176
                 @click="handleDeleteHandover" v-hasPermi="['device:record:remove']">删除</el-button>
168 177
             </el-col>
169 178
             <el-col :span="1.5">
170
-              <el-button type="warning" plain icon="el-icon-download" size="mini"
171
-                @click="handleExportHandover" v-hasPermi="['device:record:export']">导出</el-button>
179
+              <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExportHandover"
180
+                v-hasPermi="['device:record:export']">导出</el-button>
172 181
             </el-col>
173 182
           </el-row>
174 183
           <!-- 设备申领记录 -->
@@ -210,8 +219,8 @@
210 219
               </template>
211 220
             </el-table-column>
212 221
           </el-table>
213
-          <pagination v-show="approvalTotal > 0" :total="approvalTotal" :autoScroll="false" :page.sync="queryParams.pageNum"
214
-            :limit.sync="queryParams.pageSize" @pagination="getApprovalList" />
222
+          <pagination v-show="approvalTotal > 0" :total="approvalTotal" :autoScroll="false"
223
+            :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getApprovalList" />
215 224
 
216 225
           <!-- 设备移交记录 -->
217 226
           <el-table v-if="routeType == 'supply'" v-loading="loading" :data="handoverList"
@@ -247,10 +256,10 @@
247 256
             <el-table-column label="备注" align="center" prop="remark" />
248 257
             <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
249 258
               <template slot-scope="scope">
250
-                <el-button size="mini" type="text" icon="el-icon-edit"
251
-                  @click="handleUpdateHandover(scope.row)" v-hasPermi="['device:record:edit']">修改</el-button>
252
-                <el-button size="mini" type="text" icon="el-icon-delete"
253
-                  @click="handleDeleteHandover(scope.row)" v-hasPermi="['device:record:remove']">删除</el-button>
259
+                <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdateHandover(scope.row)"
260
+                  v-hasPermi="['device:record:edit']">修改</el-button>
261
+                <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDeleteHandover(scope.row)"
262
+                  v-hasPermi="['device:record:remove']">删除</el-button>
254 263
               </template>
255 264
             </el-table-column>
256 265
           </el-table>
@@ -289,8 +298,8 @@
289 298
           <el-input v-model="expenseForm.remark" placeholder="请输入备注" />
290 299
         </el-form-item>
291 300
         <el-form-item label="附件" prop="document">
292
-          <FileUpload :limit="1" :filePathName="expenseName" :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']"
293
-            @input="getExpensePath"></FileUpload>
301
+          <FileUpload :limit="1" :filePathName="expenseName"
302
+            :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']" @input="getExpensePath"></FileUpload>
294 303
           <div v-if="expenseModifyOpen">
295 304
             <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear"
296 305
               tag="ul">
@@ -401,7 +410,8 @@
401 410
             <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear"
402 411
               tag="ul">
403 412
               <li key="li01" class="el-upload-list__item ele-upload-list__item-content">
404
-                <el-link :href="`${baseUrl}${'/profile/upload' + scrapForm.document}`" :underline="false" target="_blank">
413
+                <el-link :href="`${baseUrl}${'/profile/upload' + scrapForm.document}`" :underline="false"
414
+                  target="_blank">
405 415
                   <span class="el-icon-document" style="color:#0011ff;text-decoration: underline;">
406 416
                     {{ getFileName(scrapForm.document) }}
407 417
                   </span>
@@ -849,29 +859,20 @@ export default {
849 859
       }
850 860
     },
851 861
     stateTypeText(row) {
852
-      if (row.repairDevices) {
853
-        if (row.repairDevices.indexOf(this.$route.query.deviceId) == -1) {
854
-          return '完好'
855
-        }
856
-        else {
857
-          return '需维修'
858
-        }
862
+      if (!row.repairDevices || row.repairDevices.indexOf(this.$route.query.deviceId) == -1) {
863
+        return '完好'
864
+      }
865
+      else {
866
+        return '需维修'
859 867
       }
860
-      else 
861
-      return '完好'
862 868
     },
863 869
     stateTypeStyle(row) {
864
-
865
-      if (row.repairDevices) {
866
-        if (row.repairDevices.indexOf(this.$route.query.deviceId) == -1) {
867
-          return 'success'
868
-        }
869
-        else {
870
-          return 'danger'
871
-        }
872
-      }
873
-      else 
870
+      if (!row.repairDevices || row.repairDevices.indexOf(this.$route.query.deviceId) == -1) {
874 871
         return 'success'
872
+      }
873
+      else {
874
+        return 'danger'
875
+      }
875 876
     },
876 877
     statusTypeText(row) {
877 878
       if (row == '0') {

+ 14
- 2
oa-ui/src/views/oa/project/info.vue Zobrazit soubor

@@ -2,6 +2,7 @@
2 2
   <div class="app-container">
3 3
     <div class="header">
4 4
       <el-button icon="el-icon-d-arrow-left" plain type="primary" class="back" @click="goBack">返回</el-button>
5
+      <el-button type="success" plain @click="printOpen = true" class="print" icon="el-icon-printer">打印任务通知单</el-button>
5 6
       <h1>{{ '【' + project.projectNumber + '】' + project.projectName }}</h1>
6 7
       <el-button icon="el-icon-search" type="primary" class="records" @click="clickRecords">流转记录</el-button>
7 8
       <el-button icon="el-icon-connection" type="success" class="flow" @click="clickProcess">流程图</el-button>
@@ -490,6 +491,9 @@
490 491
         <el-button @click="deptOpen = false">取消</el-button>
491 492
       </div>
492 493
     </el-dialog>
494
+    <el-dialog title="打印预览" :visible.sync="printOpen" width="1000px" append-to-body>
495
+      <project-print :project="project" :workList="workList" :projectComment="projectComment" @cancel="printOpen = false"></project-print>
496
+    </el-dialog>
493 497
     <el-drawer title="流程图" :visible.sync="drawerOpen" direction="rtl">
494 498
       <div class="app-container">
495 499
         <flow :flowData="flowData" />
@@ -528,9 +532,10 @@ import { listProjectChange } from "@/api/oa/project/projectChange";
528 532
 import { flowXmlAndNodeByFormId } from "@/api/flowable/definition";
529 533
 import flow from '@/views/flowable/task/todo/detail/flow'
530 534
 import RowDetail from '@/views/flowable/task/myProcess/send/rowDetail.vue';
535
+import projectPrint from '@/views/flowable/form/components/print/projectPrint.vue';
531 536
 
532 537
 export default {
533
-  components: { budgetInfo, SafeTab, TechnicalTab, PlanTab, SettleData, BorrowData, BudgetTab, achiData, choosePeople, flow, RowDetail },
538
+  components: { budgetInfo, SafeTab, TechnicalTab, PlanTab, SettleData, BorrowData, BudgetTab, achiData, choosePeople, flow, RowDetail, projectPrint },
534 539
   created() {
535 540
     this.getUserList();
536 541
     this.getDeviceList();
@@ -585,7 +590,8 @@ export default {
585 590
         procInsId: '',
586 591
         deployId: ''
587 592
       },
588
-      isProjectLeader: false
593
+      isProjectLeader: false,
594
+      printOpen: false,
589 595
     }
590 596
   },
591 597
   methods: {
@@ -777,6 +783,12 @@ export default {
777 783
     top: -10px;
778 784
   }
779 785
 
786
+  .print {
787
+    position: absolute;
788
+    left: 102px;
789
+    top: -10px;
790
+  }
791
+
780 792
   .records {
781 793
     position: absolute;
782 794
     right: 120px;

Loading…
Zrušit
Uložit