doctor-admin-components 1.0.13-beta.21 → 1.0.13-beta.23

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 (26) hide show
  1. package/package.json +1 -1
  2. package/packages/index.js +4 -0
  3. package/packages/src/api/biz/bizContract.js +963 -0
  4. package/packages/src/assets/images/more.png +0 -0
  5. package/packages/src/assets/images/pdf-new.png +0 -0
  6. package/packages/src/components/FileUpload/contract-drag-new.vue +82 -8
  7. package/packages/src/i18n/en/message.json +259 -0
  8. package/packages/src/i18n/index.js +38 -0
  9. package/packages/src/i18n/zh-CN/message.json +259 -0
  10. package/packages/src/utils/index.js +1 -0
  11. 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
  12. package/packages/src/views/biz/bizFileInfo/contract copy.vue +1711 -0
  13. package/packages/src/views/biz/bizFileInfo/contract.vue +1232 -974
  14. package/packages/src/views/biz/bizFileInfo/contractFile/BillOfLadingNoTab.vue +114 -0
  15. package/packages/src/views/biz/bizFileInfo/contractFile/ContentTitle.vue +102 -0
  16. package/packages/src/views/biz/bizFileInfo/contractFile/IMGPreviewCheckBox.vue +235 -0
  17. package/packages/src/views/biz/bizFileInfo/contractFile/Progress.vue +84 -0
  18. package/packages/src/views/biz/bizFileInfo/contractFile/ProgressDetail.vue +122 -0
  19. package/packages/src/views/biz/bizFileInfo/contractFile/SectionSlot.vue +83 -0
  20. package/packages/src/views/biz/bizFileInfo/fileShow copy.vue +321 -0
  21. package/packages/src/views/biz/bizFileInfo/fileShow.vue +114 -37
  22. package/packages/src/views/biz/bizFileInfo/fileShowClaim.vue +1 -1
  23. package/packages/src/views/biz/bizShipment/add.vue +6 -8
  24. package/packages/src/views/biz/contractTracing/contractTracingDetail copy.vue +107 -0
  25. package/packages/src/views/biz/contractTracing/contractTracingDetail.vue +202 -8
  26. package/packages/src/views/biz/contractTracing/shipmentPurchaseAmount.vue +1 -1
@@ -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-03-28 15:42:56
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
+ 提单号 {{ shipmentFileInfo.billOfLadingNo
16
+ ? shipmentFileInfo.billOfLadingNo
17
+ : '' }}
18
+ </div>
19
+ <div class="billOfLadingNo-more" v-if="contractFileInfoData.shipmentFileInfoList && contractFileInfoData.shipmentFileInfoList.length > 3" @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:33%;
103
+ font-size: 14px;
104
+ color: #A7A9AC;
105
+ margin: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-03-15 20:10:26
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 }} 上传</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,235 @@
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-03-28 15:16:00
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">
14
+ <el-image
15
+ style="width: 100px; height: 100px;object-fit:cover;"
16
+ :src="fit.url"
17
+ :preview-src-list="srcList">
18
+ </el-image>
19
+ <i :class="['checkbox-size', 'el-checkbox__input', fit.checked ? 'is-checked' : '']" @click.stop="checkClick(key)">
20
+ <i class="el-checkbox__inner"></i>
21
+ </i>
22
+ <i @click.stop="downloadSingleFile(fit)" class="el-icon-download download-icon"/>
23
+ </div>
24
+ <div class="billOfLadingNo-more" @click.stop="openFun" v-if="imgList && imgList.length > 7">
25
+ <i v-if="open" class="el-icon-caret-top"></i>
26
+ <i v-else class="el-icon-caret-bottom"></i>
27
+ </div>
28
+ </div>
29
+ <div class="batch-download" v-show="showDownloadIcon" @click.stop="downLoadFile">批量下载</div>
30
+ </div>
31
+ </template>
32
+
33
+ <script>
34
+ import JSZip from 'jszip';
35
+ import { saveAs } from 'file-saver';
36
+ import { isImage, isVideo } from '@/utils/index';
37
+
38
+ export default {
39
+ name: 'IMGPreviewCheckBox',
40
+ props: {
41
+ imgArr: {
42
+ type: Array,
43
+ default: () => []
44
+ },
45
+ info: {
46
+ type: Object,
47
+ default: () => {}
48
+ }
49
+ },
50
+ data() {
51
+ return {
52
+ open: false,
53
+ imgList: [],
54
+ srcList:[]
55
+ };
56
+ },
57
+
58
+ mounted() {
59
+
60
+ },
61
+
62
+ methods: {
63
+ checkClick(index) {
64
+ this.imgList[index].checked = !this.imgList[index].checked;
65
+ },
66
+ checkAll1() {
67
+ this.imgList.forEach((item) => {
68
+ item.checked = true;
69
+ });
70
+ },
71
+ cancelAll1() {
72
+ this.imgList.forEach((item) => {
73
+ item.checked = false;
74
+ });
75
+ },
76
+ // 文件名称
77
+ extractFileName() {
78
+ return 'loading photos-' + this.info.containerNo + '/container ' + this.info?.containerId + '/ Dated ' + this.$moment(new Date().getTime()).format('YYYY-MM-DD')
79
+ },
80
+ /**
81
+ * @description: 下载一个文件
82
+ * @param {*} file
83
+ * @return {*}
84
+ */
85
+ downloadSingleFile(file) {
86
+ // 从URL中提取文件名
87
+ const fileName = this.extractFileName();
88
+ // 如果是zip文件,重新命名为当前时间戳,否则使用原文件名
89
+ const newName = /\.zip$/i.test(fileName) ? fileName + '.zip' : fileName;
90
+ saveAs(file.url, newName);
91
+ this.loading = false
92
+ },
93
+ /**
94
+ * @description: 文件下载
95
+ * @return {*}
96
+ */
97
+ async downLoadFile () {
98
+ this.loading = true
99
+ // test
100
+ let files = this.imgList.filter(item => item.checked)
101
+
102
+ if (files.length === 1) {
103
+ // 如果只有一个文件且该文件是图片/视频,直接下载
104
+ this.downloadSingleFile(files[0]);
105
+ } else {
106
+ // 创建一个ZIP包,但只添加图片文件
107
+ const zip = new JSZip();
108
+ for (let file of files) {
109
+ if (isImage(file.url) || isVideo(file.url)) { // 检查是否为图片/视频文件
110
+ const fileData = await fetch(file.url).then(response => {
111
+ if (!response.ok) throw new Error('Network response was not ok');
112
+ return response.blob();
113
+ });
114
+ // 从URL中提取文件名
115
+ const fileName = file.url.split('/').pop();
116
+ zip.file(fileName, fileData, { binary: true });
117
+ }
118
+ }
119
+ if (Object.keys(zip.files).length > 0) {
120
+ zip.generateAsync({ type: 'blob' }).then(content => {
121
+ const fileName = this.extractFileName();
122
+ saveAs(content, fileName + '.zip');
123
+ this.loading = false
124
+ });
125
+ } else {
126
+ this.loading = false
127
+ alert("没有文件可下载");
128
+ }
129
+ }
130
+ this.cancelAll1()
131
+ },
132
+ openFun () {
133
+ this.open = !this.open
134
+ },
135
+ },
136
+ watch: {
137
+ imgArr: {
138
+ handler(val) {
139
+ if(val.length) {
140
+ this.imgList = [];
141
+ this.srcList = [];
142
+ val.forEach((item) => {
143
+ this.imgList.push({
144
+ url: item.url,
145
+ checked: false
146
+ });
147
+ this.srcList.push(item.url);
148
+ });
149
+ }
150
+ },
151
+ deep: true,
152
+ immediate: true
153
+ }
154
+ },
155
+ computed: {
156
+ showDownloadIcon () {
157
+ let res = this.imgList.filter(item => item.checked)
158
+ return res.length > 0
159
+ }
160
+ }
161
+ };
162
+ </script>
163
+
164
+ <style lang="scss" scoped>
165
+ .img-preview {
166
+ display:flex;
167
+ flex-wrap: wrap;
168
+ padding-right:40px;
169
+ height:110px;
170
+ overflow:hidden;
171
+ position: relative;
172
+ width:100%;
173
+ .img-block {
174
+ position: relative;
175
+ margin:0 15px 15px 0;
176
+ }
177
+ .fold-wrap {
178
+ position: absolute;
179
+ right: 0;
180
+ width: 80px;
181
+ height: 100%;
182
+ display: flex;
183
+ justify-content: center;
184
+ align-items: center;
185
+ .el-button {
186
+ margin-bottom: 20px;
187
+ }
188
+
189
+ }
190
+ }
191
+ .checkbox-size {
192
+ position:absolute;
193
+ left:0;
194
+ width:18px;
195
+ height:18px;
196
+ }
197
+ .download-icon {
198
+ position: absolute;
199
+ bottom:2px;
200
+ right:0;
201
+ background-color: #fff;
202
+ cursor: pointer;
203
+ }
204
+
205
+ .billOfLadingNo-more {
206
+ width:20px;
207
+ height:100px;
208
+ position:absolute;
209
+ right:0;
210
+ top:0;
211
+ background-color: #999;
212
+ text-align: center;
213
+ line-height: 100px;
214
+ }
215
+
216
+ .img-preview-root {
217
+ position: relative;
218
+ .batch-download {
219
+ position: absolute;
220
+ top: -41px;
221
+ left: 480px;
222
+ min-width: 80px;
223
+ width:max-content;
224
+ padding:0 10px;
225
+ height: 22px;
226
+ line-height: 22px;
227
+ text-align: center;
228
+ border-radius: 10px;
229
+ background-color: #54B8FF;
230
+ cursor: pointer;
231
+ font-size:12px;
232
+ }
233
+ }
234
+
235
+ </style>
@@ -0,0 +1,84 @@
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-02-22 11:43:24
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: 85px;
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-left: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
+ font-weight: normal;
73
+ }
74
+ .progress-rate {
75
+ font-size: 14px;
76
+ font-weight: normal;
77
+ font-size: 9px;
78
+ font-weight: normal;
79
+ color: #231F20;
80
+ }
81
+
82
+
83
+ }
84
+ </style>
@@ -0,0 +1,122 @@
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-03-13 19:59:58
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
+ <el-row>
12
+ <el-col :span="8">
13
+ <div class="progress-left">
14
+ <img class="progress-img" :src="info.img" alt="">
15
+ <div class="progress-text">{{ info.text}}</div>
16
+ </div>
17
+ </el-col>
18
+ <el-col :span="16">
19
+ <div class="progress-info"
20
+ :style="{background:`linear-gradient(to right,${info.bgcolor} 0%, ${info.bgcolor} ${rate}%, #fff ${rate}%, #fff 100%)`}"
21
+ >
22
+ <div class="progress-info-text">
23
+ <div v-if="info.textArr && info.textArr.length" class="progress-info-item" v-for="(textItem, key) in info.textArr" :key="key">
24
+ {{textItem}}
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </el-col>
29
+ </el-row>
30
+ <div class="progress-rate">进度{{ info.rate }}%</div>
31
+ </div>
32
+ </template>
33
+
34
+ <script>
35
+ export default {
36
+ name: 'DoctorAdminComponentsProgressDetail',
37
+ props: {
38
+ infoPro: {
39
+ type: Object,
40
+ default: () => {
41
+ return {};
42
+ },
43
+ },
44
+ },
45
+ data() {
46
+ return {
47
+ info:{},
48
+ rate:0
49
+ };
50
+ },
51
+
52
+ mounted() {
53
+ },
54
+
55
+ methods: {
56
+
57
+ },
58
+ watch: {
59
+ infoPro: {
60
+ handler (val) {
61
+ this.info = val;
62
+ this.rate = +val.rate;
63
+ },
64
+ deep: true,
65
+ immediate: true
66
+ },
67
+ }
68
+ };
69
+ </script>
70
+
71
+ <style lang="scss" scoped>
72
+ .progress {
73
+ min-width: 85px;
74
+ min-height: 112px;
75
+ padding:5px;
76
+ box-sizing: border-box;
77
+ position:relative;
78
+ .progress-left {
79
+ min-height:112px;
80
+ display: flex;
81
+ align-items: center;
82
+ justify-content: center;
83
+ .progress-img {
84
+ width: 36px;
85
+ height: 36px;
86
+ background: #FFFFFF;
87
+ border-radius: 50%;
88
+ }
89
+ .progress-text {
90
+ font-size: 33px;
91
+ margin-left:30px;
92
+ font-weight: normal;
93
+ color: #fff;
94
+ }
95
+ }
96
+ .progress-rate {
97
+ position: absolute;
98
+ top:15px;
99
+ right:20px;
100
+ font-size: 18px;
101
+ font-weight: 600;
102
+ color: #231F20;
103
+ }
104
+ .progress-info {
105
+ min-height:112px;
106
+ overflow:hidden;
107
+ .progress-info-item {
108
+ margin-top:8px;
109
+ overflow:hidden;
110
+ }
111
+ .progress-info-text {
112
+ min-height:112px;
113
+ padding-left:10px;
114
+ display:flex;
115
+ flex-direction: column;
116
+ justify-content: center;
117
+ }
118
+ }
119
+
120
+
121
+ }
122
+ </style>