doctor-admin-components 1.0.13-beta.6 → 1.0.13-beta.61

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 (49) hide show
  1. package/README.md +18 -7
  2. package/package.json +1 -1
  3. package/packages/index.js +7 -0
  4. package/packages/src/api/biz/bizContract.js +980 -1
  5. package/packages/src/api/biz/bizContractCompany.js +1 -1
  6. package/packages/src/api/biz/bizFileInfo.js +16 -0
  7. package/packages/src/api/biz/bizInvoice.js +1 -1
  8. package/packages/src/assets/images/click-show-table.png +0 -0
  9. package/packages/src/assets/images/more.png +0 -0
  10. package/packages/src/assets/images/pdf-new.png +0 -0
  11. package/packages/src/components/FileUpload/contract-drag-new.vue +99 -10
  12. package/packages/src/i18n/en/message.json +296 -0
  13. package/packages/src/i18n/index.js +38 -0
  14. package/packages/src/i18n/zh-CN/message.json +296 -0
  15. package/packages/src/index.js +6 -0
  16. package/packages/src/utils/index.js +35 -0
  17. package/packages/src/utils/request.js +120 -146
  18. 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
  19. package/packages/src/views/biz/bizFileInfo/contract copy.vue +1711 -0
  20. package/packages/src/views/biz/bizFileInfo/contract.vue +1678 -1003
  21. package/packages/src/views/biz/bizFileInfo/contractFile/BillOfLadingNoTab.vue +114 -0
  22. package/packages/src/views/biz/bizFileInfo/contractFile/ContentTitle.vue +102 -0
  23. package/packages/src/views/biz/bizFileInfo/contractFile/IMGPreviewCheckBox.vue +280 -0
  24. package/packages/src/views/biz/bizFileInfo/contractFile/Progress.vue +85 -0
  25. package/packages/src/views/biz/bizFileInfo/contractFile/ProgressDetail.vue +122 -0
  26. package/packages/src/views/biz/bizFileInfo/contractFile/SectionSlot.vue +83 -0
  27. package/packages/src/views/biz/bizFileInfo/contractFile/ShowAndHide.vue +178 -0
  28. package/packages/src/views/biz/bizFileInfo/fileShow copy.vue +321 -0
  29. package/packages/src/views/biz/bizFileInfo/fileShow.vue +131 -46
  30. package/packages/src/views/biz/bizFileInfo/fileShowClaim.vue +1 -1
  31. package/packages/src/views/biz/bizShipment/add.vue +119 -69
  32. package/packages/src/views/biz/contractTracing/addSubCompany.vue +106 -169
  33. package/packages/src/views/biz/contractTracing/billInfo.vue +150 -315
  34. package/packages/src/views/biz/contractTracing/companyBanks.vue +228 -0
  35. package/packages/src/views/biz/contractTracing/contractSummary.vue +286 -629
  36. package/packages/src/views/biz/contractTracing/contractTracingDetail copy.vue +107 -0
  37. package/packages/src/views/biz/contractTracing/contractTracingDetail.vue +200 -7
  38. package/packages/src/views/biz/contractTracing/editBill.vue +219 -359
  39. package/packages/src/views/biz/contractTracing/purchaseInvoiceUpload.vue +157 -7
  40. package/packages/src/views/biz/contractTracing/shipmentPurchaseAmount.vue +8 -2
  41. package/packages/src/views/biz/contractTracing/subCompanyDialog.vue +196 -176
  42. package/packages/src/views/test.vue +3 -3
  43. package/packages/src/views/biz/contractTracing/association.vue +0 -189
  44. package/packages/src/views/biz/contractTracing/chargingDialog.vue +0 -84
  45. package/packages/src/views/biz/contractTracing/contract.vue +0 -1276
  46. package/packages/src/views/biz/contractTracing/disputeRecord.vue +0 -311
  47. package/packages/src/views/biz/contractTracing/edit.vue +0 -205
  48. package/packages/src/views/biz/contractTracing/sendDrafEmail.vue +0 -120
  49. 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-04-09 20:28:44
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
+ : '' }}
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,280 @@
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-04-09 20:22:25
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
+ </div>
29
+ <div class="billOfLadingNo-more" @click.stop="openFun" v-if="imgList && imgList.length > 7">
30
+ <i v-if="open" class="el-icon-caret-top"></i>
31
+ <i v-else class="el-icon-caret-bottom"></i>
32
+ </div>
33
+ </div>
34
+ <div class="batch-download" v-show="showDownloadIcon" @click.stop="downLoadFile">批量下载</div>
35
+ </div>
36
+ </template>
37
+
38
+ <script>
39
+ import JSZip from 'jszip';
40
+ import { saveAs } from 'file-saver';
41
+ import { isImage, isVideo, isDoc, isPdf, isZip, isXls, isPpt } from '../../../../utils/index';
42
+ import { Loading } from 'element-ui';
43
+
44
+ export default {
45
+ name: 'IMGPreviewCheckBox',
46
+ props: {
47
+ imgArr: {
48
+ type: Array,
49
+ default: () => []
50
+ },
51
+ info: {
52
+ type: Object,
53
+ default: () => {}
54
+ }
55
+ },
56
+ data() {
57
+ return {
58
+ isVideo,
59
+ open: false,
60
+ imgList: [],
61
+ srcList:[],
62
+ loadingInstance: null,
63
+ timer: null
64
+ };
65
+ },
66
+
67
+ mounted() {
68
+
69
+ },
70
+
71
+ methods: {
72
+ previewFile(file) {
73
+ if (!(isImage(file.url) || isVideo(file.url))) {
74
+ window.open(file.url);
75
+ }
76
+ },
77
+ checkClick(index) {
78
+ this.imgList[index].checked = !this.imgList[index].checked;
79
+ },
80
+ checkAll1() {
81
+ this.imgList.forEach((item) => {
82
+ item.checked = true;
83
+ });
84
+ },
85
+ cancelAll1() {
86
+ this.imgList.forEach((item) => {
87
+ item.checked = false;
88
+ });
89
+ },
90
+ // 文件名称
91
+ extractFileName() {
92
+ return 'loading photos-' + this.info.containerNo + '/container ' + this.info?.containerId + '/ Dated ' + this.$moment(new Date().getTime()).format('YYYY-MM-DD')
93
+ },
94
+ /**
95
+ * @description: 下载一个文件
96
+ * @param {*} file
97
+ * @return {*}
98
+ */
99
+ downloadSingleFile(file) {
100
+ this.loadingInstance = Loading.service({
101
+ text: this.$t('contractDetail.loading'),
102
+ spinner: 'el-icon-loading',
103
+ background: 'rgba(0, 0, 0, 0.7)',
104
+ });
105
+ // 从URL中提取文件名
106
+ const fileName = this.extractFileName();
107
+ // 如果是zip文件,重新命名为当前时间戳,否则使用原文件名
108
+ const newName = /\.zip$/i.test(fileName) ? fileName + '.zip' : fileName;
109
+ saveAs(file.url, newName);
110
+ this.loadingInstance.close();
111
+ },
112
+ /**
113
+ * @description: 文件下载
114
+ * @return {*}
115
+ */
116
+ async downLoadFile () {
117
+ this.loadingInstance = Loading.service({
118
+ text: this.$t('contractDetail.loading'),
119
+ spinner: 'el-icon-loading',
120
+ background: 'rgba(0, 0, 0, 0.7)',
121
+ });
122
+ // test
123
+ let files = this.imgList.filter(item => item.checked)
124
+
125
+ if (files.length === 1) {
126
+ // 如果只有一个文件且该文件是图片/视频,直接下载
127
+ this.downloadSingleFile(files[0]);
128
+ } else {
129
+ // 创建一个ZIP包,但只添加图片文件
130
+ const zip = new JSZip();
131
+ for (let file of files) {
132
+ const fileData = await fetch(file.url).then(response => {
133
+ if (!response.ok) throw new Error('Network response was not ok');
134
+ return response.blob();
135
+ });
136
+ // 从URL中提取文件名
137
+ const fileName = file.url.split('/').pop();
138
+ zip.file(fileName, fileData, { binary: true });
139
+ }
140
+ if (Object.keys(zip.files).length > 0) {
141
+ zip.generateAsync({ type: 'blob' }).then(content => {
142
+ const fileName = this.extractFileName();
143
+ saveAs(content, fileName + '.zip');
144
+ }).
145
+ finally(() => {
146
+ this.timer =setTimeout(() => {
147
+ this.loadingInstance.close();
148
+ }, 1500);
149
+ })
150
+ } else {
151
+ alert("没有文件可下载");
152
+ }
153
+ }
154
+ this.cancelAll1()
155
+ },
156
+ openFun () {
157
+ this.open = !this.open
158
+ },
159
+ othersFile(imgUrl) {
160
+ if(isDoc(imgUrl)) {
161
+ return 'https://s3.cdn.doctorscrap.com/dev/user/image_13/1ed150dc6171450d81a5e1f7b4e1253f.png'
162
+ } else if(isPdf(imgUrl)) {
163
+ return 'https://s3.cdn.doctorscrap.com/dev/user/image_13/5a4b66e220794c0b8284f0a8204aac3e.png'
164
+ } else if(isZip(imgUrl)) {
165
+ return 'https://s3.cdn.doctorscrap.com/dev/user/image_13/470eeab01eec430e9ed0edd81d15ace5.png'
166
+ } else if(isXls(imgUrl)) {
167
+ return 'https://s3.cdn.doctorscrap.com/dev/user/image_13/caaa343a68684216be1a4d3b27d40a9d.png'
168
+ } else if(isPpt(imgUrl)) {
169
+ return 'https://s3.cdn.doctorscrap.com/dev/user/image_13/b0590840eceb4162a8c07119ef2fe245.png'
170
+ } else {
171
+ return imgUrl
172
+ }
173
+ }
174
+ },
175
+ watch: {
176
+ imgArr: {
177
+ handler(val) {
178
+ if(val.length) {
179
+ this.imgList = [];
180
+ this.srcList = [];
181
+ val.forEach((item) => {
182
+ let coverUrl = this.othersFile(item.url)
183
+ this.imgList.push({
184
+ url: item.url,
185
+ checked: false
186
+ });
187
+ this.srcList.push(coverUrl);
188
+ });
189
+ }
190
+ },
191
+ deep: true,
192
+ immediate: true
193
+ }
194
+ },
195
+ computed: {
196
+ showDownloadIcon () {
197
+ let res = this.imgList.filter(item => item.checked)
198
+ return res.length > 0
199
+ }
200
+ },
201
+ beforeDestroy() {
202
+ this.loadingInstance = null
203
+ clearTimeout(this.timer)
204
+ }
205
+ };
206
+ </script>
207
+
208
+ <style lang="scss" scoped>
209
+ .img-preview {
210
+ display:flex;
211
+ flex-wrap: wrap;
212
+ padding-right:40px;
213
+ height:110px;
214
+ overflow:hidden;
215
+ position: relative;
216
+ width:100%;
217
+ .img-block {
218
+ position: relative;
219
+ margin:0 15px 15px 0;
220
+ background-color: #666;
221
+ }
222
+ .fold-wrap {
223
+ position: absolute;
224
+ right: 0;
225
+ width: 80px;
226
+ height: 100%;
227
+ display: flex;
228
+ justify-content: center;
229
+ align-items: center;
230
+ .el-button {
231
+ margin-bottom: 20px;
232
+ }
233
+
234
+ }
235
+ }
236
+ .checkbox-size {
237
+ position:absolute;
238
+ left:0;
239
+ width:18px;
240
+ height:18px;
241
+ }
242
+ .download-icon {
243
+ position: absolute;
244
+ bottom:2px;
245
+ right:0;
246
+ background-color: #fff;
247
+ cursor: pointer;
248
+ }
249
+
250
+ .billOfLadingNo-more {
251
+ width:20px;
252
+ height:100px;
253
+ position:absolute;
254
+ right:0;
255
+ top:0;
256
+ background-color: #999;
257
+ text-align: center;
258
+ line-height: 100px;
259
+ }
260
+
261
+ .img-preview-root {
262
+ position: relative;
263
+ .batch-download {
264
+ position: absolute;
265
+ top: -41px;
266
+ left: 620px;
267
+ min-width: 80px;
268
+ width:max-content;
269
+ padding:0 10px;
270
+ height: 22px;
271
+ line-height: 22px;
272
+ text-align: center;
273
+ border-radius: 10px;
274
+ background-color: #54B8FF;
275
+ cursor: pointer;
276
+ font-size:12px;
277
+ }
278
+ }
279
+
280
+ </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>
@@ -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-04-09 20:27: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
+ <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">{{ $t('contractDetail.progress') }} {{ 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: 150px;
75
+ padding:5px;
76
+ box-sizing: border-box;
77
+ position:relative;
78
+ .progress-left {
79
+ min-height:150px;
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:150px;
106
+ overflow:hidden;
107
+ .progress-info-item {
108
+ margin-top:8px;
109
+ overflow:hidden;
110
+ }
111
+ .progress-info-text {
112
+ min-height:150px;
113
+ padding-left:10px;
114
+ display:flex;
115
+ flex-direction: column;
116
+ justify-content: center;
117
+ }
118
+ }
119
+
120
+
121
+ }
122
+ </style>