apply-clients 3.3.216 → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/android.html +23 -23
  2. package/index.html +33 -33
  3. package/package.json +3 -3
  4. package/src/AndroidApp.vue +35 -30
  5. package/src/App.vue +20 -20
  6. package/src/android.js +21 -21
  7. package/src/apply.js +81 -90
  8. package/src/applyAndroid.js +1 -23
  9. package/src/components/android/AppOnetomany.vue +301 -285
  10. package/src/components/android/AppServiceView.vue +566 -570
  11. package/src/components/android/AppSign.vue +142 -142
  12. package/src/components/android/AppTakePic.vue +143 -144
  13. package/src/components/android/Process/AppExplorationUser.vue +320 -270
  14. package/src/components/android/Process/AppServiceControl.vue +757 -686
  15. package/src/components/android/Process/Processes/AppInstallationDetails.vue +456 -466
  16. package/src/components/android/ProgressReport/ProgressReportDetail.vue +64 -0
  17. package/src/components/android/ProgressReport/ProgressReportList.vue +209 -0
  18. package/src/components/android/Supervisory/AppProcessSupervisory.vue +73 -152
  19. package/src/components/android/Supervisory/AppSupervisoryCart.vue +121 -115
  20. package/src/components/android/TaskGraph.vue +125 -0
  21. package/src/components/product/ApplyCharge/ApplyChargeList.vue +36 -50
  22. package/src/components/product/ApplyCharge/ApplyChargeSearch.vue +3 -3
  23. package/src/components/product/Function/InstallFunction.vue +125 -122
  24. package/src/components/product/Function/InstallInfoSelect.vue +292 -318
  25. package/src/components/product/Function/Service/FunctionServiceControl.vue +222 -254
  26. package/src/components/product/Function/StopApplyCrrdList.vue +176 -0
  27. package/src/components/product/Function/functions/ApplyRecordCancel.vue +102 -0
  28. package/src/components/product/Function/functions/StopInstall.vue +106 -0
  29. package/src/components/product/Onetomany.vue +377 -296
  30. package/src/components/product/Order/OrderApply.vue +30 -30
  31. package/src/components/product/Order/OrderApplyList.vue +78 -67
  32. package/src/components/product/Order/OrderMessage.vue +11 -87
  33. package/src/components/product/Process/ExplorationSelect.vue +410 -369
  34. package/src/components/product/Process/ExplorationUser.vue +138 -128
  35. package/src/components/product/Process/Processes/InstallationDetails.vue +592 -504
  36. package/src/components/product/Process/Processes/Print/img/10101.png +0 -0
  37. package/src/components/product/Process/Processes/Print/img/1010109.png +0 -0
  38. package/src/components/product/Process/Processes/Print/img/1010110.png +0 -0
  39. package/src/components/product/Process/Processes/Print/img/1010111.png +0 -0
  40. package/src/components/product/Process/Processes/Print/img/1010112.png +0 -0
  41. package/src/components/product/Process/Processes/Print/printCharge.vue +142 -0
  42. package/src/components/product/Process/Processes/addressAndUserinfoManagement.vue +207 -181
  43. package/src/components/product/Process/Processes/chargeManagement.vue +639 -638
  44. package/src/components/product/Process/Processes/devicesManagement.vue +22 -2
  45. package/src/components/product/Process/Processes/selectApply.vue +1 -1
  46. package/src/components/product/Process/Service/ServiceControl.vue +1254 -883
  47. package/src/components/product/Process/Service/ShowBackReason.vue +33 -0
  48. package/src/components/product/ServiceView.vue +631 -741
  49. package/src/components/product/Stop/StopApply.vue +103 -103
  50. package/src/components/product/Stop/StopApplyList.vue +269 -254
  51. package/src/components/product/Supervisory/Service/SupervisoryServiceControl.vue +186 -517
  52. package/src/components/product/Supervisory/SupervisoryControl.vue +100 -108
  53. package/src/components/product/Supervisory/SupervisoryList.vue +233 -253
  54. package/src/components/product/Supervisory/SupervisoryhCart.vue +107 -124
  55. package/src/components/product/VueUtils/ApplyUpload.vue +273 -264
  56. package/src/components/product/VueUtils/HighMeter.vue +208 -0
  57. package/src/expandcssAndroid.less +1034 -517
  58. package/src/filiale/yuchuan/android/Process/AppServiceControl.vue +548 -414
  59. package/src/filiale/yuchuan/android/Process/Processes/AppInstallationDetails.vue +754 -456
  60. package/src/filiale/yuchuan/android/Task/Survey/SurveyTsak.vue +60 -0
  61. package/src/filiale/yuchuan/android.js +7 -8
  62. package/src/filiale/yuchuan/pc/Order/OrderApply.vue +528 -517
  63. package/src/filiale/yuchuan/pc/Order/OrderApplyList.vue +343 -343
  64. package/src/filiale/yuchuan/pc/Process/ExplorationSelect.vue +270 -231
  65. package/src/filiale/yuchuan/pc/Process/ExplorationUser.vue +147 -131
  66. package/src/filiale/yuchuan/pc/Process/Processes/ApplyMapCom.vue +66 -0
  67. package/src/filiale/yuchuan/pc/Process/Processes/InstallationDetails.vue +759 -0
  68. package/src/filiale/yuchuan/pc/Process/Processes/chargeManagement.vue +470 -0
  69. package/src/filiale/yuchuan/pc/Process/Service/ServiceControl.vue +879 -517
  70. package/src/filiale/yuchuan/pc.js +11 -13
  71. package/src/main.js +23 -23
  72. package/src/components/android/Function/AppFunctionServiceControl.vue +0 -329
  73. package/src/components/android/Function/AppInstallFunction.vue +0 -330
  74. package/src/components/android/Process/Processes/AppBuildSign.vue +0 -47
  75. package/src/components/android/Process/Processes/AppChargeManagement.vue +0 -468
  76. package/src/components/android/Process/Processes/AppDevicesManagement.vue +0 -490
  77. package/src/components/android/Process/Processes/AppSupplementalAgreement.vue +0 -297
  78. package/src/components/android/Process/Processes/AppjiaSign.vue +0 -47
  79. package/src/components/android/Process/Processes/AppjiafangSign.vue +0 -47
  80. package/src/components/android/Process/Processes/ApptechnologySign.vue +0 -47
  81. package/src/components/image/dwg.jpg +0 -0
  82. package/src/components/image/yasuobao.jpg +0 -0
  83. package/src/components/product/Function/Inform.vue +0 -73
  84. package/src/components/product/Function/MarketSurvey.vue +0 -81
  85. package/src/components/product/Process/Processes/printCharge.vue +0 -121
  86. package/src/components/product/Process/ShowBackReason.vue +0 -33
  87. package/src/components/product/Supervisory/Service/printChargeNode.vue +0 -873
  88. package/src/components/product/VueUtils/GaoPaiYi/HighMeter.vue +0 -1090
  89. package/src/components/product/VueUtils/ToolsPage.vue +0 -51
  90. package/src/components/product/VueUtils/Tree.vue +0 -330
  91. package/src/filiale/wuan/android.js +0 -0
  92. package/src/filiale/wuan/pc.js +0 -4
  93. package/src/filiale/yuchuan/android/AppServiceView.vue +0 -599
  94. package/src/filiale/yuchuan/android/Reserve/ApplyReserve.vue +0 -200
  95. package/src/filiale/yuchuan/android/SiteSurvey/TaskGraph.vue +0 -137
  96. package/src/filiale/yuchuan/pc/Process/Processes/MapCom.vue +0 -51
@@ -1,264 +1,273 @@
1
- <template>
2
- <div class="col-sm-12" style="background-color: #FFFFFF">
3
- <div class="col-sm-12" style="padding:50px 100px;height: 25%">
4
- <div class="form-group col-sm-5" v-if="issearch">
5
- <v-select
6
- class="select select_list"
7
- :value.sync="useType"
8
- width="90%"
9
- v-model="useType"
10
- :options='typeOfUse'
11
- :valueSingle="true"></v-select>
12
- </div>
13
- <div class="form-group col-sm-2" style="text-align: center" v-if="issearch">
14
- <button type="button" class="btn btn-primary item_btn" @click="load">搜索</button>
15
- </div>
16
- <div class="form-group col-sm-2" style="text-align: center" v-if="isupload">
17
- <button type="button" class="btn btn-primary item_btn" @click="showUpload = !showUpload">本地上传</button>
18
- </div>
19
- <div class="form-group col-sm-2" style="text-align: center" v-if="takeimg">
20
- <button type="button" class="btn btn-primary item_btn" @click="upload()">拍照</button>
21
- </div>
22
- </div>
23
- <hr style="width: 90%;margin: 0px auto;border: #999999 1px solid;"/>
24
- <div class="col-sm-12" style="overflow: scroll;height: 75%">
25
- <div :class="bootstraped ? bootstraped + ' showData' : 'col-sm-6 showData'" v-for="row in fileInfoData">
26
- <div class="col-sm-12 item">
27
- <div class="left col-sm-5">
28
- <a href="#" class="thumbnail" style="width: 100%;height: 100%">
29
- <img v-if="row.f_filetype === 'jpg'||row.f_filetype === 'png'||row.f_filetype === 'gif'||row.f_filetype === 'bmp'" :src="row.f_downloadURL" alt="..."/>
30
- <img v-if="row.f_filetype === 'pdf'" src="../../image/pdf.jpg" alt="" />
31
- <img v-if="row.f_filetype === 'zip' || row.f_filetype==='rar'" src="../../image/yasuobao.jpg" alt="" />
32
- <img v-if="row.f_filetype === 'dwg'" src="../../image/dwg.jpg" alt="" />
33
- <img v-if="row.f_filetype === 'xls'||row.f_filetype === 'xlsx'" src="../../image/excel.jpg" alt="" />
34
- <img v-if="row.f_filetype === 'doc'||row.f_filetype === 'docx'" src="../../image/doc.jpg" alt="" />
35
- </a>
36
- </div>
37
- <div class="right col-sm-7">
38
- <p :title="row.f_filename" class="clears"><strong>文件名:</strong>{{row.f_filename}}</p>
39
- <p :title="row.f_username" class="clears"><strong>操作员:</strong><span>{{row.f_username}}</span></p>
40
- <p :title="row.fusetype" class="clears"><strong>使用类型:</strong><span>{{row.fusetype}}</span></p>
41
- <p :title="row.f_uploaddate" class="clears"><strong>上传时间:</strong><span>{{row.f_uploaddate}}</span></p>
42
- <p :title="row.fremarks" class="clears"><strong>文件说明:</strong>{{row.fremarks}}</p>
43
- <p class="clears">
44
- <a v-if="row.f_filetype === 'jpg' || row.f_filetype==='png' || row.f_filetype==='gif' || row.f_filetype==='bmp'" :href="row.f_downloadURL" style="background:#6aa6e2" class="btn btn-primary" target="_blank" role="button">预览</a>
45
- <a v-else @click="downloadfile(row.f_downloadURL)" style="background:#6aa6e2" class="btn btn-primary" role="button">下载</a>
46
- <a v-if="isdelete" @click="delet($index, row)" href="#" class="btn btn-default" role="button" role="button">删除</a>
47
- </p>
48
- </div>
49
- </div>
50
- </div>
51
- </div>
52
- </div>
53
- <apply-high-meter v-if="showhighmeter" :show.sync="showhighmeter" @photo-finish="newPhoto" v-ref:ltgao ></apply-high-meter>
54
- <modal :show.sync="showUpload" v-ref:modal backdrop="false">
55
- <header slot="modal-header" class="modal-header">
56
- <button type="button" class="close" @click="close"><span class="glyphicon glyphicon-remove"></span></button>
57
- <h4 class="modal-title" style="text-align: center">文件上传</h4>
58
- </header>
59
- <article slot="modal-body" class="modal-body form-horizontal">
60
- <div class="form-group" style="text-align: center">
61
- <file-upload class="my-file-uploader" :name="'myFile' + blodid"
62
- action="apply/rs/file/uploadFile" tagname="文件上传" :headers="headers" multiple v-ref:file></file-upload>
63
- </div>
64
- <div class="form-group" v-if="isusetype">
65
- <label class="col-sm-2 control-label">文件类型:</label>
66
- <div class="col-sm-10">
67
- <input-select
68
- class="select select_list"
69
- :value.sync="headers.fusetype"
70
- v-model="headers.fusetype"
71
- :options="$appdata.getParam('使用类型')"
72
- :valueSingle="true"></input-select>
73
- </div>
74
- </div>
75
- <div class="form-group" v-if="isremark">
76
- <label class="col-sm-2 control-label">文件说明:</label>
77
- <div class="col-sm-10">
78
- <input class="form-control input_view" style=""
79
- v-model="headers.fremarks"
80
- :value="headers.fremarks"/>
81
- </div>
82
- </div>
83
- </article>
84
- <footer slot="modal-footer" class="modal-footer">
85
- </footer>
86
- </modal>
87
- </template>
88
-
89
- <script>
90
- import {HttpResetClass} from 'vue-client'
91
- import {isEmpty} from "../../Util";
92
- export default {
93
- title: '附件',
94
- props: ['blodid', 'businessid', 'isremark', 'isusetype', 'takeimg', 'defname', 'isupload', 'isdelete', 'bootstraped', 'issearch'],
95
- data () {
96
- return {
97
- fileInfoData: [], // 数据库存储的文件记录对象数组
98
- headers: {'username': this.$login.f.name, 'blodid': '','businessid':'', 'fremarks': '','defname':'','fusetype':''}, // 调用rs/file/uploadFile 的参数
99
- showUpload: false, // 上传模态框控制
100
- showhighmeter: false, // 高拍仪组件控制
101
- useType: null
102
- }
103
- },
104
- ready () {
105
- this.headers.blodid = this.blodid
106
- this.headers.businessid = this.businessid
107
- this.headers.defname = this.defname
108
- if (this.blodid || this.businessid) {
109
- this.load()
110
- }
111
- },
112
- methods: {
113
- delet(index, row) {
114
- this.$resetdelete('rs/entity/t_files', {id: row.id}, {resolveMsg: '删除成功', rejectMsg: '删除失败'}).then((res) => {
115
- this.$dispatch("delResid",row.id)
116
- this.load()
117
- })
118
- },
119
- // 下载
120
- downloadfile(filepath){
121
- var link = document.createElement('a');
122
- link.href = filepath;
123
- link.target='_blank'
124
- link.dispatchEvent(new MouseEvent('click'));
125
- },
126
- // 关闭文件上传对话框
127
- close () {
128
- this.showUpload = false
129
- // 将选的文件清空
130
- this.$refs.file.$el.querySelector('input').value = ''
131
- this.headers.fusetype = ''
132
- this.headers.fremarks = ''
133
- this.load()
134
- },
135
- // 查询
136
- async load() {
137
- let condition = ''
138
- if(this.businessid){
139
- condition = `f_businessid= '${this.headers.businessid}' `
140
- }else{
141
- condition = `f_blobid= '${this.headers.blodid}' `
142
- }
143
- if (!isEmpty(this.useType)) {
144
- condition += `and fusetype like '${this.useType}'`
145
- }
146
- let http = new HttpResetClass()
147
- let data = {
148
- tablename: 't_files',
149
- condition: condition + ` order by f_uploaddate desc `
150
- }
151
- let getFile = await http.load('POST', 'rs/sql/singleTable', {data: data}, {
152
- warnMsg: null,
153
- resolveMsg: null
154
- })
155
-
156
- for (var i = 0; i < getFile.data.length; i++) {
157
- // 如果使用类型包含导入字样,则是execl文件导入的,不做显示
158
- if(getFile.data[i].fusetype&&(getFile.data[i].fusetype.includes('execl导入'))){
159
- getFile.data.splice(i,1)
160
- i--
161
- continue
162
- }
163
- let temp = getFile.data[i].f_downloadpath
164
- let URL = temp.substring(temp.lastIndexOf(":\\") + 2)
165
- getFile.data[i].f_downloadURL = "http://" + location.host + "/" + URL
166
- }
167
- this.fileInfoData = []
168
- this.fileInfoData = getFile.data
169
- },
170
- // 打开高拍仪
171
- upload () {
172
- if(this.showhighmeter){
173
- this.$refs.ltgao.closeVideo()
174
- }
175
- this.showhighmeter = !this.showhighmeter
176
- },
177
- // 高拍仪回调
178
- newPhoto(Imgbase64) {
179
- let form = new FormData()
180
- let xhr = new XMLHttpRequest()
181
- let formDataBoundary = "----WebkitFormBoundary" + "GaoPaiYi";
182
- form.append('Content-Type', 'multipart/form-data;boundary=' + formDataBoundary)
183
- form.append('file', this.convertBase64ToBlob(Imgbase64), "GaoPaiYi.jpg")
184
- xhr.open("POST", "rs/file/uploadFile")
185
-
186
- if (this.headers) {
187
- for (var header in this.headers) {
188
- xhr.setRequestHeader(header, encodeURIComponent(this.headers[header]))
189
- }
190
- }
191
- xhr.send(form)
192
- setTimeout(() => {
193
- this.load()
194
- }, 5000)
195
- },
196
- convertBase64ToBlob(base64String) {
197
- // 将base64解码
198
- var bytes = atob(base64String);
199
- //var bytes = base64;
200
- var bytesCode = new ArrayBuffer(bytes.length);
201
- // 转换为类型化数组
202
- var byteArray = new Uint8Array(bytesCode);
203
-
204
- // 将base64转换为ascii码
205
- for (var i = 0; i < bytes.length; i++) {
206
- byteArray[i] = bytes.charCodeAt(i);
207
- }
208
- // 生成Blob对象(文件对象)
209
- return new Blob([bytesCode], {type: 'image/jpeg'});
210
- },
211
- },
212
- computed: {
213
- typeOfUse () {
214
- return [{label: '全部', value: ''}, ...this.$appdata.getParam('使用类型')]
215
- }
216
- },
217
- events: {
218
- onFileUpload: function (file, res) {
219
- this.$dispatch("resid",res.id)
220
- this.headers.fremarks=''
221
- this.close()
222
- }
223
- }
224
- }
225
- </script>
226
-
227
- <style scoped>
228
- .clears{
229
- overflow:hidden;
230
- text-overflow:ellipsis;
231
- white-space:nowrap;
232
- }
233
- .showData {
234
- padding: 15px 10px 0px 10px;
235
- box-sizing: border-box;
236
- height: 230px;
237
- font-family: "微软雅黑";
238
- }
239
- .showData .item{
240
- padding-bottom: 10px;
241
- border-bottom: solid 1px #c1c1c1;
242
- }
243
- .left {
244
- padding-right: 10px;
245
- }
246
- .left img{
247
- height: 100%;
248
- width: 100%;
249
- }
250
- .right{
251
- height: 100%;
252
- /*display: -webkit-flex;*/
253
- /*display: flex;*/
254
- /*flex-direction: column;*/
255
- /*justify-content: space-around;*/
256
- }
257
- .item_btn{
258
- width: 80%;
259
- background-color: #6aa6e2;
260
- border-radius: 4px;
261
- color: #FFFFFF;
262
- font-family: PingFang;
263
- }
264
- </style>
1
+ <template>
2
+ <div class="col-sm-12" style="background-color: #FFFFFF">
3
+ <div class="col-sm-12" style="padding:50px 100px;height: 25%">
4
+ <div class="form-group col-sm-5" v-if="issearch">
5
+ <v-select
6
+ class="select select_list"
7
+ :value.sync="useType"
8
+ width="90%"
9
+ v-model="useType"
10
+ :options='typeOfUse'
11
+ :valueSingle="true"></v-select>
12
+ </div>
13
+ <div class="form-group col-sm-2" style="text-align: center" v-if="issearch">
14
+ <button type="button" class="btn btn-primary item_btn" @click="load">搜索</button>
15
+ </div>
16
+ <div class="form-group col-sm-2" style="text-align: center" v-if="isupload">
17
+ <button type="button" class="btn btn-primary item_btn" @click="showUpload = !showUpload">本地上传</button>
18
+ </div>
19
+ <div class="form-group col-sm-2" style="text-align: center" v-if="takeimg">
20
+ <button type="button" class="btn btn-primary item_btn" @click="upload()">拍照</button>
21
+ </div>
22
+ </div>
23
+ <hr style="width: 90%;margin: 0px auto;border: #999999 1px solid;"/>
24
+ <div class="col-sm-12" style="overflow: scroll;height: 75%">
25
+ <div :class="bootstraped ? bootstraped + ' showData' : 'col-sm-6 showData'" v-for="row in fileInfoData">
26
+ <div class="col-sm-12 item">
27
+ <div class="left col-sm-5">
28
+ <a href="#" class="thumbnail" style="width: 100%;height: 100%">
29
+ <img v-if="row.f_filetype === 'jpg'||row.f_filetype === 'png'||row.f_filetype === 'gif'||row.f_filetype === 'bmp'" :src="row.f_downloadURL" alt="..."/>
30
+ <img v-if="row.f_filetype === 'pdf'" src="../../image/pdf.jpg" alt="" />
31
+ <img v-if="row.f_filetype === 'xls'||row.f_filetype === 'xlsx'" src="../../image/excel.jpg" alt="" />
32
+ <img v-if="row.f_filetype === 'doc'||row.f_filetype === 'docx'" src="../../image/doc.jpg" alt="" />
33
+ </a>
34
+ </div>
35
+ <div class="right col-sm-7">
36
+ <p :title="row.f_filename" class="clears"><strong>文件名:</strong>{{row.f_filename}}</p>
37
+ <p :title="row.f_username" class="clears"><strong>操作员:</strong><span>{{row.f_username}}</span></p>
38
+ <p :title="row.fusetype" class="clears"><strong>使用类型:</strong><span>{{row.fusetype}}</span></p>
39
+ <p :title="row.f_uploaddate" class="clears"><strong>上传时间:</strong><span>{{row.f_uploaddate}}</span></p>
40
+ <p :title="row.fremarks" class="clears"><strong>文件说明:</strong>{{row.fremarks}}</p>
41
+ <p class="clears">
42
+ <a v-if="row.f_filetype === 'jpg' || row.f_filetype==='png' || row.f_filetype==='gif' || row.f_filetype==='bmp'" :href="row.f_downloadURL" style="background:#6aa6e2" class="btn btn-primary" target="_blank" role="button">预览</a>
43
+ <a v-else @click="downloadfile(row.f_downloadURL)" style="background:#6aa6e2" class="btn btn-primary" role="button">下载</a>
44
+ <a v-if="isdelete" @click="delet($index, row)" href="#" class="btn btn-default" role="button" role="button">删除</a>
45
+ </p>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ </div>
51
+ <apply-high-meter
52
+ v-if="showhighmeter"
53
+ :show.sync="showhighmeter"
54
+ :isusetype="isusetype"
55
+ :isremark="isremark"
56
+ @photo-finish="newPhoto"
57
+ v-ref:ltgao
58
+ ></apply-high-meter>
59
+ <modal :show.sync="showUpload" v-ref:modal backdrop="false">
60
+ <header slot="modal-header" class="modal-header">
61
+ <button type="button" class="close" @click="close"><span class="glyphicon glyphicon-remove"></span></button>
62
+ <h4 class="modal-title" style="text-align: center">文件上传</h4>
63
+ </header>
64
+ <article slot="modal-body" class="modal-body form-horizontal">
65
+ <div class="form-group" style="text-align: center">
66
+ <file-upload class="my-file-uploader" :name="'myFile' + blodid"
67
+ action="rs/file/uploadFile" tagname="文件上传" :headers="headers" multiple v-ref:file></file-upload>
68
+ </div>
69
+ <div class="form-group" v-if="isusetype">
70
+ <label class="col-sm-2 control-label">文件类型:</label>
71
+ <div class="col-sm-10">
72
+ <input-select
73
+ class="select select_list"
74
+ :value.sync="headers.fusetype"
75
+ v-model="headers.fusetype"
76
+ :options="$appdata.getParam('使用类型')"
77
+ :valueSingle="true"></input-select>
78
+ </div>
79
+ </div>
80
+ <div class="form-group" v-if="isremark">
81
+ <label class="col-sm-2 control-label">文件说明:</label>
82
+ <div class="col-sm-10">
83
+ <input class="form-control input_view" style=""
84
+ v-model="headers.fremarks"
85
+ :value="headers.fremarks"/>
86
+ </div>
87
+ </div>
88
+ </article>
89
+ <footer slot="modal-footer" class="modal-footer">
90
+ </footer>
91
+ </modal>
92
+ </template>
93
+
94
+ <script>
95
+ import {HttpResetClass} from 'vue-client'
96
+ import {isEmpty} from "../../Util";
97
+ export default {
98
+ title: '附件',
99
+ props: ['blodid', 'businessid', 'isremark', 'isusetype', 'takeimg', 'defname', 'isupload', 'isdelete', 'bootstraped', 'issearch'],
100
+ data () {
101
+ return {
102
+ fileInfoData: [], // 数据库存储的文件记录对象数组
103
+ headers: {'username': this.$login.f.name, 'blodid': '','businessid':'', 'fremarks': '','defname':'','fusetype':''}, // 调用rs/file/uploadFile 的参数
104
+ showUpload: false, // 上传模态框控制
105
+ showhighmeter: false, // 高拍仪组件控制
106
+ useType: null
107
+ }
108
+ },
109
+ ready () {
110
+ this.headers.blodid = this.blodid
111
+ this.headers.businessid = this.businessid
112
+ this.headers.defname = this.defname
113
+ if (this.blodid || this.businessid) {
114
+ this.load()
115
+ }
116
+ },
117
+ methods: {
118
+ delet(index, row) {
119
+ this.$resetdelete('rs/entity/t_files', {id: row.id}, {resolveMsg: '删除成功', rejectMsg: '删除失败'}).then((res) => {
120
+ this.$dispatch("delResid",row.id)
121
+ this.load()
122
+ })
123
+ },
124
+ // 下载
125
+ downloadfile(filepath){
126
+ var link = document.createElement('a');
127
+ link.href = filepath;
128
+ link.target='_blank'
129
+ link.dispatchEvent(new MouseEvent('click'));
130
+ },
131
+ // 关闭文件上传对话框
132
+ close () {
133
+ this.showUpload = false
134
+ this.showhighmeter = false
135
+ // 将选的文件清空
136
+ this.$refs.file.$el.querySelector('input').value = ''
137
+ this.headers.fusetype = ''
138
+ this.headers.fremarks = ''
139
+ this.load()
140
+ },
141
+ // 查询
142
+ async load() {
143
+ let condition = ''
144
+ if(this.businessid){
145
+ condition = `f_businessid= '${this.headers.businessid}' `
146
+ }else{
147
+ condition = `f_blobid= '${this.headers.blodid}' `
148
+ }
149
+ if (!isEmpty(this.useType)) {
150
+ condition += `and fusetype like '${this.useType}'`
151
+ }
152
+ let http = new HttpResetClass()
153
+ let data = {
154
+ tablename: 't_files',
155
+ condition: condition + ` order by f_uploaddate desc `
156
+ }
157
+ let getFile = await http.load('POST', 'rs/sql/singleTable', {data: data}, {
158
+ warnMsg: null,
159
+ resolveMsg: null
160
+ })
161
+
162
+ for (var i = 0; i < getFile.data.length; i++) {
163
+ // 如果使用类型包含导入字样,则是execl文件导入的,不做显示
164
+ if(getFile.data[i].fusetype&&(getFile.data[i].fusetype.includes('execl导入'))){
165
+ getFile.data.splice(i,1)
166
+ i--
167
+ continue
168
+ }
169
+ let temp = getFile.data[i].f_downloadpath
170
+ let URL = temp.substring(temp.lastIndexOf(":\\") + 2)
171
+ getFile.data[i].f_downloadURL = "http://" + location.host + "/" + URL
172
+ }
173
+ this.fileInfoData = []
174
+ this.fileInfoData = getFile.data
175
+ },
176
+ // 打开高拍仪
177
+ upload () {
178
+ if(this.showhighmeter){
179
+ this.$refs.ltgao.closeVideo()
180
+ }
181
+ this.showhighmeter = !this.showhighmeter
182
+ },
183
+ // 高拍仪回调
184
+ newPhoto(Imgbase64, fusetype, fremarks) {
185
+ this.headers.fusetype = fusetype
186
+ this.headers.fremarks = fremarks
187
+
188
+ let form = new FormData()
189
+ let xhr = new XMLHttpRequest()
190
+ let formDataBoundary = "----WebkitFormBoundary" + "GaoPaiYi";
191
+ form.append('Content-Type', 'multipart/form-data;boundary=' + formDataBoundary)
192
+ form.append('file', this.convertBase64ToBlob(Imgbase64), "GaoPaiYi.jpg")
193
+ xhr.open("POST", "rs/file/uploadFile")
194
+
195
+ if (this.headers) {
196
+ for (var header in this.headers) {
197
+ xhr.setRequestHeader(header, encodeURIComponent(this.headers[header]))
198
+ }
199
+ }
200
+ xhr.send(form)
201
+ setTimeout(() => {
202
+ this.close()
203
+ }, 5000)
204
+ },
205
+ convertBase64ToBlob(base64String) {
206
+ // 将base64解码
207
+ var bytes = atob(base64String);
208
+ //var bytes = base64;
209
+ var bytesCode = new ArrayBuffer(bytes.length);
210
+ // 转换为类型化数组
211
+ var byteArray = new Uint8Array(bytesCode);
212
+
213
+ // 将base64转换为ascii码
214
+ for (var i = 0; i < bytes.length; i++) {
215
+ byteArray[i] = bytes.charCodeAt(i);
216
+ }
217
+ // 生成Blob对象(文件对象)
218
+ return new Blob([bytesCode], {type: 'image/jpeg'});
219
+ },
220
+ },
221
+ computed: {
222
+ typeOfUse () {
223
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('使用类型')]
224
+ }
225
+ },
226
+ events: {
227
+ onFileUpload: function (file, res) {
228
+ this.$dispatch("resid",res.id)
229
+ this.headers.fremarks=''
230
+ this.close()
231
+ }
232
+ }
233
+ }
234
+ </script>
235
+
236
+ <style scoped>
237
+ .clears{
238
+ overflow:hidden;
239
+ text-overflow:ellipsis;
240
+ white-space:nowrap;
241
+ }
242
+ .showData {
243
+ padding: 15px 10px 0px 10px;
244
+ box-sizing: border-box;
245
+ height: 230px;
246
+ font-family: "微软雅黑";
247
+ }
248
+ .showData .item{
249
+ padding-bottom: 10px;
250
+ border-bottom: solid 1px #c1c1c1;
251
+ }
252
+ .left {
253
+ padding-right: 10px;
254
+ }
255
+ .left img{
256
+ height: 100%;
257
+ width: 100%;
258
+ }
259
+ .right{
260
+ height: 100%;
261
+ /*display: -webkit-flex;*/
262
+ /*display: flex;*/
263
+ /*flex-direction: column;*/
264
+ /*justify-content: space-around;*/
265
+ }
266
+ .item_btn{
267
+ width: 80%;
268
+ background-color: #6aa6e2;
269
+ border-radius: 4px;
270
+ color: #FFFFFF;
271
+ font-family: PingFang;
272
+ }
273
+ </style>