doctor-admin-components 1.0.4 → 1.0.6-beta.0

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 (218) hide show
  1. package/lib/index.common.js +399 -321
  2. package/lib/index.css +1 -1
  3. package/lib/index.umd.js +399 -321
  4. package/lib/index.umd.min.js +43 -43
  5. package/package.json +4 -3
  6. package/packages/Button/index.js +16 -0
  7. package/packages/Button/src/index.vue +33 -0
  8. package/packages/index.js +122 -0
  9. package/packages/src/api/biz/bizCompanyBillGoods.js +61 -0
  10. package/packages/src/api/biz/bizContainer.js +86 -0
  11. package/packages/src/api/biz/bizContainerDetail.js +61 -0
  12. package/packages/src/api/biz/bizContract.js +112 -0
  13. package/packages/src/api/biz/bizContractCompany.js +53 -0
  14. package/packages/src/api/biz/bizContractDetail.js +62 -0
  15. package/packages/src/api/biz/bizContractDispute.js +53 -0
  16. package/packages/src/api/biz/bizDealRecord.js +87 -0
  17. package/packages/src/api/biz/bizFileInfo.js +53 -0
  18. package/packages/src/api/biz/bizInvoice.js +161 -0
  19. package/packages/src/api/biz/bizInvoiceExtraCosts.js +53 -0
  20. package/packages/src/api/biz/bizShipment.js +113 -0
  21. package/packages/src/api/biz/companyInfo.js +61 -0
  22. package/packages/src/api/biz/dictData.js +77 -0
  23. package/packages/src/api/biz/track.js +21 -0
  24. package/packages/src/api/system/dict/data.js +60 -0
  25. package/packages/src/api/system/dict/type.js +68 -0
  26. package/packages/src/assets/icons/index.js +17 -0
  27. package/packages/src/assets/icons/svg/404.svg +1 -0
  28. package/packages/src/assets/icons/svg/bug.svg +1 -0
  29. package/packages/src/assets/icons/svg/build.svg +1 -0
  30. package/packages/src/assets/icons/svg/button.svg +1 -0
  31. package/packages/src/assets/icons/svg/cascader.svg +1 -0
  32. package/packages/src/assets/icons/svg/chart.svg +1 -0
  33. package/packages/src/assets/icons/svg/checkbox.svg +1 -0
  34. package/packages/src/assets/icons/svg/clipboard.svg +1 -0
  35. package/packages/src/assets/icons/svg/code.svg +1 -0
  36. package/packages/src/assets/icons/svg/color.svg +1 -0
  37. package/packages/src/assets/icons/svg/component.svg +1 -0
  38. package/packages/src/assets/icons/svg/dashboard.svg +1 -0
  39. package/packages/src/assets/icons/svg/date-range.svg +1 -0
  40. package/packages/src/assets/icons/svg/date.svg +1 -0
  41. package/packages/src/assets/icons/svg/dict.svg +1 -0
  42. package/packages/src/assets/icons/svg/documentation.svg +1 -0
  43. package/packages/src/assets/icons/svg/download.svg +1 -0
  44. package/packages/src/assets/icons/svg/drag.svg +1 -0
  45. package/packages/src/assets/icons/svg/druid.svg +1 -0
  46. package/packages/src/assets/icons/svg/edit.svg +1 -0
  47. package/packages/src/assets/icons/svg/education.svg +1 -0
  48. package/packages/src/assets/icons/svg/email.svg +1 -0
  49. package/packages/src/assets/icons/svg/example.svg +1 -0
  50. package/packages/src/assets/icons/svg/excel.svg +1 -0
  51. package/packages/src/assets/icons/svg/exit-fullscreen.svg +1 -0
  52. package/packages/src/assets/icons/svg/eye-open.svg +1 -0
  53. package/packages/src/assets/icons/svg/eye.svg +1 -0
  54. package/packages/src/assets/icons/svg/form.svg +1 -0
  55. package/packages/src/assets/icons/svg/fullscreen.svg +1 -0
  56. package/packages/src/assets/icons/svg/github.svg +1 -0
  57. package/packages/src/assets/icons/svg/guide.svg +1 -0
  58. package/packages/src/assets/icons/svg/icon.svg +1 -0
  59. package/packages/src/assets/icons/svg/input.svg +1 -0
  60. package/packages/src/assets/icons/svg/international.svg +1 -0
  61. package/packages/src/assets/icons/svg/job.svg +1 -0
  62. package/packages/src/assets/icons/svg/language.svg +1 -0
  63. package/packages/src/assets/icons/svg/link.svg +1 -0
  64. package/packages/src/assets/icons/svg/list.svg +1 -0
  65. package/packages/src/assets/icons/svg/lock.svg +1 -0
  66. package/packages/src/assets/icons/svg/log.svg +1 -0
  67. package/packages/src/assets/icons/svg/logininfor.svg +1 -0
  68. package/packages/src/assets/icons/svg/message.svg +1 -0
  69. package/packages/src/assets/icons/svg/money.svg +1 -0
  70. package/packages/src/assets/icons/svg/monitor.svg +2 -0
  71. package/packages/src/assets/icons/svg/nested.svg +1 -0
  72. package/packages/src/assets/icons/svg/number.svg +1 -0
  73. package/packages/src/assets/icons/svg/online.svg +1 -0
  74. package/packages/src/assets/icons/svg/password.svg +1 -0
  75. package/packages/src/assets/icons/svg/pdf.svg +1 -0
  76. package/packages/src/assets/icons/svg/people.svg +1 -0
  77. package/packages/src/assets/icons/svg/peoples.svg +1 -0
  78. package/packages/src/assets/icons/svg/phone.svg +1 -0
  79. package/packages/src/assets/icons/svg/post.svg +1 -0
  80. package/packages/src/assets/icons/svg/qq.svg +1 -0
  81. package/packages/src/assets/icons/svg/question.svg +1 -0
  82. package/packages/src/assets/icons/svg/radio.svg +1 -0
  83. package/packages/src/assets/icons/svg/rate.svg +1 -0
  84. package/packages/src/assets/icons/svg/redis.svg +1 -0
  85. package/packages/src/assets/icons/svg/row.svg +1 -0
  86. package/packages/src/assets/icons/svg/search.svg +1 -0
  87. package/packages/src/assets/icons/svg/select.svg +1 -0
  88. package/packages/src/assets/icons/svg/server.svg +1 -0
  89. package/packages/src/assets/icons/svg/shopping.svg +1 -0
  90. package/packages/src/assets/icons/svg/size.svg +1 -0
  91. package/packages/src/assets/icons/svg/skill.svg +1 -0
  92. package/packages/src/assets/icons/svg/slider.svg +1 -0
  93. package/packages/src/assets/icons/svg/star.svg +1 -0
  94. package/packages/src/assets/icons/svg/swagger.svg +1 -0
  95. package/packages/src/assets/icons/svg/switch.svg +1 -0
  96. package/packages/src/assets/icons/svg/system.svg +2 -0
  97. package/packages/src/assets/icons/svg/tab.svg +1 -0
  98. package/packages/src/assets/icons/svg/table.svg +1 -0
  99. package/packages/src/assets/icons/svg/textarea.svg +1 -0
  100. package/packages/src/assets/icons/svg/theme.svg +1 -0
  101. package/packages/src/assets/icons/svg/time-range.svg +1 -0
  102. package/packages/src/assets/icons/svg/time.svg +1 -0
  103. package/packages/src/assets/icons/svg/tool.svg +1 -0
  104. package/packages/src/assets/icons/svg/tree-table.svg +1 -0
  105. package/packages/src/assets/icons/svg/tree.svg +1 -0
  106. package/packages/src/assets/icons/svg/upload.svg +1 -0
  107. package/packages/src/assets/icons/svg/user.svg +1 -0
  108. package/packages/src/assets/icons/svg/validCode.svg +1 -0
  109. package/packages/src/assets/icons/svg/warn.svg +1 -0
  110. package/packages/src/assets/icons/svg/wechat.svg +1 -0
  111. package/packages/src/assets/icons/svg/zip.svg +1 -0
  112. package/packages/src/assets/icons/svgo.yml +22 -0
  113. package/packages/src/assets/images/file.png +0 -0
  114. package/packages/src/assets/images/pdf.png +0 -0
  115. package/packages/src/assets/styles/btn.scss +99 -0
  116. package/packages/src/assets/styles/element-ui.scss +92 -0
  117. package/packages/src/assets/styles/element-variables.scss +31 -0
  118. package/packages/src/assets/styles/index.scss +191 -0
  119. package/packages/src/assets/styles/mixin.scss +66 -0
  120. package/packages/src/assets/styles/ruoyi.scss +273 -0
  121. package/packages/src/assets/styles/sidebar.scss +223 -0
  122. package/packages/src/assets/styles/transition.scss +48 -0
  123. package/packages/src/assets/styles/variables.scss +54 -0
  124. package/packages/src/components/DictData/index.js +29 -0
  125. package/packages/src/components/DictTag/index.vue +65 -0
  126. package/packages/src/components/FileUpload/aliyun.vue +350 -0
  127. package/packages/src/components/FileUpload/apk.vue +360 -0
  128. package/packages/src/components/FileUpload/contract-drag.vue +268 -0
  129. package/packages/src/components/FileUpload/contract.vue +239 -0
  130. package/packages/src/components/FileUpload/index.vue +229 -0
  131. package/packages/src/components/FileUpload/s3.vue +244 -0
  132. package/packages/src/components/FileUpload/uploadInvoice.vue +270 -0
  133. package/packages/src/components/ImagePreview/index.vue +92 -0
  134. package/packages/src/components/ImageUpload/aliyun.vue +257 -0
  135. package/packages/src/components/ImageUpload/index.vue +192 -0
  136. package/packages/src/components/ImageUpload/s3.vue +243 -0
  137. package/packages/src/components/ImageUpload/shrinkS3.vue +253 -0
  138. package/packages/src/components/SvgIcon/index.vue +69 -0
  139. package/packages/src/index.js +24 -0
  140. package/packages/src/lang/en.json +225 -0
  141. package/packages/src/lang/zh.json +224 -0
  142. package/packages/src/lib-components/zpw-button.vue +53 -0
  143. package/packages/src/lib-components/zpw-com-test-sample.vue +78 -0
  144. package/packages/src/plugins/auth.js +68 -0
  145. package/packages/src/plugins/cache.js +77 -0
  146. package/packages/src/plugins/download.js +80 -0
  147. package/packages/src/plugins/index.js +28 -0
  148. package/packages/src/plugins/modal.js +83 -0
  149. package/packages/src/plugins/tab.js +75 -0
  150. package/packages/src/router/index.js +339 -0
  151. package/packages/src/store/getters.js +18 -0
  152. package/packages/src/store/index.js +31 -0
  153. package/packages/src/store/modules/app.js +56 -0
  154. package/packages/src/store/modules/i18n.js +28 -0
  155. package/packages/src/store/modules/permission.js +138 -0
  156. package/packages/src/store/modules/settings.js +50 -0
  157. package/packages/src/store/modules/tagsView.js +207 -0
  158. package/packages/src/store/modules/user.js +104 -0
  159. package/packages/src/utils/auth.js +25 -0
  160. package/packages/src/utils/dict/Dict.js +90 -0
  161. package/packages/src/utils/dict/DictConverter.js +17 -0
  162. package/packages/src/utils/dict/DictData.js +13 -0
  163. package/packages/src/utils/dict/DictMeta.js +46 -0
  164. package/packages/src/utils/dict/DictOptions.js +59 -0
  165. package/packages/src/utils/dict/index.js +33 -0
  166. package/packages/src/utils/errorCode.js +6 -0
  167. package/packages/src/utils/generator/config.js +438 -0
  168. package/packages/src/utils/generator/css.js +18 -0
  169. package/packages/src/utils/generator/drawingDefault.js +29 -0
  170. package/packages/src/utils/generator/html.js +359 -0
  171. package/packages/src/utils/generator/icon.json +1 -0
  172. package/packages/src/utils/generator/js.js +236 -0
  173. package/packages/src/utils/generator/render.js +126 -0
  174. package/packages/src/utils/index.js +390 -0
  175. package/packages/src/utils/pdf.js +62 -0
  176. package/packages/src/utils/request.js +227 -0
  177. package/packages/src/utils/ruoyi.js +261 -0
  178. package/packages/src/utils/validate.js +83 -0
  179. package/packages/src/utils/zip.js +62 -0
  180. package/packages/src/views/biz/bizContract/companyList.vue +217 -0
  181. package/packages/src/views/biz/bizContract/contractCompanyList.vue +433 -0
  182. package/packages/src/views/biz/bizContract/depositInvoice.vue +688 -0
  183. package/packages/src/views/biz/bizContract/detail.vue +1168 -0
  184. package/packages/src/views/biz/bizContract/index.vue +940 -0
  185. package/packages/src/views/biz/bizFileInfo/contract copy.vue +359 -0
  186. package/packages/src/views/biz/bizFileInfo/contract-history.vue +150 -0
  187. package/packages/src/views/biz/bizFileInfo/contract.vue +1115 -0
  188. package/packages/src/views/biz/bizFileInfo/detail.vue +82 -0
  189. package/packages/src/views/biz/bizFileInfo/fileShow.vue +316 -0
  190. package/packages/src/views/biz/bizFileInfo/index.vue +405 -0
  191. package/packages/src/views/biz/bizShipment/detail.vue +202 -0
  192. package/packages/src/views/biz/bizShipment/gen.vue +1147 -0
  193. package/packages/src/views/biz/bizShipment/index.vue +696 -0
  194. package/packages/src/views/biz/contractTracing/addBillGood.vue +184 -0
  195. package/packages/src/views/biz/contractTracing/addSubCompany.vue +337 -0
  196. package/packages/src/views/biz/contractTracing/association.vue +189 -0
  197. package/packages/src/views/biz/contractTracing/billGoods.vue +180 -0
  198. package/packages/src/views/biz/contractTracing/billInfo.vue +559 -0
  199. package/packages/src/views/biz/contractTracing/billPdf.vue +275 -0
  200. package/packages/src/views/biz/contractTracing/chargingDialog.vue +84 -0
  201. package/packages/src/views/biz/contractTracing/contract.vue +1256 -0
  202. package/packages/src/views/biz/contractTracing/contractInfo.vue +209 -0
  203. package/packages/src/views/biz/contractTracing/contractPdf.vue +562 -0
  204. package/packages/src/views/biz/contractTracing/contractSummary.vue +1012 -0
  205. package/packages/src/views/biz/contractTracing/contractTracingDetail.vue +88 -0
  206. package/packages/src/views/biz/contractTracing/disputeRecord.vue +311 -0
  207. package/packages/src/views/biz/contractTracing/edit.vue +205 -0
  208. package/packages/src/views/biz/contractTracing/editBill.vue +722 -0
  209. package/packages/src/views/biz/contractTracing/index.vue +1503 -0
  210. package/packages/src/views/biz/contractTracing/purchaseInvoiceUpload.vue +330 -0
  211. package/packages/src/views/biz/contractTracing/sendDrafEmail.vue +120 -0
  212. package/packages/src/views/biz/contractTracing/shipment.vue +601 -0
  213. package/packages/src/views/biz/contractTracing/subCompanyDialog.vue +318 -0
  214. package/packages/src/views/biz/track/index.vue +171 -0
  215. package/packages/src/views/components/icons/element-icons.js +3 -0
  216. package/packages/src/views/components/icons/index.vue +87 -0
  217. package/packages/src/views/components/icons/svg-icons.js +10 -0
  218. package/packages/src/views/test.vue +44 -0
@@ -0,0 +1,1256 @@
1
+ <template>
2
+ <div>
3
+ <el-form
4
+ :model="form"
5
+ ref="form"
6
+ :label-position="'left'"
7
+ size="mini"
8
+ :disabled="form.contractStatus == 'signed'"
9
+ >
10
+ <div>
11
+ <el-descriptions
12
+ class="margin-top"
13
+ :title="form.contractType == 'sale' ? '买家争议' : '卖家争议'"
14
+ :column="1"
15
+ >
16
+ <template slot="extra">
17
+ <el-button type="text" size="small" @click="handleDisputeRecord"
18
+ >争议记录</el-button
19
+ >
20
+ </template>
21
+ </el-descriptions>
22
+ <div
23
+ v-if="form.normalDispute"
24
+ style="word-wrap: break-word; width: 99%; font-size: small"
25
+ >
26
+ {{
27
+ "【" +
28
+ (form.normalDispute.createTime
29
+ ? form.normalDispute.createTime
30
+ : "") +
31
+ "】" +
32
+ (form.normalDispute.dispute ? form.normalDispute.dispute : "")
33
+ }}
34
+ </div>
35
+ </div>
36
+
37
+ <el-row>
38
+ <div style="min-height: 40px; background: #e5e9f2; text-align: center">
39
+ <span
40
+ style="
41
+ font-size: 16px;
42
+ font-weight: 700;
43
+ height: 35px;
44
+ line-height: 35px;
45
+ "
46
+ >
47
+ {{
48
+ form.contractType == "sale"
49
+ ? "Sales Contract"
50
+ : "Purchase Contract"
51
+ }}
52
+ </span>
53
+ </div>
54
+ </el-row>
55
+
56
+ <el-row>
57
+ <el-col :span="12">
58
+ <el-form-item
59
+ label="Contract Order #:"
60
+ prop="contractNo"
61
+ label-width="130px"
62
+ >
63
+ <el-input v-model="form.contractNo" clearable size="mini" />
64
+ </el-form-item>
65
+ </el-col>
66
+ <el-col :span="12">
67
+ <el-form-item
68
+ label="Contract Date:"
69
+ prop="createTime"
70
+ label-width="120px"
71
+ >
72
+ <el-date-picker
73
+ style="width: 80%"
74
+ clearable
75
+ size="mini"
76
+ v-model="form.createTime"
77
+ type="date"
78
+ value-format="yyyy-MM-dd HH:mm:ss"
79
+ >
80
+ </el-date-picker>
81
+ </el-form-item>
82
+ </el-col>
83
+ </el-row>
84
+
85
+ <el-row>
86
+ <div class="grid-content bg-purple-light">
87
+ <span class="text item">
88
+ {{ "Company information" }}
89
+ </span>
90
+ </div>
91
+ </el-row>
92
+
93
+ <el-row>
94
+ <el-col :span="17">
95
+ <div class="text item">
96
+ {{ "Seller" }}
97
+ </div>
98
+ </el-col>
99
+ <el-col :span="6">
100
+ <el-button
101
+ type="text"
102
+ @click="handleUserCompany(form.supplierCompanyId, 'seller')"
103
+ buyerAccountId
104
+ >Select Seller's Company</el-button
105
+ >
106
+ </el-col>
107
+ </el-row>
108
+ <el-form-item label="Company Name" label-width="120px">
109
+ <el-input
110
+ v-model="form.supplierContractCompany.companyEnglishName"
111
+ clearable
112
+ size="mini"
113
+ disabled
114
+ />
115
+ </el-form-item>
116
+ <el-form-item label="Company Adress" label-width="128px">
117
+ <el-input
118
+ v-model="form.supplierContractCompany.address"
119
+ clearable
120
+ size="mini"
121
+ disabled
122
+ />
123
+ </el-form-item>
124
+ <el-form-item label="Contact">
125
+ {{ form.supplierContractCompany.contact }}
126
+ </el-form-item>
127
+ <el-form-item label="Email Address">
128
+ {{ form.supplierContractCompany.email }}
129
+ </el-form-item>
130
+
131
+ <el-row>
132
+ <el-col :span="17">
133
+ <div class="text item">
134
+ {{ "Buyer" }}
135
+ </div>
136
+ </el-col>
137
+ <el-col :span="6">
138
+ <el-button
139
+ type="text"
140
+ @click="handleUserCompany(form.buyCompanyId, 'buyer')"
141
+ >Select Buyer's Company</el-button
142
+ >
143
+ </el-col>
144
+ </el-row>
145
+ <el-form-item label="Company Name" label-width="120px">
146
+ <el-input
147
+ v-model="form.buyContractCompany.companyEnglishName"
148
+ clearable
149
+ size="mini"
150
+ disabled
151
+ />
152
+ </el-form-item>
153
+ <el-form-item label="Company Adress" label-width="128px">
154
+ <el-input
155
+ v-model="form.buyContractCompany.address"
156
+ clearable
157
+ size="mini"
158
+ disabled
159
+ />
160
+ </el-form-item>
161
+ <el-form-item label="Contact">
162
+ {{ form.buyContractCompany.contact }}
163
+ </el-form-item>
164
+ <el-form-item label="Email Address">
165
+ {{ form.buyContractCompany.email }}
166
+ </el-form-item>
167
+
168
+ <el-row>
169
+ <div class="grid-content bg-purple-light">
170
+ <span class="text item">
171
+ {{ "Commodity information" }}
172
+ </span>
173
+ </div>
174
+ </el-row>
175
+
176
+ <el-table :data="form.contractDetailList" size="mini">
177
+ <el-table-column label="Description" align="center" width="180px">
178
+ <template slot-scope="scope">
179
+ <el-input
180
+ v-model="scope.row.askName"
181
+ type="textarea"
182
+ autosize
183
+ clearable
184
+ size="mini"
185
+ />
186
+ </template>
187
+ </el-table-column>
188
+ <el-table-column label="Quantity" align="center" width="180px">
189
+ <template slot-scope="scope">
190
+ <el-input v-model="scope.row.weight" clearable size="mini">
191
+ <template slot="append">MT</template>
192
+ </el-input>
193
+ </template>
194
+ </el-table-column>
195
+ <el-table-column
196
+ v-if="form.quoteType == 'FIXED'"
197
+ label="Unit Price/MT"
198
+ align="center"
199
+ width="180px"
200
+ >
201
+ <template slot-scope="scope">
202
+ <el-input
203
+ v-if="form.contractType == 'sale'"
204
+ v-model="scope.row.quotePrice"
205
+ clearable
206
+ size="mini"
207
+ >
208
+ <template slot="prepend">$</template>
209
+ </el-input>
210
+ <el-input
211
+ v-else
212
+ v-model="scope.row.sllerPrice"
213
+ clearable
214
+ size="mini"
215
+ >
216
+ <template slot="prepend">$</template>
217
+ </el-input>
218
+ </template>
219
+ </el-table-column>
220
+
221
+ <!-- CMX 都显示 -->
222
+ <el-table-column
223
+ v-if="form.quoteType == 'CMX'"
224
+ label="Unit Price/MT"
225
+ align="center"
226
+ width="250"
227
+ >
228
+ <template slot-scope="scope">
229
+ <el-input
230
+ v-if="form.contractType == 'sale'"
231
+ v-model="scope.row.quotePrice"
232
+ size="mini"
233
+ >
234
+ <template slot="prepend">$(CMX-</template>
235
+ <template slot="append">*2204.62</template>
236
+ </el-input>
237
+ <el-input v-else v-model="scope.row.sllerPrice" size="small">
238
+ <template slot="prepend">$(CMX-</template>
239
+ <template slot="append">*2204.62</template>
240
+ </el-input>
241
+ </template>
242
+ </el-table-column>
243
+ <!-- LME -->
244
+ <el-table-column
245
+ v-if="form.quoteType == 'LME'"
246
+ label="Unit Price/MT"
247
+ align="center"
248
+ width="300"
249
+ >
250
+ <template slot-scope="scope">
251
+ <el-input
252
+ v-if="form.contractType == 'sale'"
253
+ v-model="scope.row.quotePrice"
254
+ clearable
255
+ size="mini"
256
+ >
257
+ <template slot="prepend">$(LME 3M *</template>
258
+ <template slot="append">%</template>
259
+ </el-input>
260
+ <el-input
261
+ v-else
262
+ v-model="scope.row.sllerPrice"
263
+ clearable
264
+ size="mini"
265
+ >
266
+ <template slot="prepend">$(LME 3M *</template>
267
+ <template slot="append">%</template>
268
+ </el-input>
269
+ </template>
270
+ </el-table-column>
271
+
272
+ <!-- CMX 都显示 CMX Month-->
273
+ <el-table-column
274
+ v-if="form.quoteType == 'CMX'"
275
+ label="CMX Month"
276
+ align="center"
277
+ width="180px"
278
+ >
279
+ <template slot-scope="scope">
280
+ <el-select
281
+ v-model="scope.row.cmxMonth"
282
+ placeholder="Please select cmxMonth"
283
+ clearable
284
+ size="mini"
285
+ >
286
+ <el-option
287
+ v-for="dict in dict.type.cmx_month"
288
+ :key="dict.value"
289
+ :label="dict.label"
290
+ :value="dict.value"
291
+ />
292
+ </el-select>
293
+ </template>
294
+ </el-table-column>
295
+ <el-table-column label="Service fee/MT" align="center" width="180px">
296
+ <template slot-scope="scope">
297
+ <el-input v-model="scope.row.serviceFee" clearable size="small">
298
+ <template slot="prepend">$</template>
299
+ </el-input>
300
+ </template>
301
+ </el-table-column>
302
+
303
+ <!-- 采购合同 FIXED -->
304
+ <el-table-column label="Net Unit Price/MT" align="center" width="180px">
305
+ <template slot-scope="scope">
306
+ <span
307
+ v-if="
308
+ form.quoteType == 'FIXED' && form.contractType == 'purchase'
309
+ "
310
+ >
311
+ {{ "$" + (scope.row.sllerPrice - Number(scope.row.serviceFee)) }}
312
+ </span>
313
+ <span
314
+ v-else-if="
315
+ form.quoteType == 'FIXED' && form.contractType == 'sale'
316
+ "
317
+ >
318
+ {{
319
+ "$" +
320
+ (Number(scope.row.quotePrice) + Number(scope.row.serviceFee))
321
+ }}
322
+ </span>
323
+ <span
324
+ v-else-if="
325
+ form.quoteType == 'LME' && form.contractType == 'purchase'
326
+ "
327
+ >
328
+ {{
329
+ "$(LME 3M * " +
330
+ scope.row.sllerPrice +
331
+ "%) - $" +
332
+ Number(scope.row.serviceFee)
333
+ }}
334
+ </span>
335
+ <span
336
+ v-else-if="form.quoteType == 'LME' && form.contractType == 'sale'"
337
+ >
338
+ {{
339
+ "$(LME 3M * " +
340
+ scope.row.quotePrice +
341
+ "%) + $" +
342
+ Number(scope.row.serviceFee)
343
+ }}
344
+ </span>
345
+ <span
346
+ v-else-if="
347
+ form.quoteType == 'CMX' && form.contractType == 'purchase'
348
+ "
349
+ >
350
+ {{
351
+ "${(CMX-" +
352
+ scope.row.sllerPrice +
353
+ ")*2204.62} - $" +
354
+ Number(scope.row.serviceFee)
355
+ }}
356
+ </span>
357
+ <span v-else>
358
+ {{
359
+ "${(CMX-" +
360
+ scope.row.quotePrice +
361
+ ")*2204.62} + $" +
362
+ Number(scope.row.serviceFee)
363
+ }}
364
+ </span>
365
+ </template>
366
+ </el-table-column>
367
+
368
+ <!-- <el-table-column width="100" align="center">
369
+ <el-popconfirm
370
+ title="确定删除吗?"
371
+ @onConfirm="deleteTableRow(scope.row)"
372
+ >
373
+ <el-button
374
+ type="danger"
375
+ slot="reference"
376
+ style="min-width: 60px"
377
+ size="mini"
378
+ >删除</el-button
379
+ >
380
+ </el-popconfirm>
381
+ </el-table-column> -->
382
+ </el-table>
383
+
384
+ <el-button
385
+ type="success"
386
+ icon="el-icon-plus"
387
+ @click="addDetails"
388
+ size="mini"
389
+ >Add</el-button
390
+ >
391
+ <el-row></el-row>
392
+ <el-row>
393
+ <div class="grid-content bg-purple-light">
394
+ <span class="text item">
395
+ {{ "Trade information" }}
396
+ </span>
397
+ </div>
398
+ </el-row>
399
+
400
+ <el-form-item label="Service Fee" label-width="100px">
401
+ <el-radio-group v-model="form.serviceFeeSwitch">
402
+ <el-radio :label="false">Close</el-radio>
403
+ <el-radio :label="true">open</el-radio>
404
+ </el-radio-group>
405
+ </el-form-item>
406
+ <el-form-item label-width="100px">
407
+ <el-input
408
+ v-model="form.serviceFee"
409
+ placeholder="Please enter serviceFee"
410
+ clearable
411
+ size="small"
412
+ />
413
+ </el-form-item>
414
+ <el-form-item label="Freight Terms">
415
+ <el-select
416
+ v-model="form.freightTerms"
417
+ placeholder="请选择交易条款"
418
+ size="small"
419
+ clearable
420
+ >
421
+ <el-option
422
+ v-for="dict in dict.type.freight_terms"
423
+ :key="dict.value"
424
+ :label="dict.label"
425
+ :value="dict.value"
426
+ />
427
+ </el-select>
428
+ </el-form-item>
429
+ <el-form-item label="Payment Terms" label-width="120px">
430
+ <el-input
431
+ v-model="form.deposit"
432
+ size="mini"
433
+ clearable
434
+ style="width: 200px"
435
+ >
436
+ <template slot="prepend">Deposit</template>
437
+ <template slot="append">%</template>
438
+ </el-input>
439
+ <el-input
440
+ v-model="form.depositDays"
441
+ size="mini"
442
+ clearable
443
+ style="width: 240px"
444
+ >
445
+ <template slot="append">Days after the contract</template>
446
+ </el-input>
447
+ </el-form-item>
448
+ <el-form-item>
449
+ <el-input
450
+ v-model="form.balance"
451
+ placeholder="Please enter balance"
452
+ size="mini"
453
+ clearable
454
+ style="width: 40%"
455
+ >
456
+ <template slot="append">% balance</template>
457
+ </el-input>
458
+ <el-input
459
+ style="width: 30%"
460
+ v-model="form.balancePaymentType"
461
+ size="mini"
462
+ clearable
463
+ >
464
+ <template slot="append">paid</template>
465
+ </el-input>
466
+ <el-input
467
+ style="width: 30%"
468
+ v-model="form.balanceDays"
469
+ size="mini"
470
+ clearable
471
+ >
472
+ <template slot="append">Days</template>
473
+ </el-input>
474
+
475
+ <el-radio-group v-model="form.balancePaymentForm">
476
+ <el-radio :label="'Before arrive'">Before arrive</el-radio>
477
+ <el-radio :label="'After arrival'">After arrival</el-radio>
478
+ </el-radio-group>
479
+ </el-form-item>
480
+
481
+ <el-form-item label="Loading Country/Region">
482
+ <el-select
483
+ v-model="form.loadingCountry"
484
+ filterable
485
+ placeholder="Please select loadingCountry"
486
+ >
487
+ <el-option
488
+ v-for="item in countryDictList"
489
+ :key="item.dictDataId"
490
+ :label="item.dictValue"
491
+ :value="item.dictValue"
492
+ >
493
+ </el-option>
494
+ </el-select>
495
+ </el-form-item>
496
+
497
+ <el-form-item label="Origin Country/Region">
498
+ <el-select
499
+ v-model="form.originCountry"
500
+ filterable
501
+ placeholder="Please select originCountry"
502
+ >
503
+ <el-option
504
+ v-for="item in countryDictList"
505
+ :key="item.dictDataId"
506
+ :label="item.dictValue"
507
+ :value="item.dictValue"
508
+ >
509
+ </el-option>
510
+ </el-select>
511
+ </el-form-item>
512
+
513
+ <el-form-item label="Destination">
514
+ <el-select
515
+ v-model="form.destination"
516
+ filterable
517
+ placeholder="Please select destination"
518
+ >
519
+ <el-option
520
+ v-for="item in portDictList"
521
+ :key="item.dictDataId"
522
+ :label="item.dictValue"
523
+ :value="item.dictValue"
524
+ >
525
+ </el-option>
526
+ </el-select>
527
+ </el-form-item>
528
+
529
+ <el-form-item label="Number of Containers"> </el-form-item>
530
+ <el-row>
531
+ <el-col :span="8">
532
+ <el-form-item label="20'">
533
+ <el-input-number
534
+ v-model="form.numberOfContainersForTwenty"
535
+ :min="0"
536
+ >
537
+ </el-input-number>
538
+ </el-form-item>
539
+ </el-col>
540
+ <el-col :span="8">
541
+ <el-form-item label="40'">
542
+ <el-input-number v-model="form.numberOfContainersForForty" :min="0">
543
+ </el-input-number>
544
+ </el-form-item>
545
+ </el-col>
546
+
547
+ <el-col :span="8">
548
+ <el-form-item label="20'/40'" label-width="60px">
549
+ <el-input-number
550
+ v-model="form.numberOfContainersForTwentyOrForty"
551
+ :min="0"
552
+ >
553
+ </el-input-number>
554
+ </el-form-item>
555
+ </el-col>
556
+ </el-row>
557
+
558
+ <el-row>
559
+ <el-col :span="12">
560
+ <el-form-item label="More or less<" label-width="110px">
561
+ <el-input v-model="form.toleranceFloat">
562
+ <template slot="append">x100%</template>
563
+ </el-input>
564
+ </el-form-item></el-col
565
+ >
566
+ <el-col :span="12">
567
+ <el-form-item label="Weight Tolerance" label-width="130px">
568
+ <el-input v-model="form.weightTolerance">
569
+ <template slot="append">%</template>
570
+ </el-input>
571
+ </el-form-item>
572
+ </el-col>
573
+ </el-row>
574
+
575
+ <el-form-item label="Latest shipment" label-width="120px">
576
+ <el-input v-model="form.latestShipment">
577
+ <template slot="prepend">within</template>
578
+ <template slot="append">Days of the contract signed date</template>
579
+ </el-input>
580
+ </el-form-item>
581
+
582
+ <el-form-item label="Price Fixing Option">
583
+ <el-radio-group v-model="form.livePriceSwitch">
584
+ <el-radio :label="false">Close</el-radio>
585
+ <el-radio :label="true">open</el-radio>
586
+ </el-radio-group>
587
+ </el-form-item>
588
+
589
+ <el-row :gutter="5">
590
+ <el-col :span="6">
591
+ <el-form-item>
592
+ <el-input v-model="form.livePriceDays">
593
+ <template slot="append">Days</template>
594
+ </el-input>
595
+ </el-form-item>
596
+ </el-col>
597
+ <el-col :span="6">
598
+ <el-radio-group v-model="form.livePriceForm">
599
+ <el-radio :label="'before'">Before arrive</el-radio>
600
+ <el-radio :label="'after'">After arrival</el-radio>
601
+ </el-radio-group>
602
+ </el-col>
603
+ <el-col :span="10">
604
+ <el-form-item label="By" label-width="30px">
605
+ <el-radio-group v-model="form.livePriceUsertype">
606
+ <el-radio :label="'Buyer'">Buyer</el-radio>
607
+ <el-radio :label="'Seller'">Seller</el-radio>
608
+ </el-radio-group>
609
+ </el-form-item>
610
+ </el-col>
611
+ </el-row>
612
+
613
+ <el-form-item label="Required documents">
614
+ <el-tag
615
+ :key="tag"
616
+ v-for="tag in dynamicTags"
617
+ closable
618
+ :disable-transitions="false"
619
+ @close="handleClose(tag)"
620
+ size="mini"
621
+ >
622
+ {{ tag }}
623
+ </el-tag>
624
+ <el-input
625
+ class="input-new-tag"
626
+ v-if="inputVisible"
627
+ v-model="inputValue"
628
+ ref="saveTagInput"
629
+ @keyup.enter.native="handleInputConfirm"
630
+ @blur="handleInputConfirm"
631
+ >
632
+ </el-input>
633
+ <el-button v-else class="button-new-tag" @click="showInput">
634
+ + New Tag
635
+ </el-button>
636
+ </el-form-item>
637
+ <el-form-item label="Quality certificate">
638
+ <el-radio-group v-model="form.qualityCertificateSwitch">
639
+ <el-radio :label="false">Close</el-radio>
640
+ <el-radio :label="true">open</el-radio>
641
+ </el-radio-group>
642
+ </el-form-item>
643
+ <el-form-item>
644
+ <el-input
645
+ autosize
646
+ type="textarea"
647
+ placeholder="请输入内容"
648
+ v-model="form.qualityCertificate"
649
+ >
650
+ </el-input>
651
+ </el-form-item>
652
+
653
+ <el-form-item label="Claim ">
654
+ <el-radio-group v-model="form.claimSwitch">
655
+ <el-radio :label="false">Close</el-radio>
656
+ <el-radio :label="true">open</el-radio>
657
+ </el-radio-group>
658
+ </el-form-item>
659
+ <el-form-item>
660
+ <el-input
661
+ type="textarea"
662
+ autosize
663
+ placeholder="请输入内容"
664
+ v-model="form.claim"
665
+ >
666
+ </el-input>
667
+ </el-form-item>
668
+
669
+ <el-form-item label="Arbitration ">
670
+ <el-radio-group v-model="form.arbitrationSwitch">
671
+ <el-radio :label="false">Close</el-radio>
672
+ <el-radio :label="true">open</el-radio>
673
+ </el-radio-group>
674
+ </el-form-item>
675
+ <el-row>
676
+ <el-col :span="15">
677
+ <el-form-item>
678
+ <el-input
679
+ type="textarea"
680
+ :autosize="{ minRows: 3, maxRows: 5 }"
681
+ placeholder="请输入内容"
682
+ v-model="form.arbitration"
683
+ >
684
+ </el-input>
685
+ </el-form-item>
686
+ </el-col>
687
+ </el-row>
688
+ <el-form-item label="Memo ">
689
+ <el-radio-group v-model="form.memoSwitch">
690
+ <el-radio :label="false">Close</el-radio>
691
+ <el-radio :label="true">open</el-radio>
692
+ </el-radio-group>
693
+ </el-form-item>
694
+ <el-form-item>
695
+ <el-input
696
+ type="textarea"
697
+ autosize
698
+ placeholder="请输入内容"
699
+ v-model="form.memo"
700
+ >
701
+ </el-input>
702
+ </el-form-item>
703
+ <el-button type="text" @click="addCustomClause">新增条款</el-button>
704
+ <el-button type="text" @click="deleteCustomClause">删除条款</el-button>
705
+ <el-form-item v-for="(item, index) in customClause" :key="index">
706
+ <el-input
707
+ style="width: 25%"
708
+ v-model="item.title"
709
+ placeholder="请输入标题"
710
+ ></el-input>
711
+ <el-input
712
+ style="width: 75%"
713
+ v-model="item.content"
714
+ placeholder="请输入内容"
715
+ ></el-input>
716
+ </el-form-item>
717
+ </el-form>
718
+ <div style="text-align: center">
719
+ <el-button type="primary" @click="submitForm">保 存</el-button>
720
+ <el-button type="success" @click="updateAndDownload">下 载</el-button>
721
+ <el-button
722
+ type="primary"
723
+ :disabled="isButtonDisabled"
724
+ @click="sendDrafContractEmail"
725
+ >完成并发送草稿合同</el-button
726
+ >
727
+ <el-button @click="returnTracing">返回</el-button>
728
+ </div>
729
+
730
+ <company-list ref="companyList" @confirmCompany="confirmCompany" />
731
+
732
+ <contract-company-list
733
+ ref="contractCompanyList"
734
+ @confirmCompany="confirmCompany"
735
+ ></contract-company-list>
736
+
737
+ <send-draf-email ref="sendDrafEmail"></send-draf-email>
738
+
739
+ <dispute-record ref="disputeRecord"></dispute-record>
740
+ </div>
741
+ </template>
742
+
743
+ <script>
744
+ import {
745
+ getBizContract,
746
+ updateBizContract,
747
+ getBizContractByNo,
748
+ } from "../../../api/biz/bizContract";
749
+ import CompanyList from "../bizContract/companyList.vue";
750
+ import { updateCompanyInfo } from "../../../api/biz/companyInfo";
751
+ import { portDictList, listDictData } from "../../../api/biz/dictData";
752
+ import ContractCompanyList from "../bizContract/contractCompanyList";
753
+ import { listBizContractDispute } from "../../../api/biz/bizContractDispute";
754
+ import { sendDrafEmail } from "../../../api/biz/bizContract";
755
+
756
+ import SendDrafEmail from "./sendDrafEmail.vue";
757
+ import DisputeRecord from "./disputeRecord.vue";
758
+
759
+ export default {
760
+ name: "ContractByNo",
761
+ dicts: ["freight_terms", "cmx_month"],
762
+ components: {
763
+ CompanyList,
764
+ ContractCompanyList,
765
+ SendDrafEmail,
766
+ DisputeRecord,
767
+ },
768
+ props: {
769
+ contractNo: {
770
+ type: String,
771
+ default: "",
772
+ },
773
+ //港口数据列表
774
+ portDictList: {
775
+ type: Array,
776
+ default: [],
777
+ },
778
+ //国家数据李北奥
779
+ countryDictList: {
780
+ type: Array,
781
+ default: [],
782
+ },
783
+ },
784
+ watch: {
785
+ contractNo: {
786
+ handler(val) {
787
+ if (val) {
788
+ this.getBizContractByNo(val);
789
+ }
790
+ },
791
+ },
792
+ },
793
+ data() {
794
+ return {
795
+ // 遮罩层
796
+ loading: true,
797
+ // 弹出层标题
798
+ title: "",
799
+ // 是否显示弹出层
800
+ open: false,
801
+ // 表单参数
802
+ form: {
803
+ sellerCompanyInfo: {
804
+ companyEnglishName: null,
805
+ address: null,
806
+ },
807
+ buyerCompanyInfo: {
808
+ companyEnglishName: null,
809
+ address: null,
810
+ },
811
+ buyContractCompanyId: null,
812
+ buyContractCompany: { companyEnglishName: null, address: null },
813
+ supplierContractCompanyId: null,
814
+ supplierContractCompany: {
815
+ companyEnglishName: null,
816
+ address: null,
817
+ },
818
+ contractDetailList: [],
819
+ },
820
+ dynamicTags: [],
821
+ inputVisible: false,
822
+ inputValue: "",
823
+ //是否保存卖家地址
824
+ saveSellerCompanyAddress: false,
825
+ //是否保存买家地址
826
+ saveBuyerCompanyAddress: false,
827
+ //买家地址
828
+ buyerCompanyAddress: null,
829
+ //卖家地址
830
+ sellerCompanyAddress: null,
831
+ //
832
+ isButtonDisabled: false,
833
+ //自定义条款
834
+ customClause: [],
835
+ };
836
+ },
837
+ created() {
838
+ if (this.contractNo) {
839
+ this.getBizContractByNo(this.contractNo);
840
+ }
841
+ },
842
+ methods: {
843
+ addCustomClause() {
844
+ this.customClause.push({
845
+ title: "",
846
+ content: "",
847
+ });
848
+ },
849
+ deleteCustomClause() {
850
+ this.customClause.pop();
851
+ },
852
+ //合同争议记录
853
+ handleDisputeRecord() {
854
+ this.$refs.disputeRecord.handleShow(this.form.contractId);
855
+ },
856
+ //返回合同追踪
857
+ returnTracing() {
858
+ this.$router.push({
859
+ name: "ContractTracing",
860
+ params: { askId: this.form.askId },
861
+ });
862
+ },
863
+ //完成并发送草稿合同邮箱
864
+ sendDrafContractEmail() {
865
+ //合同未找到邮箱
866
+ if (this.form.contractType == "sale") {
867
+ this.findEmailTip(this.form.buyContractCompany);
868
+ } else {
869
+ this.findEmailTip(this.form.supplierContractCompany);
870
+ }
871
+
872
+ if (this.form.contractId) {
873
+ listBizContractDispute({
874
+ contractId: this.form.contractId,
875
+ disputeType: "normal",
876
+ disputeState: false,
877
+ }).then((res) => {
878
+ const list = res.rows;
879
+ if (list.length > 0) {
880
+ this.$refs.sendDrafEmail.handleSend(list, this.form);
881
+ } else {
882
+ if (this.form.contractType == "sale") {
883
+ const contractCompany = this.form.buyContractCompany;
884
+ if (contractCompany && contractCompany.email) {
885
+ sendDrafEmail(this.form).then((response) => {
886
+ this.$modal.msgSuccess("发送成功");
887
+ this.getBizContractByNo(this.form.contractNo);
888
+ });
889
+ }
890
+ } else {
891
+ const contractCompany = this.form.supplierContractCompany;
892
+ if (contractCompany && contractCompany.email) {
893
+ sendDrafEmail(this.form).then((response) => {
894
+ this.$modal.msgSuccess("发送成功");
895
+ this.getBizContractByNo(this.form.contractNo);
896
+ });
897
+ }
898
+ }
899
+ }
900
+ });
901
+ }
902
+ // 设置按钮为禁用状态
903
+ this.isButtonDisabled = true;
904
+ // 1秒后恢复按钮可用状态
905
+ setTimeout(() => {
906
+ this.isButtonDisabled = false;
907
+ }, 1000);
908
+ },
909
+ findEmailTip(contractCompany) {
910
+ if (!(contractCompany && contractCompany.email)) {
911
+ this.$confirm("发送失败,请先补充合同公司的邮箱后再点击发送", "提示", {
912
+ confirmButtonText: "补充邮箱",
913
+ cancelButtonText: "取消发送",
914
+ type: "warning",
915
+ })
916
+ .then(() => {
917
+ this.$router.push({
918
+ path: "/infomenu/companyInfo/edit/" + contractCompany.companyId,
919
+ });
920
+ })
921
+ .catch(() => {
922
+ this.$message({
923
+ type: "info",
924
+ message: "取消发送",
925
+ });
926
+ });
927
+ }
928
+ },
929
+ //选择公司
930
+ handleUserCompany(companyId, type) {
931
+ this.$refs.contractCompanyList.handleShow(companyId, type);
932
+ },
933
+ //
934
+ addDetails() {
935
+ const detail = {
936
+ contractId: this.form.contractId,
937
+ askId: this.form.askId,
938
+ askName: "",
939
+ weight: "",
940
+ cmxMonth: "",
941
+ serviceFee: "",
942
+ quotePrice: "",
943
+ sllerPrice: "",
944
+ };
945
+ this.form.contractDetailList.push(detail);
946
+ },
947
+ //获取国家数据列表
948
+ getCountryDictList() {
949
+ const dictData = {
950
+ dictType: "Country",
951
+ pageNum: 1,
952
+ pageSize: 999,
953
+ orderByColumn: "dictValue",
954
+ isAsc: "asc",
955
+ };
956
+ listDictData(dictData).then((response) => {
957
+ this.countryDictList = response.rows;
958
+ });
959
+ },
960
+ //获取港口数据列表
961
+ getPortDictList() {
962
+ portDictList().then((response) => {
963
+ this.portDictList = response.rows;
964
+ });
965
+ },
966
+ //买家公司保存地址
967
+ handleBuyerCompanychange(buyerCompanyInfo, val) {
968
+ if (
969
+ val &&
970
+ this.form.buyerCompanyInfo.address !== this.buyerCompanyAddress
971
+ ) {
972
+ this.$modal
973
+ .confirm("该名下已有地址,是否更新覆盖")
974
+ .then(function () {
975
+ return updateCompanyInfo(buyerCompanyInfo);
976
+ })
977
+ .then(() => {
978
+ this.$modal.msgSuccess("覆盖成功");
979
+ })
980
+ .catch(() => {});
981
+ }
982
+ },
983
+ //卖家公司保存地址
984
+ handleSellerCompanychange(sellerCompanyInfo, val) {
985
+ if (
986
+ val &&
987
+ this.form.sellerCompanyInfo.address !== this.sellerCompanyAddress
988
+ ) {
989
+ this.$modal
990
+ .confirm("该名下已有地址,是否更新覆盖")
991
+ .then(function () {
992
+ return updateCompanyInfo(sellerCompanyInfo);
993
+ })
994
+ .then(() => {
995
+ this.$modal.msgSuccess("覆盖成功");
996
+ })
997
+ .catch(() => {});
998
+ }
999
+ },
1000
+ //确认公司
1001
+ confirmCompany(companyList, type) {
1002
+ var company = companyList[0];
1003
+ company.email =
1004
+ company.email && company.email.length > 0 ? company.email[0] : "";
1005
+ company.phoneNumber =
1006
+ company.phoneNumber && company.phoneNumber.length > 0
1007
+ ? company.phoneNumber[0]
1008
+ : "";
1009
+ if (type == "seller") {
1010
+ this.$set(this.form, "supplierContractCompany", company);
1011
+ this.form.supplierContractCompanyId = company.contractCompanyId;
1012
+ this.form.supplierCompanyId = company.companyId;
1013
+ } else if (type == "buyer") {
1014
+ this.$set(this.form, "buyContractCompany", company);
1015
+ this.form.buyContractCompanyId = company.contractCompanyId;
1016
+ this.form.buyCompanyId = company.companyId;
1017
+ }
1018
+ },
1019
+ //选择卖家公司弹框
1020
+ handleAllCompany(type) {
1021
+ this.$refs.companyList.handleShow(type);
1022
+ },
1023
+ handleClose(tag) {
1024
+ this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
1025
+ },
1026
+
1027
+ showInput() {
1028
+ this.inputVisible = true;
1029
+ this.$nextTick((_) => {
1030
+ this.$refs.saveTagInput.$refs.input.focus();
1031
+ });
1032
+ },
1033
+
1034
+ handleInputConfirm() {
1035
+ let inputValue = this.inputValue;
1036
+ if (inputValue) {
1037
+ this.dynamicTags.push(inputValue);
1038
+ }
1039
+ this.inputVisible = false;
1040
+ this.inputValue = "";
1041
+ },
1042
+ // 表单重置
1043
+ reset() {
1044
+ this.form = {
1045
+ contractId: null,
1046
+ contractNo: null,
1047
+ askId: null,
1048
+ buyId: null,
1049
+ supplierId: null,
1050
+ buyCompanyId: null,
1051
+ supplierCompanyId: null,
1052
+ serviceFee: null,
1053
+ serviceFeeSwitch: null,
1054
+ freightTerms: null,
1055
+ deposit: null,
1056
+ depositDays: null,
1057
+ balance: null,
1058
+ balanceDays: null,
1059
+ balancePaymentForm: null,
1060
+ balancePaymentForm: null,
1061
+ loadingCountry: null,
1062
+ originCountry: null,
1063
+ destination: null,
1064
+ numberOfContainersForTwenty: null,
1065
+ numberOfContainersForForty: null,
1066
+ numberOfContainersForTwentyOrForty: null,
1067
+ toleranceFloat: null,
1068
+ weightTolerance: null,
1069
+ latestShipment: null,
1070
+ livePriceSwitch: null,
1071
+ livePriceDays: null,
1072
+ livePriceForm: null,
1073
+ livePriceUsertype: null,
1074
+ qualityCertificate: null,
1075
+ qualityCertificateSwitch: null,
1076
+ claim: null,
1077
+ claimSwitch: null,
1078
+ arbitration: null,
1079
+ arbitrationSwitch: null,
1080
+ memo: null,
1081
+ memoSwitch: null,
1082
+ contractStatus: "0",
1083
+ createTime: null,
1084
+ updateTime: null,
1085
+ completionTime: null,
1086
+ requiredDocuments: null,
1087
+ supplierAccountId: null,
1088
+ supplierCompanyId: null,
1089
+ sellerCompanyInfo: {
1090
+ companyEnglishName: null,
1091
+ address: null,
1092
+ },
1093
+ buyerAccountId: null,
1094
+ buyCompanyId: null,
1095
+ buyerCompanyInfo: {
1096
+ companyEnglishName: null,
1097
+ address: null,
1098
+ },
1099
+ buyContractCompanyId: null,
1100
+ buyContractCompany: { companyEnglishName: null, address: null },
1101
+ supplierContractCompanyId: null,
1102
+ supplierContractCompany: {
1103
+ companyEnglishName: null,
1104
+ address: null,
1105
+ },
1106
+ contractDetailList: [],
1107
+ };
1108
+ this.resetForm("form");
1109
+ },
1110
+ getBizContractByNo(contractNo) {
1111
+ this.reset();
1112
+ getBizContractByNo(contractNo).then((response) => {
1113
+ this.form = response.data;
1114
+ this.dynamicTags =
1115
+ this.form.requiredDocuments && this.form.requiredDocuments != "null"
1116
+ ? JSON.parse(this.form.requiredDocuments)
1117
+ : [];
1118
+ this.customClause = this.form.customClause
1119
+ ? JSON.parse(this.form.customClause)
1120
+ : [];
1121
+ if (!this.form.contractDetailList) {
1122
+ this.form.contractDetailList = [];
1123
+ }
1124
+ if (!this.form.supplierContractCompany) {
1125
+ this.form.supplierContractCompany = {
1126
+ companyEnglishName: "",
1127
+ address: "",
1128
+ };
1129
+ }
1130
+ if (!this.form.buyContractCompany) {
1131
+ this.form.buyContractCompany = {
1132
+ companyEnglishName: "",
1133
+ address: "",
1134
+ };
1135
+ }
1136
+ });
1137
+ },
1138
+ /** 提交按钮 */
1139
+ submitForm() {
1140
+ this.$refs["form"].validate((valid) => {
1141
+ if (valid) {
1142
+ if (this.form.contractId != null) {
1143
+ this.form.requiredDocuments = JSON.stringify(this.dynamicTags);
1144
+ this.form.customClause = JSON.stringify(this.customClause);
1145
+ updateBizContract(this.form).then((response) => {
1146
+ this.$modal.msgSuccess("保存成功");
1147
+ // this.$router.push({
1148
+ // name: "Contract",
1149
+ // params: { askId: this.form.askId },
1150
+ // });
1151
+ });
1152
+ }
1153
+ }
1154
+ });
1155
+ },
1156
+ /** 下载合同 */
1157
+ handleDownLoadContract(row) {
1158
+ if (row.contractType == "sale") {
1159
+ this.download(
1160
+ "biz/contract/exportTemplate",
1161
+ {
1162
+ contractId: row.contractId,
1163
+ templateType: "EXCEL",
1164
+ },
1165
+ `${
1166
+ row.contractNo + "-" + row.buyContractCompany.companyEnglishName
1167
+ }.xlsx`
1168
+ );
1169
+ } else {
1170
+ this.download(
1171
+ "biz/contract/exportTemplate",
1172
+ {
1173
+ contractId: row.contractId,
1174
+ templateType: "EXCEL",
1175
+ },
1176
+ `${
1177
+ row.contractNo +
1178
+ "-" +
1179
+ row.supplierContractCompany.companyEnglishName
1180
+ }.xlsx`
1181
+ );
1182
+ }
1183
+ },
1184
+ updateAndDownload() {
1185
+ this.submitForm();
1186
+ return new Promise((resolve, reject) => {
1187
+ setTimeout(() => {
1188
+ this.handleDownLoadContract(this.form);
1189
+ }, 2000);
1190
+ });
1191
+ },
1192
+ deleteTableRow(value) {
1193
+ console.log(this.form.contractDetailList);
1194
+ console.log(value);
1195
+ },
1196
+ },
1197
+ };
1198
+ </script>
1199
+ <style lang="scss" scoped>
1200
+ .text {
1201
+ font-size: 16px;
1202
+ font-weight: 700;
1203
+ height: 35px;
1204
+ line-height: 35px;
1205
+ }
1206
+ .item {
1207
+ margin-bottom: 18px;
1208
+ }
1209
+ .text1 {
1210
+ font-size: 15px;
1211
+ text-align: center;
1212
+ height: 35px;
1213
+ line-height: 39px;
1214
+ }
1215
+ .bg-purple-dark {
1216
+ background: #99a9bf;
1217
+ }
1218
+ .bg-purple {
1219
+ background: #d3dce6;
1220
+ }
1221
+ .bg-purple-light {
1222
+ background: #e5e9f2;
1223
+ }
1224
+ .grid-content {
1225
+ border-radius: 4px;
1226
+ min-height: 36px;
1227
+ }
1228
+ .el-row {
1229
+ margin-bottom: 20px;
1230
+ &:last-child {
1231
+ margin-bottom: 0;
1232
+ }
1233
+ }
1234
+ .el-col {
1235
+ border-radius: 4px;
1236
+ }
1237
+ .row-bg {
1238
+ padding: 10px 0;
1239
+ background-color: #f9fafc;
1240
+ }
1241
+ .el-tag + .el-tag {
1242
+ margin-left: 10px;
1243
+ }
1244
+ .button-new-tag {
1245
+ margin-left: 10px;
1246
+ height: 32px;
1247
+ line-height: 30px;
1248
+ padding-top: 0;
1249
+ padding-bottom: 0;
1250
+ }
1251
+ .input-new-tag {
1252
+ width: 90px;
1253
+ margin-left: 10px;
1254
+ vertical-align: bottom;
1255
+ }
1256
+ </style>