doctor-admin-components 1.0.13-beta.9 → 1.0.13-beta.91
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.
- package/README.md +28 -9
- package/package.json +1 -1
- package/packages/index.js +10 -0
- package/packages/src/api/biz/bizContract.js +996 -1
- package/packages/src/api/biz/bizContractCompany.js +1 -1
- package/packages/src/api/biz/bizFileInfo.js +16 -0
- package/packages/src/api/biz/bizInvoice.js +1 -1
- package/packages/src/api/biz/bizShipment.js +18 -0
- package/packages/src/assets/images/click-show-table.png +0 -0
- package/packages/src/assets/images/more.png +0 -0
- package/packages/src/assets/images/pdf-new.png +0 -0
- package/packages/src/components/DictTag/index.vue +12 -2
- package/packages/src/components/FileUpload/contract-drag-new.vue +99 -10
- package/packages/src/i18n/en/message.json +305 -0
- package/packages/src/i18n/index.js +38 -0
- package/packages/src/i18n/zh-CN/message.json +305 -0
- package/packages/src/index.js +13 -1
- package/packages/src/utils/index.js +35 -0
- package/packages/src/utils/request.js +120 -146
- package/packages/src/views/biz/bizFileInfo/PAYMENT_VOUCHER(/"payment_voucher/", /"/344/273/230/346/254/276/345/207/255/350/257/201.ini" +222 -0
- package/packages/src/views/biz/bizFileInfo/contract copy.vue +1711 -0
- package/packages/src/views/biz/bizFileInfo/contract.vue +1783 -986
- package/packages/src/views/biz/bizFileInfo/contractFile/BillOfLadingNoTab.vue +114 -0
- package/packages/src/views/biz/bizFileInfo/contractFile/ContentTitle.vue +102 -0
- package/packages/src/views/biz/bizFileInfo/contractFile/IMGPreviewCheckBox.vue +308 -0
- package/packages/src/views/biz/bizFileInfo/contractFile/Progress.vue +85 -0
- package/packages/src/views/biz/bizFileInfo/contractFile/ProgressDetail.vue +123 -0
- package/packages/src/views/biz/bizFileInfo/contractFile/SectionSlot.vue +83 -0
- package/packages/src/views/biz/bizFileInfo/contractFile/ShowAndHide.vue +178 -0
- package/packages/src/views/biz/bizFileInfo/fileShow copy.vue +321 -0
- package/packages/src/views/biz/bizFileInfo/fileShow.vue +143 -47
- package/packages/src/views/biz/bizFileInfo/fileShowClaim.vue +1 -1
- package/packages/src/views/biz/bizShipment/add.vue +223 -75
- package/packages/src/views/biz/bizShipment/referenceAlert.vue +168 -0
- package/packages/src/views/biz/contractTracing/addSubCompany.vue +106 -169
- package/packages/src/views/biz/contractTracing/billInfo.vue +191 -332
- package/packages/src/views/biz/contractTracing/companyBanks.vue +228 -0
- package/packages/src/views/biz/contractTracing/contractInfo.vue +1 -1
- package/packages/src/views/biz/contractTracing/contractPdf.vue +7 -4
- package/packages/src/views/biz/contractTracing/contractSummary.vue +20 -7
- package/packages/src/views/biz/contractTracing/contractTracingDetail copy.vue +107 -0
- package/packages/src/views/biz/contractTracing/contractTracingDetail.vue +229 -9
- package/packages/src/views/biz/contractTracing/editBill.vue +236 -363
- package/packages/src/views/biz/contractTracing/purchaseInvoiceUpload.vue +153 -7
- package/packages/src/views/biz/contractTracing/shipmentPurchaseAmount.vue +8 -2
- package/packages/src/views/biz/contractTracing/subCompanyDialog.vue +202 -176
- package/packages/src/views/components/RegionPicker/Distpicker.vue +459 -0
- package/packages/src/views/components/RegionPicker/districts.js +4641 -0
- package/packages/src/views/test.vue +3 -3
- package/packages/src/views/biz/contractTracing/association.vue +0 -189
- package/packages/src/views/biz/contractTracing/chargingDialog.vue +0 -84
- package/packages/src/views/biz/contractTracing/contract.vue +0 -1276
- package/packages/src/views/biz/contractTracing/disputeRecord.vue +0 -311
- package/packages/src/views/biz/contractTracing/edit.vue +0 -205
- package/packages/src/views/biz/contractTracing/sendDrafEmail.vue +0 -120
- package/packages/src/views/biz/contractTracing/shipment.vue +0 -601
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* @Author: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
|
|
3
|
+
* @Date: 2024-03-13 14:28:59
|
|
4
|
+
* @LastEditors: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
|
|
5
|
+
* @LastEditTime: 2024-06-05 13:54:37
|
|
6
|
+
* @FilePath: /doctor-admin-components 公共组件/packages/src/views/biz/bizFileInfo/contractFile/BillOfLadingNoTab.vue
|
|
7
|
+
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
8
|
+
-->
|
|
9
|
+
<template>
|
|
10
|
+
<div class="bill-no-root" :style="open ? 'height:max-content': ''">
|
|
11
|
+
<div :class="'bill-no'" :style="shipmentIndex == shipBillNo ? { color: progressInfo.bgcolor } : ''" v-for="(
|
|
12
|
+
shipmentFileInfo, shipmentIndex
|
|
13
|
+
) in contractFileInfoData.shipmentFileInfoList" :key="shipmentIndex" @click="changeShipBillNo(shipmentIndex)">
|
|
14
|
+
|
|
15
|
+
{{ $t('contractDetail.BL_No') }} {{ shipmentFileInfo.billOfLadingNo
|
|
16
|
+
? shipmentFileInfo.billOfLadingNo
|
|
17
|
+
: '' }} <span v-if="shipmentFileInfo.voidStatus == 1"> ( {{ $t('contract.Voided') }} )</span>
|
|
18
|
+
</div>
|
|
19
|
+
<div class="billOfLadingNo-more" v-if="contractFileInfoData.shipmentFileInfoList && contractFileInfoData.shipmentFileInfoList.length > 4" @click.stop="openFun">
|
|
20
|
+
<!-- <div class="billOfLadingNo-more" @click.stop="openFun"> -->
|
|
21
|
+
<i v-if="open" class="el-icon-caret-top"></i>
|
|
22
|
+
<i v-else class="el-icon-caret-bottom"></i>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script>
|
|
28
|
+
export default {
|
|
29
|
+
name: 'BillOfLadingNoTab',
|
|
30
|
+
props: {
|
|
31
|
+
contractFileInfo: {
|
|
32
|
+
type: Object,
|
|
33
|
+
default: () => {}
|
|
34
|
+
},
|
|
35
|
+
shipBillNoProp: {
|
|
36
|
+
type: String | Number,
|
|
37
|
+
default: ''
|
|
38
|
+
},
|
|
39
|
+
progressInfo: {
|
|
40
|
+
type: Object,
|
|
41
|
+
default: () => {}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
data() {
|
|
45
|
+
return {
|
|
46
|
+
open: false,
|
|
47
|
+
shipBillNo:0,
|
|
48
|
+
contractFileInfoData: {}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
methods: {
|
|
52
|
+
openFun () {
|
|
53
|
+
this.open = !this.open
|
|
54
|
+
},
|
|
55
|
+
changeShipBillNo(index) {
|
|
56
|
+
this.$emit('changeShipBillNo', index)
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
watch: {
|
|
60
|
+
shipBillNoProp: {
|
|
61
|
+
handler(val) {
|
|
62
|
+
this.shipBillNo = val
|
|
63
|
+
console.log('shipBillNoProp', val);
|
|
64
|
+
},
|
|
65
|
+
immediate: true,
|
|
66
|
+
deep: true
|
|
67
|
+
},
|
|
68
|
+
contractFileInfo: {
|
|
69
|
+
handler(val) {
|
|
70
|
+
this.contractFileInfoData = val
|
|
71
|
+
},
|
|
72
|
+
immediate: true,
|
|
73
|
+
deep: true
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
</script>
|
|
79
|
+
|
|
80
|
+
<style lang="scss" scoped>
|
|
81
|
+
.bill-no-root {
|
|
82
|
+
display: flex;
|
|
83
|
+
flex-wrap: wrap;
|
|
84
|
+
padding:0 20px;
|
|
85
|
+
width:100%;
|
|
86
|
+
position:relative;
|
|
87
|
+
height:60px;
|
|
88
|
+
overflow:hidden;
|
|
89
|
+
|
|
90
|
+
.billOfLadingNo-more {
|
|
91
|
+
width:20px;
|
|
92
|
+
height:30px;
|
|
93
|
+
position:absolute;
|
|
94
|
+
right:0;
|
|
95
|
+
top:15px;
|
|
96
|
+
background-color: #999;
|
|
97
|
+
text-align: center;
|
|
98
|
+
line-height: 30px;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.bill-no {
|
|
102
|
+
width:23%;
|
|
103
|
+
font-size: 14px;
|
|
104
|
+
color: #A7A9AC;
|
|
105
|
+
padding:20px 20px 20px 0;
|
|
106
|
+
cursor: pointer;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.bill-no-active {
|
|
110
|
+
color: #4DA9EB;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
</style>
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* @Author: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
|
|
3
|
+
* @Date: 2024-02-23 16:17:11
|
|
4
|
+
* @LastEditors: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
|
|
5
|
+
* @LastEditTime: 2024-04-10 09:42:22
|
|
6
|
+
* @FilePath: /doctor-admin-components 公共组件/packages/src/views/biz/bizFileInfo/contractFile/ContentTitle.vue
|
|
7
|
+
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
8
|
+
-->
|
|
9
|
+
<template>
|
|
10
|
+
<div class="content-title">
|
|
11
|
+
<div class="bg-button-success" v-if="successFlag">
|
|
12
|
+
<i class="el-icon-success success"></i>
|
|
13
|
+
{{ contentTitleInfo.bgButton }}
|
|
14
|
+
</div>
|
|
15
|
+
<div class="bg-button" v-else :style="{backgroundColor:contentTitleInfo.bgcolor}">{{ contentTitleInfo.bgButton }}</div>
|
|
16
|
+
<div class="bg-time" v-if="contentTitleInfo.bgTime">{{ contentTitleInfo.bgTime }} {{ $t('contractDetail.upload') }}</div>
|
|
17
|
+
</div>
|
|
18
|
+
</template>
|
|
19
|
+
|
|
20
|
+
<script>
|
|
21
|
+
export default {
|
|
22
|
+
name: 'DoctorAdminComponentsContentTitle',
|
|
23
|
+
props: {
|
|
24
|
+
contentTitleProp: {
|
|
25
|
+
type: Object,
|
|
26
|
+
default: {}
|
|
27
|
+
},
|
|
28
|
+
successFlag: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
default: false
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
data() {
|
|
34
|
+
return {
|
|
35
|
+
contentTitleInfo: {}
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
mounted() {
|
|
40
|
+
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
methods: {
|
|
44
|
+
|
|
45
|
+
},
|
|
46
|
+
watch: {
|
|
47
|
+
contentTitleProp: {
|
|
48
|
+
handler: function (val) {
|
|
49
|
+
this.contentTitleInfo = val;
|
|
50
|
+
},
|
|
51
|
+
deep: true,
|
|
52
|
+
immediate: true
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
</script>
|
|
58
|
+
|
|
59
|
+
<style lang="scss" scoped>
|
|
60
|
+
.content-title {
|
|
61
|
+
display: flex;
|
|
62
|
+
align-items: center;
|
|
63
|
+
margin: 20px 0;
|
|
64
|
+
width: max-content;
|
|
65
|
+
max-width: max-content;
|
|
66
|
+
.bg-button {
|
|
67
|
+
min-width: 69px;
|
|
68
|
+
width:max-content;
|
|
69
|
+
height: 21px;
|
|
70
|
+
line-height: 21px;
|
|
71
|
+
text-align: center;
|
|
72
|
+
padding: 0 10px;
|
|
73
|
+
background-color: #FBB040;
|
|
74
|
+
border-radius: 10px;
|
|
75
|
+
font-size: 14px;
|
|
76
|
+
margin-right:20px;
|
|
77
|
+
}
|
|
78
|
+
.bg-button-success {
|
|
79
|
+
min-width: 69px;
|
|
80
|
+
width:max-content;
|
|
81
|
+
height: 21px;
|
|
82
|
+
line-height: 21px;
|
|
83
|
+
text-align: center;
|
|
84
|
+
// padding: 0 10px;
|
|
85
|
+
font-size: 14px;
|
|
86
|
+
margin-right:20px;
|
|
87
|
+
}
|
|
88
|
+
.bg-time {
|
|
89
|
+
color: #939598;
|
|
90
|
+
line-height: 12px;
|
|
91
|
+
text-align: left;
|
|
92
|
+
font-size: 14px;
|
|
93
|
+
margin-right:20px;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.success {
|
|
98
|
+
color: #67C23A;
|
|
99
|
+
font-size:15px;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
</style>
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* @Author: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
|
|
3
|
+
* @Date: 2024-02-26 10:03:01
|
|
4
|
+
* @LastEditors: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
|
|
5
|
+
* @LastEditTime: 2024-05-08 15:22:56
|
|
6
|
+
* @FilePath: /doctor-admin-components 公共组件/packages/src/views/biz/bizFileInfo/IMGPreviewCheckBox.vue
|
|
7
|
+
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
8
|
+
-->
|
|
9
|
+
<template>
|
|
10
|
+
<div class="img-preview-root">
|
|
11
|
+
<div class="img-preview" :style="open ? 'height:max-content' : ''">
|
|
12
|
+
<slot></slot>
|
|
13
|
+
<div class="img-block" v-for="(fit, key) in imgList" :key="key" @click.stop="previewFile(fit)">
|
|
14
|
+
<video v-if="isVideo(fit.url)" :src="fit.url" style="width: 100px; height: 100px;margin-left:10px;"
|
|
15
|
+
controls
|
|
16
|
+
muted="true">
|
|
17
|
+
</video>
|
|
18
|
+
<el-image
|
|
19
|
+
v-else
|
|
20
|
+
style="width: 100px; height: 100px;object-fit:cover;"
|
|
21
|
+
:src="othersFile(fit.url)"
|
|
22
|
+
:preview-src-list="srcList">
|
|
23
|
+
</el-image>
|
|
24
|
+
<i :class="['checkbox-size', 'el-checkbox__input', fit.checked ? 'is-checked' : '']" @click.stop="checkClick(key)">
|
|
25
|
+
<i class="el-checkbox__inner"></i>
|
|
26
|
+
</i>
|
|
27
|
+
<i @click.stop="downloadSingleFile(fit)" class="el-icon-download download-icon"/>
|
|
28
|
+
<i @click.stop="delteFile(fit.fileId)" class="el-icon-close download-delete"/>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="billOfLadingNo-more" @click.stop="openFun" v-if="imgList && imgList.length > 7">
|
|
31
|
+
<i v-if="open" class="el-icon-caret-top"></i>
|
|
32
|
+
<i v-else class="el-icon-caret-bottom"></i>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="batch-download" v-show="showDownloadIcon" @click.stop="downLoadFile">批量下载</div>
|
|
36
|
+
<div class="batch-download batch-delete" v-show="showDownloadIcon" @click.stop="deleteAll">批量删除</div>
|
|
37
|
+
</div>
|
|
38
|
+
</template>
|
|
39
|
+
|
|
40
|
+
<script>
|
|
41
|
+
import JSZip from 'jszip';
|
|
42
|
+
import { saveAs } from 'file-saver';
|
|
43
|
+
import { isImage, isVideo, isDoc, isPdf, isZip, isXls, isPpt } from '../../../../utils/index';
|
|
44
|
+
import { Loading } from 'element-ui';
|
|
45
|
+
import { delBizFileInfo } from '../../../../api/biz/bizFileInfo';
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
export default {
|
|
49
|
+
name: 'IMGPreviewCheckBox',
|
|
50
|
+
props: {
|
|
51
|
+
imgArr: {
|
|
52
|
+
type: Array,
|
|
53
|
+
default: () => []
|
|
54
|
+
},
|
|
55
|
+
info: {
|
|
56
|
+
type: Object,
|
|
57
|
+
default: () => {}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
data() {
|
|
61
|
+
return {
|
|
62
|
+
isVideo,
|
|
63
|
+
open: false,
|
|
64
|
+
imgList: [],
|
|
65
|
+
srcList:[],
|
|
66
|
+
loadingInstance: null,
|
|
67
|
+
timer: null
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
mounted() {
|
|
72
|
+
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
methods: {
|
|
76
|
+
delteFile(fileId) {
|
|
77
|
+
delBizFileInfo(fileId).then(() => {
|
|
78
|
+
this.$message.success('删除成功')
|
|
79
|
+
this.$emit('refresh')
|
|
80
|
+
})
|
|
81
|
+
},
|
|
82
|
+
previewFile(file) {
|
|
83
|
+
if (!(isImage(file.url) || isVideo(file.url))) {
|
|
84
|
+
window.open(file.url);
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
checkClick(index) {
|
|
88
|
+
this.imgList[index].checked = !this.imgList[index].checked;
|
|
89
|
+
},
|
|
90
|
+
checkAll1() {
|
|
91
|
+
this.imgList.forEach((item) => {
|
|
92
|
+
item.checked = true;
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
cancelAll1() {
|
|
96
|
+
this.imgList.forEach((item) => {
|
|
97
|
+
item.checked = false;
|
|
98
|
+
});
|
|
99
|
+
},
|
|
100
|
+
// 文件名称
|
|
101
|
+
extractFileName() {
|
|
102
|
+
return 'loading photos-' + this.info.containerNo + '/container ' + this.info?.containerId + '/ Dated ' + this.$moment(new Date().getTime()).format('YYYY-MM-DD')
|
|
103
|
+
},
|
|
104
|
+
/**
|
|
105
|
+
* @description: 下载一个文件
|
|
106
|
+
* @param {*} file
|
|
107
|
+
* @return {*}
|
|
108
|
+
*/
|
|
109
|
+
downloadSingleFile(file) {
|
|
110
|
+
this.loadingInstance = Loading.service({
|
|
111
|
+
text: this.$t('contractDetail.loading'),
|
|
112
|
+
spinner: 'el-icon-loading',
|
|
113
|
+
background: 'rgba(0, 0, 0, 0.7)',
|
|
114
|
+
});
|
|
115
|
+
// 从URL中提取文件名
|
|
116
|
+
const fileName = this.extractFileName();
|
|
117
|
+
// 如果是zip文件,重新命名为当前时间戳,否则使用原文件名
|
|
118
|
+
const newName = /\.zip$/i.test(fileName) ? fileName + '.zip' : fileName;
|
|
119
|
+
saveAs(file.url, newName);
|
|
120
|
+
this.loadingInstance.close();
|
|
121
|
+
},
|
|
122
|
+
/**
|
|
123
|
+
* @description: 文件下载
|
|
124
|
+
* @return {*}
|
|
125
|
+
*/
|
|
126
|
+
async downLoadFile () {
|
|
127
|
+
this.loadingInstance = Loading.service({
|
|
128
|
+
text: this.$t('contractDetail.loading'),
|
|
129
|
+
spinner: 'el-icon-loading',
|
|
130
|
+
background: 'rgba(0, 0, 0, 0.7)',
|
|
131
|
+
});
|
|
132
|
+
// test
|
|
133
|
+
let files = this.imgList.filter(item => item.checked)
|
|
134
|
+
|
|
135
|
+
if (files.length === 1) {
|
|
136
|
+
// 如果只有一个文件且该文件是图片/视频,直接下载
|
|
137
|
+
this.downloadSingleFile(files[0]);
|
|
138
|
+
} else {
|
|
139
|
+
// 创建一个ZIP包,但只添加图片文件
|
|
140
|
+
const zip = new JSZip();
|
|
141
|
+
for (let file of files) {
|
|
142
|
+
const fileData = await fetch(file.url).then(response => {
|
|
143
|
+
if (!response.ok) throw new Error('Network response was not ok');
|
|
144
|
+
return response.blob();
|
|
145
|
+
});
|
|
146
|
+
// 从URL中提取文件名
|
|
147
|
+
const fileName = file.url.split('/').pop();
|
|
148
|
+
zip.file(fileName, fileData, { binary: true });
|
|
149
|
+
}
|
|
150
|
+
if (Object.keys(zip.files).length > 0) {
|
|
151
|
+
zip.generateAsync({ type: 'blob' }).then(content => {
|
|
152
|
+
const fileName = this.extractFileName();
|
|
153
|
+
saveAs(content, fileName + '.zip');
|
|
154
|
+
}).
|
|
155
|
+
finally(() => {
|
|
156
|
+
this.timer =setTimeout(() => {
|
|
157
|
+
this.loadingInstance.close();
|
|
158
|
+
}, 1500);
|
|
159
|
+
})
|
|
160
|
+
} else {
|
|
161
|
+
alert("没有文件可下载");
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
this.cancelAll1()
|
|
165
|
+
},
|
|
166
|
+
async deleteAll () {
|
|
167
|
+
let files = this.imgList.filter(item => item.checked)
|
|
168
|
+
files.length && await delBizFileInfo(files.map(item => item.fileId)).then(() => {
|
|
169
|
+
this.$message.success('删除成功')
|
|
170
|
+
this.$emit('refresh')
|
|
171
|
+
})
|
|
172
|
+
},
|
|
173
|
+
openFun () {
|
|
174
|
+
this.open = !this.open
|
|
175
|
+
},
|
|
176
|
+
othersFile(imgUrl) {
|
|
177
|
+
if(isDoc(imgUrl)) {
|
|
178
|
+
return 'https://s3.cdn.doctorscrap.com/dev/user/image_13/1ed150dc6171450d81a5e1f7b4e1253f.png'
|
|
179
|
+
} else if(isPdf(imgUrl)) {
|
|
180
|
+
return 'https://s3.cdn.doctorscrap.com/dev/user/image_13/5a4b66e220794c0b8284f0a8204aac3e.png'
|
|
181
|
+
} else if(isZip(imgUrl)) {
|
|
182
|
+
return 'https://s3.cdn.doctorscrap.com/dev/user/image_13/470eeab01eec430e9ed0edd81d15ace5.png'
|
|
183
|
+
} else if(isXls(imgUrl)) {
|
|
184
|
+
return 'https://s3.cdn.doctorscrap.com/dev/user/image_13/caaa343a68684216be1a4d3b27d40a9d.png'
|
|
185
|
+
} else if(isPpt(imgUrl)) {
|
|
186
|
+
return 'https://s3.cdn.doctorscrap.com/dev/user/image_13/b0590840eceb4162a8c07119ef2fe245.png'
|
|
187
|
+
} else {
|
|
188
|
+
return imgUrl
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
watch: {
|
|
193
|
+
imgArr: {
|
|
194
|
+
handler(val) {
|
|
195
|
+
if(val.length) {
|
|
196
|
+
this.imgList = [];
|
|
197
|
+
this.srcList = [];
|
|
198
|
+
val.forEach((item) => {
|
|
199
|
+
let coverUrl = this.othersFile(item.url)
|
|
200
|
+
this.imgList.push({
|
|
201
|
+
url: item.url,
|
|
202
|
+
checked: false,
|
|
203
|
+
fileId: item.fileId
|
|
204
|
+
});
|
|
205
|
+
this.srcList.push(coverUrl);
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
deep: true,
|
|
210
|
+
immediate: true
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
computed: {
|
|
214
|
+
showDownloadIcon () {
|
|
215
|
+
let res = this.imgList.filter(item => item.checked)
|
|
216
|
+
return res.length > 0
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
beforeDestroy() {
|
|
220
|
+
this.loadingInstance = null
|
|
221
|
+
clearTimeout(this.timer)
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
</script>
|
|
225
|
+
|
|
226
|
+
<style lang="scss" scoped>
|
|
227
|
+
.img-preview {
|
|
228
|
+
display:flex;
|
|
229
|
+
flex-wrap: wrap;
|
|
230
|
+
padding-right:40px;
|
|
231
|
+
height:110px;
|
|
232
|
+
overflow:hidden;
|
|
233
|
+
position: relative;
|
|
234
|
+
width:100%;
|
|
235
|
+
.img-block {
|
|
236
|
+
position: relative;
|
|
237
|
+
margin:0 15px 15px 0;
|
|
238
|
+
background-color: #666;
|
|
239
|
+
}
|
|
240
|
+
.fold-wrap {
|
|
241
|
+
position: absolute;
|
|
242
|
+
right: 0;
|
|
243
|
+
width: 80px;
|
|
244
|
+
height: 100%;
|
|
245
|
+
display: flex;
|
|
246
|
+
justify-content: center;
|
|
247
|
+
align-items: center;
|
|
248
|
+
.el-button {
|
|
249
|
+
margin-bottom: 20px;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
.checkbox-size {
|
|
255
|
+
position:absolute;
|
|
256
|
+
left:0;
|
|
257
|
+
width:18px;
|
|
258
|
+
height:18px;
|
|
259
|
+
}
|
|
260
|
+
.download-icon {
|
|
261
|
+
position: absolute;
|
|
262
|
+
bottom:2px;
|
|
263
|
+
right:0;
|
|
264
|
+
background-color: #fff;
|
|
265
|
+
cursor: pointer;
|
|
266
|
+
}
|
|
267
|
+
.download-delete {
|
|
268
|
+
position: absolute;
|
|
269
|
+
top:1px;
|
|
270
|
+
right:1px;
|
|
271
|
+
background-color: #fff;
|
|
272
|
+
cursor: pointer;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.billOfLadingNo-more {
|
|
276
|
+
width:20px;
|
|
277
|
+
height:100px;
|
|
278
|
+
position:absolute;
|
|
279
|
+
right:0;
|
|
280
|
+
top:0;
|
|
281
|
+
background-color: #999;
|
|
282
|
+
text-align: center;
|
|
283
|
+
line-height: 100px;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.img-preview-root {
|
|
287
|
+
position: relative;
|
|
288
|
+
.batch-download {
|
|
289
|
+
position: absolute;
|
|
290
|
+
top: -41px;
|
|
291
|
+
left: 620px;
|
|
292
|
+
min-width: 80px;
|
|
293
|
+
width:max-content;
|
|
294
|
+
padding:0 10px;
|
|
295
|
+
height: 22px;
|
|
296
|
+
line-height: 22px;
|
|
297
|
+
text-align: center;
|
|
298
|
+
border-radius: 10px;
|
|
299
|
+
background-color: #54B8FF;
|
|
300
|
+
cursor: pointer;
|
|
301
|
+
font-size:12px;
|
|
302
|
+
}
|
|
303
|
+
.batch-delete {
|
|
304
|
+
left: 710px;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
</style>
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* @Author: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
|
|
3
|
+
* @Date: 2024-02-22 11:04:36
|
|
4
|
+
* @LastEditors: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
|
|
5
|
+
* @LastEditTime: 2024-04-11 10:28:42
|
|
6
|
+
* @FilePath: /doctor-admin-components 公共组件/packages/src/views/biz/bizFileInfo/contractFile/Process.vue
|
|
7
|
+
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
8
|
+
-->
|
|
9
|
+
<template>
|
|
10
|
+
<div class="progress" :style="{backgroundColor:info.bgcolor}">
|
|
11
|
+
<img class="progress-img" :src="info.img" alt="">
|
|
12
|
+
<div class="progress-text">{{ info.text}}</div>
|
|
13
|
+
<div class="progress-rate">{{ info.rate }}%</div>
|
|
14
|
+
</div>
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script>
|
|
18
|
+
export default {
|
|
19
|
+
name: 'DoctorAdminComponentsProcess',
|
|
20
|
+
props: {
|
|
21
|
+
infoPro: {
|
|
22
|
+
type: Object,
|
|
23
|
+
default: () => {
|
|
24
|
+
return {};
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
data() {
|
|
29
|
+
return {
|
|
30
|
+
info:{}
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
mounted() {
|
|
35
|
+
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
methods: {
|
|
39
|
+
|
|
40
|
+
},
|
|
41
|
+
watch: {
|
|
42
|
+
infoPro: {
|
|
43
|
+
handler (val) {
|
|
44
|
+
this.info = val;
|
|
45
|
+
},
|
|
46
|
+
deep: true,
|
|
47
|
+
immediate: true
|
|
48
|
+
},
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<style lang="scss" scoped>
|
|
54
|
+
.progress {
|
|
55
|
+
min-width: 130px;
|
|
56
|
+
height: 27px;
|
|
57
|
+
background: #FBB040;
|
|
58
|
+
display: flex;
|
|
59
|
+
justify-content: space-between;
|
|
60
|
+
align-items: center;
|
|
61
|
+
padding: 0 5px;
|
|
62
|
+
box-sizing: border-box;
|
|
63
|
+
margin-right:15px;
|
|
64
|
+
.progress-img {
|
|
65
|
+
width: 17px;
|
|
66
|
+
height: 17px;
|
|
67
|
+
background: #FFFFFF;
|
|
68
|
+
border-radius: 8px;
|
|
69
|
+
}
|
|
70
|
+
.progress-text {
|
|
71
|
+
font-size: 14px;
|
|
72
|
+
line-height:27px;
|
|
73
|
+
font-weight: normal;
|
|
74
|
+
color: #FFFFFF;
|
|
75
|
+
}
|
|
76
|
+
.progress-rate {
|
|
77
|
+
font-size: 14px;
|
|
78
|
+
font-weight: normal;
|
|
79
|
+
line-height:27px;
|
|
80
|
+
color: #231F20;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
}
|
|
85
|
+
</style>
|