doctor-admin-components 1.0.14-beta.87 → 1.0.14-beta.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -61,4 +61,27 @@ Enter one-time password:
|
|
|
61
61
|
|
|
62
62
|
|
|
63
63
|
3 拉取最新版本镜像 点击同步 可能会有延迟
|
|
64
|
-
https://npmmirror.com/package/doctor-admin-components/versions?version=1.0.14-beta.72
|
|
64
|
+
https://npmmirror.com/package/doctor-admin-components/versions?version=1.0.14-beta.72
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
4.认证发布(登录和发布 均通过打开浏览器进行认证):
|
|
68
|
+
tyzl@tyzl-zxx-m1pro common-components % node -v
|
|
69
|
+
v20.19.3
|
|
70
|
+
|
|
71
|
+
tyzl@tyzl-zxx-m1pro common-components % npm login
|
|
72
|
+
npm notice Log in on https://registry.npmjs.org/
|
|
73
|
+
Login at:
|
|
74
|
+
https://www.npmjs.com/login?next=/login/cli/f6b5899d-e811-4a84-adc5-90fc2413ff31
|
|
75
|
+
Press ENTER to open in the browser...
|
|
76
|
+
|
|
77
|
+
Logged in on https://registry.npmjs.org/.
|
|
78
|
+
tyzl@tyzl-zxx-m1pro common-components % npm publish --tag=beta
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
npm notice
|
|
82
|
+
npm notice Publishing to https://registry.npmjs.org/ with tag beta and default access
|
|
83
|
+
Authenticate your account at:
|
|
84
|
+
https://www.npmjs.com/auth/cli/4e0a2c7a-6e12-4ca1-9462-5f8ec27e418e
|
|
85
|
+
Press ENTER to open in the browser...
|
|
86
|
+
|
|
87
|
+
+ doctor-admin-components@1.0.14-beta.86
|
package/package.json
CHANGED
|
@@ -8,6 +8,13 @@ export function listBizShipment(query) {
|
|
|
8
8
|
params: query
|
|
9
9
|
})
|
|
10
10
|
}
|
|
11
|
+
export function getBalanceInvoice(data) {
|
|
12
|
+
return request({
|
|
13
|
+
url: '/biz/invoice/balanceInvoice',
|
|
14
|
+
method: 'post',
|
|
15
|
+
data: data
|
|
16
|
+
})
|
|
17
|
+
}
|
|
11
18
|
|
|
12
19
|
// 查询装运详细
|
|
13
20
|
export function getBizShipment(shipmentId) {
|
|
@@ -1303,8 +1303,8 @@
|
|
|
1303
1303
|
<el-button type="primary" @click="addShipment">{{ $t('contractDetail.confirm') }}</el-button>
|
|
1304
1304
|
</span>
|
|
1305
1305
|
</el-dialog>
|
|
1306
|
-
<shipment-add ref="shipmentGen" @
|
|
1307
|
-
|
|
1306
|
+
<shipment-add ref="shipmentGen" @openGenerateLive="openGenerateLive" />
|
|
1307
|
+
<generate-live-open ref="generateLiveOpen"></generate-live-open>
|
|
1308
1308
|
<shipment-purchase-amount
|
|
1309
1309
|
ref="shipmentPurchaseAmount"
|
|
1310
1310
|
:getContractFileInfoCallback="getContractFileInfoCallback"
|
|
@@ -1318,6 +1318,7 @@ import {
|
|
|
1318
1318
|
chargedShipment,
|
|
1319
1319
|
getPurchaseAmount,
|
|
1320
1320
|
} from '../../../api/biz/bizShipment';
|
|
1321
|
+
import GenerateLiveOpen from './generateLiveOpen.vue'
|
|
1321
1322
|
import { listBizFileInfo, addBizFileInfo } from '../../../api/biz/bizFileInfo';
|
|
1322
1323
|
import { getBizContractFileInfo } from '../../../api/biz/bizContract';
|
|
1323
1324
|
import FileShow from './fileShow.vue';
|
|
@@ -1362,6 +1363,7 @@ let handleGenerateflag1 = false;
|
|
|
1362
1363
|
export default {
|
|
1363
1364
|
name: 'ContractFile',
|
|
1364
1365
|
components: {
|
|
1366
|
+
GenerateLiveOpen,
|
|
1365
1367
|
FileShow,
|
|
1366
1368
|
ContractFileUpload,
|
|
1367
1369
|
ContractFileDragUpload,
|
|
@@ -1553,6 +1555,9 @@ export default {
|
|
|
1553
1555
|
},
|
|
1554
1556
|
mounted() { },
|
|
1555
1557
|
methods: {
|
|
1558
|
+
openGenerateLive(shipment) {
|
|
1559
|
+
this.$refs.generateLiveOpen.handleOpen(shipment)
|
|
1560
|
+
},
|
|
1556
1561
|
async clickAddShipment() {
|
|
1557
1562
|
//弹出选择框,选择关联的销售合同,点击确定后,执行新增
|
|
1558
1563
|
const list = this.contract.associationContractList || []
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="">
|
|
3
|
+
<el-dialog :title="title" :visible.sync="open" width="70%" append-to-body>
|
|
4
|
+
{{ '报价类型为' + form.quoteType + ',确认用这这个装运单生成尾款发票' }}
|
|
5
|
+
<div slot="footer" class="dialog-footer">
|
|
6
|
+
<el-form :model="form" label-width="100px" :rules="rules" ref="ruleForm">
|
|
7
|
+
<div v-if="form.quoteType !== 'FIXED'">
|
|
8
|
+
<el-row class="bordered-row" v-if="checkDetailListHaveElement('element')">
|
|
9
|
+
<el-col :span="6"><div v-html="getItemName('element')"></div></el-col>
|
|
10
|
+
<el-col :span="18">
|
|
11
|
+
<!-- ag,al,au,bi,co,cu,li,ni,pb,sb,sn,zn -->
|
|
12
|
+
<el-form-item label="LME Ag=" v-if="checkElement('ag')" prop="elementPoint.ag">
|
|
13
|
+
<el-input v-model="form.elementPoint.ag" type="number"></el-input>
|
|
14
|
+
</el-form-item>
|
|
15
|
+
<el-form-item label="LME Al=" v-if="checkElement('al')" prop="elementPoint.al">
|
|
16
|
+
<el-input v-model="form.elementPoint.al" type="number"></el-input>
|
|
17
|
+
</el-form-item>
|
|
18
|
+
<el-form-item label="LME Au=" v-if="checkElement('au')" prop="elementPoint.au">
|
|
19
|
+
<el-input v-model="form.elementPoint.au" type="number"></el-input>
|
|
20
|
+
</el-form-item>
|
|
21
|
+
<el-form-item label="LME Bi=" v-if="checkElement('bi')" prop="elementPoint.bi">
|
|
22
|
+
<el-input v-model="form.elementPoint.bi" type="number"></el-input>
|
|
23
|
+
</el-form-item>
|
|
24
|
+
<el-form-item label="LME Co=" v-if="checkElement('co')" prop="elementPoint.co">
|
|
25
|
+
<el-input v-model="form.elementPoint.co" type="number"></el-input>
|
|
26
|
+
</el-form-item>
|
|
27
|
+
<el-form-item label="LME Cu=" v-if="checkElement('cu')" prop="elementPoint.cu">
|
|
28
|
+
<el-input v-model="form.elementPoint.cu" type="number"></el-input>
|
|
29
|
+
</el-form-item>
|
|
30
|
+
<el-form-item label="LME Li=" v-if="checkElement('li')" prop="elementPoint.li">
|
|
31
|
+
<el-input v-model="form.elementPoint.li" type="number"></el-input>
|
|
32
|
+
</el-form-item>
|
|
33
|
+
<el-form-item label="LME Ni=" v-if="checkElement('ni')" prop="elementPoint.ni">
|
|
34
|
+
<el-input v-model="form.elementPoint.ni" type="number"></el-input>
|
|
35
|
+
</el-form-item>
|
|
36
|
+
<el-form-item label="LME Pb=" v-if="checkElement('pb')" prop="elementPoint.pb">
|
|
37
|
+
<el-input v-model="form.elementPoint.pb" type="number"></el-input>
|
|
38
|
+
</el-form-item>
|
|
39
|
+
<el-form-item label="LME Sb=" v-if="checkElement('sb')" prop="elementPoint.sb">
|
|
40
|
+
<el-input v-model="form.elementPoint.sb" type="number"></el-input>
|
|
41
|
+
</el-form-item>
|
|
42
|
+
<el-form-item label="LME Sn=" v-if="checkElement('sn')" prop="elementPoint.sn">
|
|
43
|
+
<el-input v-model="form.elementPoint.sn" type="number"></el-input>
|
|
44
|
+
</el-form-item>
|
|
45
|
+
<el-form-item label="LME Zn=" v-if="checkElement('zn')" prop="elementPoint.zn">
|
|
46
|
+
<el-input v-model="form.elementPoint.zn" type="number"></el-input>
|
|
47
|
+
</el-form-item>
|
|
48
|
+
</el-col>
|
|
49
|
+
</el-row>
|
|
50
|
+
<el-row class="bordered-row" v-if="checkDetailListHaveElement('unElement')">
|
|
51
|
+
<el-col :span="6"><div v-html="getItemName('unElement')"></div></el-col>
|
|
52
|
+
<el-col :span="18">
|
|
53
|
+
<el-form-item label="临时价格" prop="pointPrice">
|
|
54
|
+
<el-input type="number" v-model="form.pointPrice" placeholder="请输入临时价格" size="small" /> </el-form-item
|
|
55
|
+
></el-col>
|
|
56
|
+
</el-row>
|
|
57
|
+
</div>
|
|
58
|
+
</el-form>
|
|
59
|
+
<el-button type="primary" @click="submit">确 定</el-button>
|
|
60
|
+
<el-button @click="cancel">取 消</el-button>
|
|
61
|
+
</div>
|
|
62
|
+
</el-dialog>
|
|
63
|
+
</div>
|
|
64
|
+
</template>
|
|
65
|
+
<script>
|
|
66
|
+
import { updateWithContainerAndInvoice, getBalanceInvoice } from '../../../api/biz/bizShipment'
|
|
67
|
+
|
|
68
|
+
export default {
|
|
69
|
+
name: '',
|
|
70
|
+
props: {
|
|
71
|
+
refresh: {
|
|
72
|
+
type: Function,
|
|
73
|
+
default: null
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
components: {},
|
|
77
|
+
data() {
|
|
78
|
+
return {
|
|
79
|
+
rules: {
|
|
80
|
+
pointPrice: [{ required: true, message: '请输入', trigger: 'blur' }],
|
|
81
|
+
'elementPoint.ag': [{ required: true, message: '请输入', trigger: 'blur' }],
|
|
82
|
+
'elementPoint.al': [{ required: true, message: '请输入', trigger: 'blur' }],
|
|
83
|
+
'elementPoint.au': [{ required: true, message: '请输入', trigger: 'blur' }],
|
|
84
|
+
'elementPoint.bi': [{ required: true, message: '请输入', trigger: 'blur' }],
|
|
85
|
+
'elementPoint.co': [{ required: true, message: '请输入', trigger: 'blur' }],
|
|
86
|
+
'elementPoint.cu': [{ required: true, message: '请输入', trigger: 'blur' }],
|
|
87
|
+
'elementPoint.li': [{ required: true, message: '请输入', trigger: 'blur' }],
|
|
88
|
+
'elementPoint.ni': [{ required: true, message: '请输入', trigger: 'blur' }],
|
|
89
|
+
'elementPoint.pb': [{ required: true, message: '请输入', trigger: 'blur' }],
|
|
90
|
+
'elementPoint.sb': [{ required: true, message: '请输入', trigger: 'blur' }],
|
|
91
|
+
'elementPoint.sn': [{ required: true, message: '请输入', trigger: 'blur' }],
|
|
92
|
+
'elementPoint.zn': [{ required: true, message: '请输入', trigger: 'blur' }]
|
|
93
|
+
},
|
|
94
|
+
title: '生成尾款发票',
|
|
95
|
+
open: false,
|
|
96
|
+
form: {}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
computed: {},
|
|
100
|
+
watch: {},
|
|
101
|
+
methods: {
|
|
102
|
+
checkElement(element) {
|
|
103
|
+
return this.form?.elementPoint && this.form.elementPoint[element] != null
|
|
104
|
+
},
|
|
105
|
+
//转换元素
|
|
106
|
+
formatElement(form) {
|
|
107
|
+
var elementPoint = {}
|
|
108
|
+
form.contractDetailList.forEach((contractDetail) => {
|
|
109
|
+
const elementContent = contractDetail?.elementContent
|
|
110
|
+
if (elementContent) {
|
|
111
|
+
Object.keys(elementContent).forEach((key) => {
|
|
112
|
+
if (elementContent[key]) {
|
|
113
|
+
elementPoint[key] = elementPoint[key] || 8000
|
|
114
|
+
}
|
|
115
|
+
})
|
|
116
|
+
}
|
|
117
|
+
})
|
|
118
|
+
form.elementPoint = elementPoint
|
|
119
|
+
},
|
|
120
|
+
//是否有多元素商品
|
|
121
|
+
checkDetailListHaveElement(type) {
|
|
122
|
+
if (type == 'element') {
|
|
123
|
+
return this.form.contractDetailList?.filter((item) => this.checkElementItem(item?.elementContent)).length > 0
|
|
124
|
+
} else {
|
|
125
|
+
return this.form.contractDetailList?.filter((item) => !this.checkElementItem(item?.elementContent)).length > 0
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
//获取商品
|
|
129
|
+
getItemName(type) {
|
|
130
|
+
const items = this.form.contractDetailList?.filter((item) =>
|
|
131
|
+
type === 'element' ? this.checkElementItem(item?.elementContent) : !this.checkElementItem(item?.elementContent)
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
// 使用map将每个项目转换为<div>标签,然后用join合并为单个字符串
|
|
135
|
+
return items.map((item) => `<div>${item?.askName}</div>`).join('')
|
|
136
|
+
},
|
|
137
|
+
handleOpen(shipment) {
|
|
138
|
+
this.reset()
|
|
139
|
+
this.form = shipment
|
|
140
|
+
const contractDetailList = []
|
|
141
|
+
shipment.containerList.forEach((container) => {
|
|
142
|
+
container.containerDetailList.forEach((containerDetail) => {
|
|
143
|
+
contractDetailList.push(containerDetail.contractDetail)
|
|
144
|
+
})
|
|
145
|
+
})
|
|
146
|
+
this.form.contractDetailList = contractDetailList
|
|
147
|
+
this.formatElement(this.form)
|
|
148
|
+
this.open = true
|
|
149
|
+
},
|
|
150
|
+
submit() {
|
|
151
|
+
this.$refs['ruleForm'].validate((valid) => {
|
|
152
|
+
if (valid) {
|
|
153
|
+
const loading = this.openLoading()
|
|
154
|
+
updateWithContainerAndInvoice({ ...this.form, shipmentId: this.form.shipmentId, pointPrice: this.form.pointPrice, elementPoint: this.form.elementPoint })
|
|
155
|
+
.then((res) => {
|
|
156
|
+
if (res?.code !== 200) {
|
|
157
|
+
this.refresh && this.refresh()
|
|
158
|
+
this.open = false
|
|
159
|
+
loading.close()
|
|
160
|
+
return this.$message.error(res.message || '服务器异常')
|
|
161
|
+
}
|
|
162
|
+
getBalanceInvoice({ shipmentId: this.form.shipmentId }).then((res) => {
|
|
163
|
+
const invoice = res.data
|
|
164
|
+
this.refresh && this.refresh()
|
|
165
|
+
this.open = false
|
|
166
|
+
loading.close()
|
|
167
|
+
if (invoice) {
|
|
168
|
+
this.$router.push({
|
|
169
|
+
path: '/invoice/detail/' + invoice.id,
|
|
170
|
+
params: { id: invoice.id }
|
|
171
|
+
})
|
|
172
|
+
}
|
|
173
|
+
})
|
|
174
|
+
})
|
|
175
|
+
.finally(() => {
|
|
176
|
+
loading.close()
|
|
177
|
+
})
|
|
178
|
+
} else {
|
|
179
|
+
return false
|
|
180
|
+
}
|
|
181
|
+
})
|
|
182
|
+
},
|
|
183
|
+
cancel() {
|
|
184
|
+
this.reset()
|
|
185
|
+
this.open = false
|
|
186
|
+
},
|
|
187
|
+
reset() {
|
|
188
|
+
this.form = {
|
|
189
|
+
shipmentId: null,
|
|
190
|
+
pointPrice: null,
|
|
191
|
+
quoteType: null,
|
|
192
|
+
elementPoint: {
|
|
193
|
+
pb: null,
|
|
194
|
+
cu: null,
|
|
195
|
+
ni: null,
|
|
196
|
+
al: null,
|
|
197
|
+
co: null,
|
|
198
|
+
li: null,
|
|
199
|
+
zn: null,
|
|
200
|
+
sb: null,
|
|
201
|
+
bi: null,
|
|
202
|
+
sn: null,
|
|
203
|
+
ag: null,
|
|
204
|
+
au: null
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
created() {},
|
|
210
|
+
mounted() {},
|
|
211
|
+
beforeDestroy() {}
|
|
212
|
+
}
|
|
213
|
+
</script>
|
|
214
|
+
<style lang="scss" scoped></style>
|