doctor-admin-components 1.0.10 → 1.0.11-beta.2

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "doctor-admin-components",
3
- "version": "1.0.10",
4
- "version1": "1.0.6-beta.4",
3
+ "version1": "1.0.11",
4
+ "version": "1.0.11-beta.2",
5
5
  "private": false,
6
6
  "main1": "lib/index.umd.min.js",
7
7
  "main": "packages/index.js",
package/packages/index.js CHANGED
@@ -6,23 +6,22 @@
6
6
  // Vue.use(ZpwComTest); // use install
7
7
  // Vue.config.productionTip = false;
8
8
 
9
- import Cookies from 'js-cookie'
10
- import router from './src/router'
11
- import Element from 'element-ui'
12
- import enLocale from 'element-ui/lib/locale/lang/en'
13
- import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
14
- import './src/assets/icons' // icon
15
- import './src/assets/styles/element-variables.scss'
16
-
17
- import './src/assets/styles/index.scss' // global css
18
- import './src/assets/styles/ruoyi.scss' // ruoyi css
19
- import plugins from './src/plugins'
9
+ import Cookies from "js-cookie";
10
+ import router from "./src/router";
11
+ import Element from "element-ui";
12
+ import enLocale from "element-ui/lib/locale/lang/en";
13
+ import zhLocale from "element-ui/lib/locale/lang/zh-CN";
14
+ import "./src/assets/icons"; // icon
15
+ import "./src/assets/styles/element-variables.scss";
16
+
17
+ import "./src/assets/styles/index.scss"; // global css
18
+ import "./src/assets/styles/ruoyi.scss"; // ruoyi css
19
+ import plugins from "./src/plugins";
20
20
 
21
21
  // import VueI18n from 'vue-i18n'
22
22
  // Vue.use(plugins)
23
23
  // Vue.use(VueI18n)
24
24
 
25
-
26
25
  import {
27
26
  parseTime,
28
27
  resetForm,
@@ -31,59 +30,54 @@ import {
31
30
  selectDictLabels,
32
31
  handleTree,
33
32
  utc2local,
34
- removeMarketContent
33
+ removeMarketContent,
35
34
  } from "./src/utils/ruoyi";
36
35
 
37
- import {
38
- getDicts
39
- } from "./src/api/system/dict/data";
36
+ import { getDicts } from "./src/api/system/dict/data";
40
37
 
41
- import DictTag from './src/components/DictTag'
38
+ import DictTag from "./src/components/DictTag";
42
39
 
43
- import { download } from './src/utils/request'
44
- import moment from 'moment';
45
- import ImagePreview from "./src/components/ImagePreview"
46
- import ImageUpload from "./src/components/ImageUpload/aliyun"
40
+ import { download } from "./src/utils/request";
41
+ import moment from "moment";
42
+ import ImagePreview from "./src/components/ImagePreview";
43
+ import ImageUpload from "./src/components/ImageUpload/aliyun";
47
44
 
48
- import DictData from './src/components/DictData'
45
+ import DictData from "./src/components/DictData";
49
46
 
50
47
  // 导入button组件
51
- import XButton from './Button'
52
- import {
53
- Claim,
54
- ContractTracingDetail
55
- } from "./src";
56
- import locale from 'element-ui/src/locale';
48
+ import XButton from "./Button";
49
+ import { Claim, ContractTracingDetail, PurchaseInvoiceUpload } from "./src";
50
+ import locale from "element-ui/src/locale";
57
51
 
58
52
  // 组件列表
59
53
  const components = [
60
54
  XButton,
61
55
  Claim,
62
- ContractTracingDetail
63
- ]
64
-
56
+ ContractTracingDetail,
57
+ PurchaseInvoiceUpload,
58
+ ];
65
59
 
66
60
  // 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,那么所有的组件都会被注册
67
61
  const install = function (Vue, options) {
68
- console.log('---options', options);
69
- Vue.use(plugins)
62
+ console.log("---options", options);
63
+ Vue.use(plugins);
70
64
  // Vue.use(VueI18n)
71
- Vue.prototype.getDicts = getDicts
72
- Vue.prototype.parseTime = parseTime
73
- Vue.prototype.resetForm = resetForm
74
- Vue.prototype.addDateRange = addDateRange
75
- Vue.prototype.selectDictLabel = selectDictLabel
76
- Vue.prototype.selectDictLabels = selectDictLabels
77
- Vue.prototype.download = download
78
- Vue.prototype.handleTree = handleTree
79
- Vue.prototype.utc2local = utc2local
80
- Vue.prototype.removeMarketContent = removeMarketContent
65
+ Vue.prototype.getDicts = getDicts;
66
+ Vue.prototype.parseTime = parseTime;
67
+ Vue.prototype.resetForm = resetForm;
68
+ Vue.prototype.addDateRange = addDateRange;
69
+ Vue.prototype.selectDictLabel = selectDictLabel;
70
+ Vue.prototype.selectDictLabels = selectDictLabels;
71
+ Vue.prototype.download = download;
72
+ Vue.prototype.handleTree = handleTree;
73
+ Vue.prototype.utc2local = utc2local;
74
+ Vue.prototype.removeMarketContent = removeMarketContent;
81
75
  Vue.prototype.$moment = moment;
82
- Vue.component('ImagePreview', ImagePreview)
83
- Vue.component('ImageUpload', ImageUpload)
84
- Vue.component('DictTag', DictTag)
76
+ Vue.component("ImagePreview", ImagePreview);
77
+ Vue.component("ImageUpload", ImageUpload);
78
+ Vue.component("DictTag", DictTag);
85
79
 
86
- DictData.install(Vue)
80
+ DictData.install(Vue);
87
81
 
88
82
  // 字典数据组件
89
83
  // const lang = options?.lang || Cookies.get('lang') || localStorage.getItem('lang') || (navigator.language === 'zh-CN' ? 'zh' : 'en') || 'en'
@@ -95,7 +89,7 @@ const install = function (Vue, options) {
95
89
  // 'en': require('./src/lang/en.json')
96
90
  // }
97
91
  // })
98
-
92
+
99
93
  // Vue.use(Element, {
100
94
  // enLocale,
101
95
  // zhLocale
@@ -103,20 +97,20 @@ const install = function (Vue, options) {
103
97
 
104
98
  // locale.use(lang);
105
99
  // locale.i18n(lang);
106
-
100
+
107
101
  // new Vue({
108
102
  // i18n,
109
103
  // }).$mount('#contract-detail')
110
104
 
111
105
  // 判断是否安装
112
- if (install.installed) return
106
+ if (install.installed) return;
113
107
  // 遍历注册全局组件
114
- components.map(component => Vue.component(component.name, component))
115
- }
108
+ components.map((component) => Vue.component(component.name, component));
109
+ };
116
110
 
117
111
  // 判断是否是直接引入文件
118
- if (typeof window !== 'undefined' && window.Vue) {
119
- install(window.Vue)
112
+ if (typeof window !== "undefined" && window.Vue) {
113
+ install(window.Vue);
120
114
  }
121
115
  export default {
122
116
  // 导出的对象必须具有 install,才能被 Vue.use() 方法安装
@@ -124,5 +118,6 @@ export default {
124
118
  // 以下是具体的组件列表
125
119
  // XButton,
126
120
  ContractTracingDetail,
127
- Claim
128
- }
121
+ Claim,
122
+ PurchaseInvoiceUpload,
123
+ };
@@ -26,6 +26,14 @@ export function getBizContract(id) {
26
26
  });
27
27
  }
28
28
 
29
+ // 查询合同详细
30
+ export function getSaleContractInfo(dealId) {
31
+ return request({
32
+ url: "/biz/contract/saleContract/" + dealId,
33
+ method: "get",
34
+ });
35
+ }
36
+
29
37
  // 查询合同文件详细
30
38
  export function getBizContractFileInfo(id) {
31
39
  return request({
@@ -46,13 +46,11 @@ export default {
46
46
  },
47
47
  ...mapGetters(["language"]),
48
48
  isChina() {
49
- console.log('this.language',this.language);
50
- return ["zh-CN", "zh-TW","zh"].includes(this.language);
49
+ return ["zh-CN", "zh-TW", "zh"].includes(this.language);
51
50
  },
52
51
  },
53
52
  methods: {
54
53
  getName(item) {
55
- console.log('item',item);
56
54
  return this.isChina ? item?.label : item?.raw?.dictLabelEn;
57
55
  },
58
56
  },
@@ -8,25 +8,28 @@
8
8
  */
9
9
  /* eslint-disable import/prefer-default-export */
10
10
 
11
-
12
11
  // export { default as ZpwComTestSample } from './lib-components/zpw-com-test-sample.vue';
13
12
  // export { default as ZpwButton } from './lib-components/zpw-button.vue';
14
13
  // export { default as ContractTracingDetail } from './views/biz/contractTracing/contractTracingDetail.vue';
15
14
  // // export { default as Test } from './views/test.vue111111111111';
16
15
 
17
- import ContractTracingDetail from './views/biz/contractTracing/contractTracingDetail.vue'
18
- import Claim from './views/biz/claim/Claim.vue'
16
+ import ContractTracingDetail from "./views/biz/contractTracing/contractTracingDetail.vue";
17
+ import Claim from "./views/biz/claim/Claim.vue";
18
+ import PurchaseInvoiceUpload from "./views/biz/contractTracing/purchaseInvoiceUpload.vue";
19
19
 
20
20
  // 为组件提供 install 安装方法,供按需引入
21
21
 
22
22
  ContractTracingDetail.install = function (Vue) {
23
- Vue.component(ContractTracingDetail.name, ContractTracingDetail)
24
- }
23
+ Vue.component(ContractTracingDetail.name, ContractTracingDetail);
24
+ };
25
25
 
26
26
  Claim.install = function (Vue) {
27
- Vue.component(Claim.name, Claim)
28
- }
27
+ Vue.component(Claim.name, Claim);
28
+ };
29
29
 
30
- // 导出组件
31
- export {ContractTracingDetail, Claim}
30
+ PurchaseInvoiceUpload.install = function (Vue) {
31
+ Vue.component(PurchaseInvoiceUpload.name, PurchaseInvoiceUpload);
32
+ };
32
33
 
34
+ // 导出组件
35
+ export { ContractTracingDetail, Claim, PurchaseInvoiceUpload };
@@ -15,7 +15,7 @@ axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
15
15
  // 创建axios实例
16
16
  const service = axios.create({
17
17
  // axios中请求配置有baseURL选项,表示请求URL公共部分
18
- baseURL: '/prod-admin',
18
+ baseURL: "/prod-admin",
19
19
  // 超时
20
20
  timeout: 60000,
21
21
  });
@@ -87,7 +87,6 @@ service.interceptors.request.use(
87
87
  // if (config.url.includes('/system/dict/data/type/')) {
88
88
  // config.url = '/prod-api' + config.url
89
89
  // }
90
- console.log('==config.url==', config.url);
91
90
  return config;
92
91
  },
93
92
  (error) => {
@@ -19,7 +19,7 @@
19
19
  {{
20
20
  contract.contractType == "sale"
21
21
  ? $t("contractDetail.saleContract")
22
- : "$t('contractDetail.purchaseContract')"
22
+ : $t("contractDetail.purchaseContract")
23
23
  }}
24
24
  <el-button
25
25
  v-if="channel !== 'official-website'"
@@ -81,20 +81,16 @@
81
81
  ></el-col>
82
82
  </el-row>
83
83
  <el-divider></el-divider>
84
- <div
85
- v-if="channel !== 'official-website'"
86
- class="sub-title">
87
- {{
88
- contract.contractType == "sale"
89
- ? $t("contractDetail.signSaleContract")
90
- : $t("contractDetail.signPuchaseContract")
91
- }}
92
- </div>
93
- <div v-esle class="sub-title">
84
+ <div v-if="channel !== 'official-website'" class="sub-title">
94
85
  {{
95
- $t("contractDetail.signSaleContract")
86
+ contract.contractType == "sale"
87
+ ? $t("contractDetail.signSaleContract")
88
+ : $t("contractDetail.signPuchaseContract")
96
89
  }}
97
90
  </div>
91
+ <div v-else class="sub-title">
92
+ {{ $t("contractDetail.signSaleContract") }}
93
+ </div>
98
94
  <div class="file-list">
99
95
  <file-show
100
96
  @refresh="handleRefresh"
@@ -148,13 +144,27 @@
148
144
  "
149
145
  class="el-icon-success customer-icon-success-color"
150
146
  >
151
- {{channel !== 'official-website' ? '定金已收' : $t('contractDetail.Deposit_Paid')}}
147
+ {{
148
+ channel !== "official-website"
149
+ ? "定金已收"
150
+ : $t("contractDetail.Deposit_Paid")
151
+ }}
152
+ </div>
153
+ <div v-else style="color: red">
154
+ {{
155
+ channel !== "official-website"
156
+ ? "定金未收"
157
+ : $t("contractDetail.Deposit_Unpaid")
158
+ }}
152
159
  </div>
153
- <div v-else style="color: red">{{channel !== 'official-website' ? '定金未收' : $t('contractDetail.Deposit_Unpaid')}}</div>
154
160
  </el-col>
155
161
  </el-row>
156
162
  <el-row v-else>
157
- <el-col :span="2"><div style="color: #1890ff">{{$t('contractDetail.Deposit')}}</div> </el-col>
163
+ <el-col :span="2"
164
+ ><div style="color: #1890ff">
165
+ {{ $t("contractDetail.Deposit") }}
166
+ </div>
167
+ </el-col>
158
168
  <el-col :span="2">
159
169
  <div
160
170
  v-if="
@@ -248,7 +258,9 @@
248
258
  type="primary"
249
259
  size="mini"
250
260
  @click="handleGenerate"
251
- v-if="channel !== 'official-website' && contract.contractType == 'sale'"
261
+ v-if="
262
+ channel !== 'official-website' && contract.contractType == 'sale'
263
+ "
252
264
  >生成船运</el-button
253
265
  >
254
266
  <el-tabs v-model="activeName">
@@ -266,7 +278,12 @@
266
278
  :type="shipmentFileInfo ? 'primary' : ''"
267
279
  size="large"
268
280
  >
269
- <div v-if="channel !== 'official-website'" style="color: #1890ff">首批货运</div>
281
+ <div
282
+ v-if="channel !== 'official-website'"
283
+ style="color: #1890ff"
284
+ >
285
+ 首批货运
286
+ </div>
270
287
  <div>
271
288
  <div class="sub-title">
272
289
  {{ $t("contractDetail.bookingConfirmation") }}
@@ -483,7 +500,7 @@
483
500
  :key="i"
484
501
  />
485
502
  <contract-file-drag-upload
486
- v-if="channel !== 'official-website'"
503
+ v-if="channel !== 'official-website'"
487
504
  @upload="
488
505
  handleUpload(
489
506
  $event,
@@ -677,31 +694,35 @@
677
694
  :type="shipmentFileInfo.waterBill ? 'primary' : ''"
678
695
  size="large"
679
696
  >
680
- <div v-if="channel !== 'official-website'" style="color: #1890ff">
697
+ <div
698
+ v-if="channel !== 'official-website'"
699
+ style="color: #1890ff"
700
+ >
681
701
  {{
682
- contract.contractType == "sale" ? "尾款收款" : $t('contractDetail.Final_payment')
702
+ contract.contractType == "sale"
703
+ ? "尾款收款"
704
+ : $t("contractDetail.Final_payment")
683
705
  }}
684
706
  </div>
685
707
  <div v-else class="sub-title">
686
- {{
687
- $t('contractDetail.Final_payment')
688
- }}
708
+ {{ $t("contractDetail.Final_payment") }}
689
709
  </div>
690
710
  <el-row>
691
711
  <el-col :span="8">
692
712
  <div>
693
- <div v-if="channel !== 'official-website'" class="sub-title">
713
+ <div
714
+ v-if="channel !== 'official-website'"
715
+ class="sub-title"
716
+ >
694
717
  {{
695
718
  contract.contractType == "sale"
696
719
  ? "收款水单"
697
- : $t('contractDetail.Payment_receipt')
720
+ : $t("contractDetail.Payment_receipt")
698
721
  }}
699
722
  </div>
700
723
  <div v-else class="sub-title">
701
- {{
702
- $t('contractDetail.Payment_receipt')
703
- }}
704
- </div>
724
+ {{ $t("contractDetail.Payment_receipt") }}
725
+ </div>
705
726
  <div class="file-list">
706
727
  <file-show
707
728
  @refresh="handleRefresh"
@@ -769,17 +790,18 @@
769
790
  </el-row>
770
791
  <el-row>
771
792
  <div>
772
- <div class="sub-title" v-if="channel !== 'official-website'">
793
+ <div
794
+ class="sub-title"
795
+ v-if="channel !== 'official-website'"
796
+ >
773
797
  {{
774
798
  contract.contractType == "sale"
775
799
  ? "收款凭证"
776
- : $t('contractDetail.Payment_voucher')
800
+ : $t("contractDetail.Payment_voucher")
777
801
  }}
778
802
  </div>
779
803
  <div v-else class="sub-title">
780
- {{
781
- $t('contractDetail.Payment_voucher')
782
- }}
804
+ {{ $t("contractDetail.Payment_voucher") }}
783
805
  </div>
784
806
  <div class="file-list">
785
807
  <file-show
@@ -824,7 +846,7 @@
824
846
  :key="i"
825
847
  />
826
848
  <contract-file-drag-upload
827
- v-if="channel !== 'official-website'"
849
+ v-if="channel !== 'official-website'"
828
850
  @upload="
829
851
  handleUpload(
830
852
  $event,
@@ -859,6 +881,7 @@
859
881
  </template>
860
882
 
861
883
  <script>
884
+ import { chargedShipment } from "../../../api/biz/bizShipment";
862
885
  import { listBizFileInfo, addBizFileInfo } from "../../../api/biz/bizFileInfo";
863
886
  import { getBizContractFileInfo } from "../../../api/biz/bizContract";
864
887
  import FileShow from "./fileShow.vue";
@@ -1050,6 +1073,12 @@ export default {
1050
1073
  });
1051
1074
  });
1052
1075
  }
1076
+ //如果是上传电放
1077
+ if (fileType == "shipment_delivery_receipt") {
1078
+ chargedShipment({ shipmentId: linkId }).then((response) => {
1079
+ this.$modal.msgSuccess("电放成功");
1080
+ });
1081
+ }
1053
1082
  });
1054
1083
  },
1055
1084
 
@@ -103,6 +103,11 @@ export default {
103
103
  };
104
104
  },
105
105
  },
106
+ //是否隐藏操作
107
+ hiddenOperation: {
108
+ type: Boolean,
109
+ default: false,
110
+ },
106
111
  },
107
112
  data() {
108
113
  return {
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div>
3
- <div v-if="form && form.deliveryCompanyId != null">
3
+ <div v-if="saleContract && saleContract.submitFlag">
4
4
  <div class="info" id="printPdf" v-if="!printModel">
5
5
  <el-form :model="form" ref="form" size="mini" :rules="rules">
6
6
  <el-row>
@@ -8,7 +8,9 @@
8
8
  <div class="sub-title mb20">Consignee Information</div>
9
9
  </el-col>
10
10
  <el-col :span="2">
11
- <el-button type="text" @click="editBill">{{$t('contractDetail.edit')}}</el-button>
11
+ <el-button type="text" @click="editBill">{{
12
+ $t("contractDetail.edit")
13
+ }}</el-button>
12
14
  </el-col>
13
15
  </el-row>
14
16
  <el-row>
@@ -64,13 +66,19 @@
64
66
  </el-row>
65
67
  <el-row>
66
68
  <el-form-item label="Email:">
67
- {{
68
- this.form.deliveryCompany &&
69
- this.form.deliveryCompany.email &&
70
- this.form.deliveryCompany.email.length > 0
71
- ? this.form.deliveryCompany.email.join("/")
72
- : ""
73
- }}
69
+ <el-row>
70
+ <el-col :span="20">
71
+ <div style="white-space: pre-line !important">
72
+ {{
73
+ this.form.deliveryCompany &&
74
+ this.form.deliveryCompany.email &&
75
+ this.form.deliveryCompany.email.length > 0
76
+ ? this.form.deliveryCompany.email.join("\n")
77
+ : ""
78
+ }}
79
+ </div>
80
+ </el-col>
81
+ </el-row>
74
82
  </el-form-item>
75
83
  </el-row>
76
84
 
@@ -132,13 +140,19 @@
132
140
 
133
141
  <el-row>
134
142
  <el-form-item label="Email:">
135
- {{
136
- this.form.notifierCompany &&
137
- this.form.notifierCompany.email &&
138
- this.form.notifierCompany.email.length > 0
139
- ? this.form.notifierCompany.email.join("/")
140
- : ""
141
- }}
143
+ <el-row>
144
+ <el-col :span="20">
145
+ <div style="white-space: pre-line !important">
146
+ {{
147
+ this.form.notifierCompany &&
148
+ this.form.notifierCompany.email &&
149
+ this.form.notifierCompany.email.length > 0
150
+ ? this.form.notifierCompany.email.join("\n")
151
+ : ""
152
+ }}
153
+ </div>
154
+ </el-col>
155
+ </el-row>
142
156
  </el-form-item>
143
157
  </el-row>
144
158
  <el-divider></el-divider>
@@ -160,7 +174,7 @@
160
174
  font-size: 14px;
161
175
  "
162
176
  >
163
- {{ (index == 0 ? "Preferred " : "Next ") + (index + 1) }}
177
+ {{ "Option " + (index + 1) }}
164
178
  </div>
165
179
  </el-col>
166
180
  <el-col :span="5">
@@ -176,23 +190,33 @@
176
190
  </el-row>
177
191
  </el-row>
178
192
 
179
- <el-form-item label="port of destination:">
193
+ <el-form-item label="Destination Port:">
180
194
  {{ contract.destination }}
181
195
  </el-form-item>
182
196
 
197
+ <el-form-item label="Terminal:">
198
+ {{ form.terminal }}
199
+ </el-form-item>
200
+
183
201
  <el-form-item label="Shipping mark:">
184
202
  {{ form.shippingMark }}
185
203
  </el-form-item>
186
204
 
187
205
  <el-form-item label="Remark:" prop="blRemark">
188
- {{ form.blRemark }}
206
+ <div style="white-space: pre-line !important">
207
+ {{ "\n" + form.blRemark }}
208
+ </div>
189
209
  </el-form-item>
190
210
  </el-form>
191
211
  </div>
192
212
  <div class="footer" v-if="!printModel">
193
- <el-button type="primary" @click="handleExportPdf()">
194
- Export ( PDF format)
195
- </el-button>
213
+ <el-dropdown @command="handleTemplate" trigger="click">
214
+ <el-button type="primary"> Export ( PDF format) </el-button>
215
+ <el-dropdown-menu slot="dropdown">
216
+ <el-dropdown-item command="PDF">PDF</el-dropdown-item>
217
+ <el-dropdown-item command="EXCEL">EXCEL</el-dropdown-item>
218
+ </el-dropdown-menu>
219
+ </el-dropdown>
196
220
  </div>
197
221
 
198
222
  <div class="billPdf" v-if="printModel">
@@ -242,6 +266,8 @@ import { listBizContractCompany } from "../../../api/biz/bizContractCompany";
242
266
  import BillPdf from "./billPdf.vue";
243
267
  import { listCompanyBillGoods } from "../../../api/biz/bizCompanyBillGoods";
244
268
  import EditBill from "./editBill.vue";
269
+ import { getSaleContractInfo } from "../../../api/biz/bizContract";
270
+
245
271
  export default {
246
272
  name: "BillInfo",
247
273
  props: {
@@ -253,6 +279,8 @@ export default {
253
279
  components: { BillPdf, EditBill },
254
280
  data() {
255
281
  return {
282
+ //
283
+ saleContract: null,
256
284
  // 遮罩层
257
285
  loading: true,
258
286
  // 弹出层标题
@@ -295,8 +323,14 @@ export default {
295
323
  if (printModel == 1) {
296
324
  this.printModel = true;
297
325
  }
326
+ this.getSaleContractInfo(this.contract.dealId);
298
327
  },
299
328
  methods: {
329
+ getSaleContractInfo(dealId) {
330
+ getSaleContractInfo(dealId).then((res) => {
331
+ this.saleContract = res.data;
332
+ });
333
+ },
300
334
  edit() {
301
335
  this.getDealRecord(this.contract.askId);
302
336
  },
@@ -539,6 +573,40 @@ export default {
539
573
  this.printModel = false;
540
574
  });
541
575
  },
576
+
577
+ //导出按钮
578
+ handleTemplate(command) {
579
+ if (command == "EXCEL") {
580
+ this.download(
581
+ "biz/contract/downBill",
582
+ {
583
+ contractId: this.contract.contractId,
584
+ templateType: command,
585
+ },
586
+ `${
587
+ "BLI-" +
588
+ this.contract.contractNo +
589
+ "_" +
590
+ this.parseTime(new Date(), "{y}{m}{d}")
591
+ }.xlsx`
592
+ );
593
+ }
594
+ if (command == "PDF") {
595
+ this.download(
596
+ "biz/contract/downBill",
597
+ {
598
+ contractId: this.contract.contractId,
599
+ templateType: command,
600
+ },
601
+ `${
602
+ "BLI-" +
603
+ this.contract.contractNo +
604
+ "_" +
605
+ this.parseTime(new Date(), "{y}{m}{d}")
606
+ }.pdf`
607
+ );
608
+ }
609
+ },
542
610
  },
543
611
  };
544
612
  </script>
@@ -183,9 +183,11 @@ export default {
183
183
  if (this.lang == 'zh') {
184
184
  lang = 'zh-CN'
185
185
  }
186
-
186
+ const encryptedContractId = this.$encryptId(this.contract.contractId)
187
+ const encryptedDealId = this.$encryptId(this.contract.dealId)
188
+
187
189
  window.open(
188
- `${url}${this.contract.dealId}&contractId=${this.contract.contractId}&language=${lang}`
190
+ `${url}${this.contract.dealId}&contractId=${this.contract.contractId}&language=${lang}&encryptedContractId=${encryptedContractId}&encryptedDealId=${encryptedDealId}`
189
191
  );
190
192
  },
191
193
  /**
@@ -326,7 +326,11 @@
326
326
  >{{ $t("contractDetail.closeInvoiceInfo") }}
327
327
  <i class="el-icon-arrow-down"></i>
328
328
  </el-button>
329
- <el-button v-if="channel !== 'official-website'" style="padding: 3px 0" type="text" @click="viceDocuments"
329
+ <el-button
330
+ v-if="channel !== 'official-website'"
331
+ style="padding: 3px 0"
332
+ type="text"
333
+ @click="viceDocuments"
330
334
  >{{ $t("contractDetail.viewPaymentInfo") }}
331
335
  </el-button>
332
336
  </div>
@@ -462,7 +466,8 @@
462
466
  prop="remark"
463
467
  show-overflow-tooltip
464
468
  />
465
- <el-table-column :label="$t('contractDetail.operate')"
469
+ <el-table-column
470
+ :label="$t('contractDetail.operate')"
466
471
  v-if="channel !== 'official-website'"
467
472
  >
468
473
  <template slot-scope="{ row }">
@@ -600,9 +605,9 @@
600
605
  </template>
601
606
  </el-table-column>
602
607
 
603
- <el-table-column
604
- label="对应合同"
605
- align="center"
608
+ <el-table-column
609
+ label="对应合同"
610
+ align="center"
606
611
  width="160px"
607
612
  v-if="channel !== 'official-website'"
608
613
  >
@@ -632,9 +637,15 @@
632
637
  class-name="small-padding fixed-width"
633
638
  width="150px"
634
639
  >
635
- <template slot-scope="scope">
636
- <el-button size="mini" type="primary" @click.stop="activeNameFun(scope.$index)">{{ $t('contract.Track_Shipment') }}</el-button>
637
- </template>
640
+ <template slot-scope="scope">
641
+ <el-button
642
+ v-if="channel == 'official-website'"
643
+ size="mini"
644
+ type="primary"
645
+ @click.stop="activeNameFun(scope.$index)"
646
+ >{{ $t("contract.Track_Shipment") }}</el-button
647
+ >
648
+ </template>
638
649
  </el-table-column>
639
650
  </el-table>
640
651
 
@@ -697,10 +708,10 @@ export default {
697
708
  mixins: [],
698
709
  components: { ShipmentDetail },
699
710
  props: {
700
- channel:{
711
+ channel: {
701
712
  type: String,
702
713
  default: "",
703
- }
714
+ },
704
715
  },
705
716
  data() {
706
717
  return {
@@ -755,7 +766,7 @@ export default {
755
766
  computed: {
756
767
  ...mapGetters(["language"]),
757
768
  isChina() {
758
- return ["zh-CN", "zh-TW","zh"].includes(this.language);
769
+ return ["zh-CN", "zh-TW", "zh"].includes(this.language);
759
770
  },
760
771
  },
761
772
  methods: {
@@ -793,21 +804,54 @@ export default {
793
804
  this.invoiceActive = !this.invoiceActive;
794
805
  },
795
806
  //一键催款
796
- handleUrge(invoice) {
797
- const invoiceId = invoice.id;
807
+ handleUrge(row) {
808
+ const invoiceId = row.id;
809
+ if (row.invoiceSpecies == "provision") {
810
+ this.$confirm("该发票未点价,是否需要点价后再催款?", "点价确认", {
811
+ distinguishCancelAndClose: true,
812
+ confirmButtonText: "去点价",
813
+ cancelButtonText: "直接催款",
814
+ type: "warning",
815
+ })
816
+ .then(() => {
817
+ this.$router.push({
818
+ name: "Invoice",
819
+ params: { invoiceNo: row.invoiceNo },
820
+ });
821
+ })
822
+ .catch((action) => {
823
+ action === "cancel" ? this.copyCall(invoiceId) : "";
824
+ });
825
+ } else {
826
+ this.copyCall(invoiceId);
827
+ }
828
+ },
829
+ //复制一键催款
830
+ copyCall(invoiceId) {
798
831
  getInfoWithShipment(invoiceId).then((res) => {
799
- invoice = res.data;
832
+ var invoice = res.data;
800
833
  const contractNo = invoice.contractNo || "待补充";
834
+ const invoiceNoTitle =
835
+ invoice.invoiceSpecies == "provision"
836
+ ? "PROVISION INVOICE"
837
+ : "FIXED INVOICE" || "待补充";
838
+ const invoiceNoTitleZh =
839
+ invoice.invoiceSpecies == "provision"
840
+ ? "临时发票号"
841
+ : "正式发票号" || "待补充";
801
842
  const invoiceNo = invoice.invoiceNo || "待补充";
802
843
  const value = invoice.amount || "待补充";
803
844
  const blNumber = invoice.billOfLadingNo || "待补充";
804
845
  const containerNo = invoice.containerNoList || "待补充";
805
846
  const eta = invoice.eta || "待补充";
806
847
 
807
- const englishText = `Attention: Arrive notice. Please arrange the payment within 7 days after receiving this notice, in order to obtain telex BL and avoid unnecessary demurrage charges.
848
+ const englishText = `更新时间 ${
849
+ invoice.geekUpdateTime || invoice.shipmentCreateTime
850
+ }
851
+ Attention: Arrive notice. Please arrange the payment within 7 days after receiving this notice, in order to obtain telex BL and avoid unnecessary demurrage charges.
808
852
  TO: ${invoice.receiveCompanyName || "待补充"}
809
853
  Contract #: ${contractNo}
810
- INVOICE #: ${invoiceNo}
854
+ ${invoiceNoTitle} #: ${invoiceNo}
811
855
  Value: $${value}
812
856
  BL#: ${blNumber}
813
857
  Container#: ${containerNo}
@@ -816,7 +860,7 @@ ETA: ${eta}
816
860
  温馨提示:到货通知。请贵司收到此通知后的7个工作日内安排支付货款,以便安排提单电放,避免产生不必要的滞箱费用。
817
861
  致:收货公司${invoice.receiveCompanyName || "待补充"}
818
862
  合同号:${contractNo}
819
- 发票号:${invoiceNo}
863
+ ${invoiceNoTitleZh}:${invoiceNo}
820
864
  发票金额:$${value}
821
865
  提单号:${blNumber}
822
866
  集装箱号:${containerNo}
@@ -837,7 +881,6 @@ ETA: ${eta}
837
881
  this.$modal.msgSuccess("已复制到剪切板");
838
882
  });
839
883
  },
840
-
841
884
  //处理装运状态
842
885
  handleShipmentStatus(status) {
843
886
  let statusCn =
@@ -947,14 +990,14 @@ ETA: ${eta}
947
990
  );
948
991
  });
949
992
  },
950
-
993
+
951
994
  /**
952
995
  * @description: 状态设置
953
996
  * @param {*} contract_status
954
997
  * @param {*} contractStatus
955
998
  * @return {*}
956
999
  */
957
- selectDictLabelMapFun(contract_status ,contractStatus) {
1000
+ selectDictLabelMapFun(contract_status, contractStatus) {
958
1001
  if (contractStatus == "voided") {
959
1002
  return this.$t("contractDetail.voided");
960
1003
  } else if (contractStatus == "signed") {
@@ -2,43 +2,58 @@
2
2
  * @Author: zhangpengwei 15038779532@163.com
3
3
  * @Date: 2023-07-20 17:13:54
4
4
  * @LastEditors: zhangpengwei 15038779532@163.com
5
- * @LastEditTime: 2023-08-14 10:52:44
5
+ * @LastEditTime: 2023-08-15 10:25:31
6
6
  * @FilePath: /recycle-vue-ui再生博士后台管理/src/views/biz/contractTracing/contractTracingDetail.vue
7
7
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
8
8
  -->
9
9
  <template>
10
10
  <div class="app-container">
11
- <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
12
- <el-tab-pane :label="$t('contractDetail.summary')" name="first">
13
- <contract-summary
14
- v-if="activeName == 'first'"
15
- :channel="channel"
16
- ></contract-summary>
17
- </el-tab-pane>
18
- <el-tab-pane :label="$t('contractDetail.info')" name="second">
19
- <contract-info
20
- v-if="activeName == 'second'"
21
- :channel="channel"
22
- ></contract-info>
23
- </el-tab-pane>
24
- <el-tab-pane
25
- v-if="contract.contractType == 'sale'"
26
- :label="$t('contractDetail.blInfo')"
27
- name="third"
11
+ <div style="position: relative">
12
+ <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
13
+ <el-tab-pane :label="$t('contractDetail.summary')" name="first">
14
+ <contract-summary
15
+ v-if="activeName == 'first'"
16
+ :channel="channel"
17
+ ></contract-summary>
18
+ </el-tab-pane>
19
+ <el-tab-pane :label="$t('contractDetail.info')" name="second">
20
+ <contract-info
21
+ v-if="activeName == 'second'"
22
+ :channel="channel"
23
+ ></contract-info>
24
+ </el-tab-pane>
25
+ <el-tab-pane
26
+ v-if="contract.contractType == 'sale'"
27
+ :label="$t('contractDetail.blInfo')"
28
+ name="third"
29
+ >
30
+ <bill-info
31
+ :contract="contract"
32
+ v-if="activeName == 'third'"
33
+ ></bill-info>
34
+ </el-tab-pane>
35
+ <el-tab-pane :label="$t('contractDetail.fileManage')" name="fourth">
36
+ <contract-file
37
+ v-if="activeName == 'fourth'"
38
+ :contract="contract"
39
+ :channel="channel"
40
+ ></contract-file>
41
+ </el-tab-pane>
42
+ </el-tabs>
43
+
44
+ <!-- 这里添加合同编号的显示 -->
45
+ <div
46
+ style="
47
+ position: absolute;
48
+ right: 10px;
49
+ top: 5px;
50
+ margin-top: 10px;
51
+ font-weight: bold;
52
+ "
28
53
  >
29
- <bill-info
30
- :contract="contract"
31
- v-if="activeName == 'third'"
32
- ></bill-info>
33
- </el-tab-pane>
34
- <el-tab-pane :label="$t('contractDetail.fileManage')" name="fourth">
35
- <contract-file
36
- v-if="activeName == 'fourth'"
37
- :contract="contract"
38
- :channel="channel"
39
- ></contract-file>
40
- </el-tab-pane>
41
- </el-tabs>
54
+ 合同编号:{{ contract.contractNo }}
55
+ </div>
56
+ </div>
42
57
  </div>
43
58
  </template>
44
59
 
@@ -70,8 +85,8 @@ export default {
70
85
  this.getContract(contractId);
71
86
  const activeName = this.$route.query && this.$route.query.activeName;
72
87
  this.activeName = activeName || "first";
73
- localStorage.setItem("contractDetail", location.href)
74
- location.href
88
+ localStorage.setItem("contractDetail", location.href);
89
+ location.href;
75
90
  },
76
91
  mounted() {},
77
92
  methods: {
@@ -50,9 +50,16 @@
50
50
  </el-button>
51
51
  </el-col>
52
52
  </el-row>
53
- <el-form-item label="金额">
53
+ <el-form-item
54
+ label="金额($)"
55
+ :prop="'proFormInvoiceList.' + index + '.amount'"
56
+ :rules="[
57
+ { required: true, message: '不能为空' },
58
+ { type: 'number', message: '必须为数字值' },
59
+ ]"
60
+ >
54
61
  <el-input
55
- v-model="dt.amount"
62
+ v-model.number="dt.amount"
56
63
  clearable
57
64
  size="small"
58
65
  placeholder="请输入发票金额"
@@ -131,9 +138,16 @@
131
138
  </el-form-item>
132
139
  </el-row>
133
140
  <el-row>
134
- <el-form-item label="金额">
141
+ <el-form-item
142
+ label="金额($)"
143
+ :prop="'fixedInvoiceList.' + index + '.amount'"
144
+ :rules="[
145
+ { required: true, message: '不能为空' },
146
+ { type: 'number', message: '必须为数字值' },
147
+ ]"
148
+ >
135
149
  <el-input
136
- v-model="item.amount"
150
+ v-model.number="item.amount"
137
151
  clearable
138
152
  size="small"
139
153
  placeholder="请输入发票金额"
@@ -214,33 +228,41 @@ export default {
214
228
  methods: {
215
229
  //上传并生成
216
230
  uploadAndGenerate() {
217
- uploadBizInvoice(this.form)
218
- .then((response) => {
219
- this.$modal.msgSuccess("保存成功");
220
- this.open = false;
221
- })
222
- .then(() => {
223
- this.$router.push({
224
- name: "Invoice",
225
- params: { documentFlag: true },
226
- });
227
- });
231
+ this.$refs["form"].validate((valid) => {
232
+ if (valid) {
233
+ uploadBizInvoice(this.form)
234
+ .then((response) => {
235
+ this.$modal.msgSuccess("保存成功");
236
+ this.open = false;
237
+ })
238
+ .then(() => {
239
+ this.$router.push({
240
+ name: "Invoice",
241
+ params: { documentFlag: true },
242
+ });
243
+ });
244
+ }
245
+ });
228
246
  },
229
247
  /** 提交按钮 */
230
248
  submitForm() {
231
- if (this.type == "finally") {
232
- uploadByShipmentId(this.form).then((response) => {
233
- this.$modal.msgSuccess("保存成功");
234
- this.$emit("refresh");
235
- this.open = false;
236
- });
237
- } else {
238
- uploadBizInvoice(this.form).then((response) => {
239
- this.$modal.msgSuccess("保存成功");
240
- this.$emit("refresh");
241
- this.open = false;
242
- });
243
- }
249
+ this.$refs["form"].validate((valid) => {
250
+ if (valid) {
251
+ if (this.type == "finally") {
252
+ uploadByShipmentId(this.form).then((response) => {
253
+ this.$modal.msgSuccess("保存成功");
254
+ this.$emit("refresh");
255
+ this.open = false;
256
+ });
257
+ } else {
258
+ uploadBizInvoice(this.form).then((response) => {
259
+ this.$modal.msgSuccess("保存成功");
260
+ this.$emit("refresh");
261
+ this.open = false;
262
+ });
263
+ }
264
+ }
265
+ });
244
266
  },
245
267
  // 取消按钮
246
268
  cancel() {