Commit cd137a71c62b11311393ff64308268da91141fd3

Authored by 严涛
2 parents f8cdb3de ee0a8fd2

Merge branch 'cjerp-contract' of http://gitlab.qgutech.com/zhuyuanliang/erp-mobile into test_cjerp

... ... @@ -75,3 +75,14 @@ export function checkApi(params) {
75 75 },
76 76 })
77 77 }
  78 +
  79 +
  80 +// 上传质保书
  81 +export function uploadWarrantyCertificate(params) {
  82 + return request({
  83 + url: `${baseUrl}/uploadWarrantyCertificate`,
  84 + method: 'put',
  85 + data: params,
  86 + contentType: ContentTypeEnum.JSON
  87 + })
  88 +}
... ...
... ... @@ -102,6 +102,11 @@
102 102 placeholder="请输入长度公差(单项-)" />
103 103 </template>
104 104 </uni-list-item>
  105 + <uni-list-item title="物料编码">
  106 + <template v-slot:footer>
  107 + <uni-easyinput v-model="item.materialCode" :inputBorder="false" placeholder="请输入物料编码" />
  108 + </template>
  109 + </uni-list-item>
105 110 <uni-list-item title="状态">
106 111 <template v-slot:footer>
107 112 <uni-easyinput v-model="item.status" :inputBorder="false" placeholder="请输入状态" />
... ... @@ -179,6 +184,7 @@
179 184 </view>
180 185 </view>
181 186 </view>
  187 + <view class="row"><text class="label">物料编码</text><text class="value">{{ item.materialCode }}</text></view>
182 188 <view class="row"><text class="label">状态</text><text class="value">{{ item.status }}</text></view>
183 189 <view class="row"><text class="label">数量</text><text class="value">{{ item.quantity }}</text></view>
184 190 <view class="row"><text class="label">单价</text><text class="value">{{ formatCurrency(item.unitPrice)
... ... @@ -246,7 +252,7 @@ export default {
246 252 },
247 253 methods: {
248 254 defaultItem() {
249   - return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', status: '', quantity: '', unitPrice: '', amountExcludingTax: 0, totalAmount: 0, deliveryDate: '' }
  255 + return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', materialCode: '', status: '', quantity: '', unitPrice: '', amountExcludingTax: 0, totalAmount: 0, deliveryDate: '' }
250 256 },
251 257 onImmediateChange(idx) {
252 258 this.$nextTick(() => this.recalculate(idx))
... ...
... ... @@ -4,7 +4,8 @@ module.exports = {
4 4 themeColor: '#3d48a3',
5 5
6 6 // baseUrl: 'http://ft.wecando21cn.com/api',
7   - baseUrl: 'http://erp.qgutech.com/api',
  7 + baseUrl: 'http://gjtd.ahcjxc.com:81/api',
  8 + // baseUrl: 'http://erp.qgutech.com//api',
8 9 // baseUrl: 'http://127.0.0.1:8085',
9 10 // 应用信息
10 11 appInfo: {
... ... @@ -31,10 +32,10 @@ module.exports = {
31 32 }
32 33 ]
33 34 },
34   -
  35 +
35 36 loginInfo: {
36 37 userName: "",
37 38 password: "",
38   -
  39 +
39 40 }
40 41 }
... ...
... ... @@ -53,9 +53,9 @@
53 53 <uni-easyinput v-model="form.priceListNo" placeholder="请输入价格表编号" :inputBorder="false" />
54 54 </template>
55 55 </uni-list-item>
56   - <uni-list-item title="开票情况">
  56 + <uni-list-item title="开票要求">
57 57 <template v-slot:footer>
58   - <uni-easyinput v-model="form.invoicingStatus" placeholder="请输入开票情况" :inputBorder="false" />
  58 + <uni-easyinput v-model="form.invoicingStatus" placeholder="请输入开票要求" :inputBorder="false" />
59 59 </template>
60 60 </uni-list-item>
61 61 <uni-list-item class="amount-item">
... ... @@ -216,7 +216,7 @@ export default {
216 216 const m = res.data || {}
217 217 const next = { ...this.form, ...m }
218 218 next.id = m.id || m.code || id
219   - next.purchaseOrderLineList = Array.isArray(m.purchaseOrderLineList) ? m.purchaseOrderLineList.map(x => ({
  219 + next.purchaseOrderLineList = Array.isArray(m.purchaseOrderLineList) ? m.purchaseOrderLineList.map(x => ({
220 220 ...x,
221 221 assessmentExceedsAgreement: Number(x.assessmentExceedsAgreement || 0).toFixed(2) || 0.00,
222 222 })) : []
... ...
... ... @@ -27,7 +27,7 @@
27 27
28 28 <view class="section">
29 29 <view class="row"><text class="label">价格表编号</text><text class="value">{{ form.priceListNo }}</text></view>
30   - <view class="row"><text class="label">开票情况</text><text class="value">{{ form.invoicingStatus }}</text></view>
  30 + <view class="row"><text class="label">开票要求</text><text class="value">{{ form.invoicingStatus }}</text></view>
31 31 <view class="row"><text class="label">运费</text><text class="value">{{ form.shippingCost }}</text></view>
32 32 <view class="row"><text class="label">执行标准</text><text class="value">{{ getDicName('APPLICABLE_STANDARD',
33 33 form.executionStandard, dicOptions.APPLICABLE_STANDARD) }}</text></view>
... ...
... ... @@ -52,9 +52,9 @@
52 52 <uni-easyinput v-model="form.priceListNo" placeholder="请输入价格表编号" :inputBorder="false" />
53 53 </template>
54 54 </uni-list-item>
55   - <uni-list-item title="开票情况">
  55 + <uni-list-item title="开票要求">
56 56 <template v-slot:footer>
57   - <uni-easyinput v-model="form.invoicingStatus" placeholder="请输入开票情况" :inputBorder="false" />
  57 + <uni-easyinput v-model="form.invoicingStatus" placeholder="请输入开票要求" :inputBorder="false" />
58 58 </template>
59 59 </uni-list-item>
60 60 <uni-list-item class="amount-item">
... ... @@ -212,7 +212,7 @@ export default {
212 212 const next = { ...this.form, ...m }
213 213 next.id = m.id || m.code || id;
214 214 next.purchaseOrderId = m.orderId || '';
215   - next.purchaseOrderLineList = Array.isArray(m.afterChangeSpecList) ? m.afterChangeSpecList.map(x => ({
  215 + next.purchaseOrderLineList = Array.isArray(m.afterChangeSpecList) ? m.afterChangeSpecList.map(x => ({
216 216 ...x,
217 217 assessmentExceedsAgreement: Number(x.assessmentExceedsAgreement || 0).toFixed(2) || 0.00,
218 218 })) : []
... ...
... ... @@ -27,7 +27,7 @@
27 27
28 28 <view class="section">
29 29 <view class="row"><text class="label">价格表编号</text><text class="value">{{ form.priceListNo }}</text></view>
30   - <view class="row"><text class="label">开票情况</text><text class="value">{{ form.invoicingStatus }}</text></view>
  30 + <view class="row"><text class="label">开票要求</text><text class="value">{{ form.invoicingStatus }}</text></view>
31 31 <view class="row"><text class="label">运费</text><text class="value">{{ form.shippingCost }}</text></view>
32 32 <view class="row"><text class="label">执行标准</text><text class="value">{{ getDicName('APPLICABLE_STANDARD',
33 33 form.executionStandard, dicOptions.APPLICABLE_STANDARD) }}</text></view>
... ...
... ... @@ -102,6 +102,11 @@
102 102 placeholder="请输入长度公差下限" @input="onNumberInput(idx, 'lengthTolNeg')" @blur="onNumberBlur(idx, 'lengthTolNeg', 9)" />
103 103 </template>
104 104 </uni-list-item>
  105 + <uni-list-item title="物料编码">
  106 + <template v-slot:footer>
  107 + <uni-easyinput v-model="item.materialCode" :inputBorder="false" placeholder="请输入物料编码" />
  108 + </template>
  109 + </uni-list-item>
105 110 <uni-list-item title="状态">
106 111 <template v-slot:footer>
107 112 <uni-easyinput v-model="item.status" :inputBorder="false" placeholder="请输入状态" />
... ... @@ -190,6 +195,7 @@
190 195 </view>
191 196 </view>
192 197 </view>
  198 + <view class="row"><text class="label">物料编码</text><text class="value">{{ item.materialCode }}</text></view>
193 199 <view class="row"><text class="label">状态</text><text class="value">{{ item.status }}</text></view>
194 200 <view class="row"><text class="label">数量</text><text class="value">{{ item.quantity }}</text></view>
195 201 <view class="row"><text class="label">单价</text><text class="value">{{ formatCurrency(item.unitPrice)
... ... @@ -271,7 +277,7 @@ export default {
271 277 },
272 278 methods: {
273 279 defaultItem() {
274   - return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', status: '', quantity: '', unitPrice: '', processingFee: undefined, totalAmount: 0, deliveryDate: '', sampleOrder: false }
  280 + return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', materialCode: '', status: '', quantity: '', unitPrice: '', processingFee: undefined, totalAmount: 0, deliveryDate: '', sampleOrder: false }
275 281 },
276 282 onNonNegativeInput(idx, field) {
277 283 const it = this.items[idx]
... ...
... ... @@ -74,6 +74,11 @@
74 74 </view>
75 75 </template>
76 76 </uni-list-item>
  77 + <uni-list-item title="物料编码">
  78 + <template v-slot:footer>
  79 + <uni-easyinput v-model="item.materialCode" placeholder="请输入物料编码" :clearable="false" disabled />
  80 + </template>
  81 + </uni-list-item>
77 82 <uni-list-item title="状态">
78 83 <template v-slot:footer>
79 84 <uni-easyinput v-model="item.status" placeholder="请输入状态" :clearable="false" disabled />
... ... @@ -248,6 +253,7 @@ export default {
248 253 length: v.length || '',
249 254 lengthTolPos: v.lengthTolPos || '',
250 255 lengthTolNeg: v.lengthTolNeg || '',
  256 + materialCode: v.materialCode || '',
251 257 status: v.status || '',
252 258 quantity: v.productQuantity || v.quantity || '',
253 259 unitPrice: v.unitPrice || '',
... ...
... ... @@ -104,6 +104,11 @@
104 104 placeholder="请输入长度公差下限" @input="onNumberInput(idx, 'lengthTolNeg')" @blur="onNumberBlur(idx, 'lengthTolNeg', 9)" />
105 105 </template>
106 106 </uni-list-item>
  107 + <uni-list-item title="物料编码">
  108 + <template v-slot:footer>
  109 + <uni-easyinput v-model="item.materialCode" :inputBorder="false" placeholder="请输入物料编码" />
  110 + </template>
  111 + </uni-list-item>
107 112 <uni-list-item title="状态">
108 113 <template v-slot:footer>
109 114 <uni-easyinput v-model="item.status" :inputBorder="false" placeholder="请输入状态" />
... ... @@ -192,6 +197,7 @@
192 197 </view>
193 198 </view>
194 199 </view>
  200 + <view class="row"><text class="label">物料编码</text><text class="value">{{ item.materialCode }}</text></view>
195 201 <view class="row"><text class="label">状态</text><text class="value">{{ item.status }}</text></view>
196 202 <view class="row"><text class="label">数量</text><text class="value">{{ item.quantity }}</text></view>
197 203 <view class="row"><text class="label">单价</text><text class="value">{{ formatCurrency(item.unitPrice)
... ... @@ -273,7 +279,7 @@ export default {
273 279 },
274 280 methods: {
275 281 defaultItem() {
276   - return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', status: '', quantity: '', unitPrice: '', processingFee: undefined, totalAmount: 0, deliveryDate: '', sampleOrder: false }
  282 + return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', materialCode: '', status: '', quantity: '', unitPrice: '', processingFee: undefined, totalAmount: 0, deliveryDate: '', sampleOrder: false }
277 283 },
278 284 onNonNegativeInput(idx, field) {
279 285 const it = this.items[idx]
... ...
... ... @@ -73,6 +73,11 @@
73 73 </view>
74 74 </template>
75 75 </uni-list-item>
  76 + <uni-list-item title="物料编码">
  77 + <template v-slot:footer>
  78 + <uni-easyinput v-model="item.materialCode" placeholder="请输入物料编码" :clearable="false" disabled />
  79 + </template>
  80 + </uni-list-item>
76 81 <uni-list-item title="状态">
77 82 <template v-slot:footer>
78 83 <uni-easyinput v-model="item.status" placeholder="请输入状态" :clearable="false" disabled />
... ... @@ -246,6 +251,7 @@ export default {
246 251 length: v.length || '',
247 252 lengthTolPos: v.lengthTolPos || '',
248 253 lengthTolNeg: v.lengthTolNeg || '',
  254 + materialCode: v.materialCode || '',
249 255 status: v.status || '',
250 256 quantity: v.productQuantity || v.quantity || '',
251 257 unitPrice: v.unitPrice || '',
... ...
... ... @@ -102,6 +102,11 @@
102 102 placeholder="请输入长度公差下限" @input="onNumberInput(idx, 'lengthTolNeg')" @blur="onNumberBlur(idx, 'lengthTolNeg', 9)" />
103 103 </template>
104 104 </uni-list-item>
  105 + <uni-list-item title="物料编码">
  106 + <template v-slot:footer>
  107 + <uni-easyinput v-model="item.materialCode" :inputBorder="false" placeholder="请输入物料编码" />
  108 + </template>
  109 + </uni-list-item>
105 110 <uni-list-item title="状态">
106 111 <template v-slot:footer>
107 112 <uni-easyinput v-model="item.status" :inputBorder="false" placeholder="请输入状态" />
... ... @@ -186,6 +191,7 @@
186 191 </view>
187 192 </view>
188 193 </view>
  194 + <view class="row"><text class="label">物料编码</text><text class="value">{{ item.materialCode }}</text></view>
189 195 <view class="row"><text class="label">状态</text><text class="value">{{ item.status }}</text></view>
190 196 <view class="row"><text class="label">数量</text><text class="value">{{ item.quantity }}</text></view>
191 197 <view class="row"><text class="label">单价</text><text class="value">{{ formatCurrency(item.unitPrice)
... ... @@ -267,7 +273,7 @@ export default {
267 273 },
268 274 methods: {
269 275 defaultItem() {
270   - return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', status: '', quantity: '', unitPrice: '', totalAmount: 0, deliveryDate: '', sampleOrder: false }
  276 + return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', materialCode: '', status: '', quantity: '', unitPrice: '', totalAmount: 0, deliveryDate: '', sampleOrder: false }
271 277 },
272 278 onNonNegativeInput(idx, field) {
273 279 const it = this.items[idx]
... ...
... ... @@ -134,6 +134,11 @@
134 134 placeholder="请输入长度公差下限" @input="onNumberInput(idx, 'lengthTolNeg')" @blur="onNumberBlur(idx, 'lengthTolNeg', 9)" />
135 135 </template>
136 136 </uni-list-item>
  137 + <uni-list-item title="物料编码">
  138 + <template v-slot:footer>
  139 + <uni-easyinput v-model="item.materialCode" :inputBorder="false" placeholder="请输入物料编码" />
  140 + </template>
  141 + </uni-list-item>
137 142 <uni-list-item title="定作物数量">
138 143 <template v-slot:footer>
139 144 <uni-easyinput v-model="item.productQuantity" type="digit" :inputBorder="false" placeholder="请输入数量kg" @input="onNonNegativeInput(idx, 'productQuantity')" @blur="onNonNegativeBlur(idx, 'productQuantity', 2)" />
... ... @@ -214,6 +219,7 @@
214 219 </view>
215 220 </view>
216 221 </view>
  222 + <view class="row"><text class="label">物料编码</text><text class="value">{{ item.materialCode }}</text></view>
217 223 <view class="row"><text class="label">定做物数量</text><text class="value">{{ item.productQuantity }}</text></view>
218 224 <view class="row"><text class="label">加工费单价</text><text class="value">{{ formatCurrency(item.unitPrice)
219 225 }}</text>
... ... @@ -310,7 +316,7 @@ export default {
310 316 },
311 317 methods: {
312 318 defaultItem() {
313   - return { rawProductId: '', rawProductName: '', rawProductGradeId: '', rawProductGradeName: '', industry: '', quality: '', supplyTime: '', materialProductRatio: '', materialProductRatioName: '', materialProductRatioRemarks: '', productName: '', productId: '', productGrade: '', productStatus: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', productQuantity: '', unitPrice: '', amountExcludingTax: 0, totalAmount: 0, deliveryDate: '', sampleOrder: false }
  319 + return { rawProductId: '', rawProductName: '', rawProductGradeId: '', rawProductGradeName: '', industry: '', quality: '', supplyTime: '', materialProductRatio: '', materialProductRatioName: '', materialProductRatioRemarks: '', productName: '', productId: '', productGrade: '', productStatus: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', materialCode:'', productQuantity: '', unitPrice: '', amountExcludingTax: 0, totalAmount: 0, deliveryDate: '', sampleOrder: false }
314 320 },
315 321 onNumberInput(idx, field) {
316 322 const it = this.items[idx]
... ...
... ... @@ -102,6 +102,11 @@
102 102 placeholder="请输入长度公差下限" @input="onNumberInput(idx, 'lengthTolNeg')" @blur="onNumberBlur(idx, 'lengthTolNeg', 9)" />
103 103 </template>
104 104 </uni-list-item>
  105 + <uni-list-item title="物料编码">
  106 + <template v-slot:footer>
  107 + <uni-easyinput v-model="item.materialCode" :inputBorder="false" placeholder="请输入物料编码" />
  108 + </template>
  109 + </uni-list-item>
105 110 <uni-list-item title="状态">
106 111 <template v-slot:footer>
107 112 <uni-easyinput v-model="item.status" :inputBorder="false" placeholder="请输入状态" />
... ... @@ -185,6 +190,7 @@
185 190 </view>
186 191 </view>
187 192 </view>
  193 + <view class="row"><text class="label">物料编码</text><text class="value">{{ item.materialCode }}</text></view>
188 194 <view class="row"><text class="label">状态</text><text class="value">{{ item.status }}</text></view>
189 195 <view class="row"><text class="label">数量</text><text class="value">{{ item.quantity }}</text></view>
190 196 <view class="row"><text class="label">单价</text><text class="value">{{ formatCurrency(item.unitPrice)
... ... @@ -266,7 +272,7 @@ export default {
266 272 },
267 273 methods: {
268 274 defaultItem() {
269   - return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', status: '', quantity: '', unitPrice: '', amountExcludingTax: 0, totalAmount: 0, deliveryDate: '', sampleOrder: false }
  275 + return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', materialCode: '', status: '', quantity: '', unitPrice: '', amountExcludingTax: 0, totalAmount: 0, deliveryDate: '', sampleOrder: false }
270 276 },
271 277 onNumberInput(idx, field) {
272 278 const it = this.items[idx]
... ...
... ... @@ -69,6 +69,11 @@
69 69 </view>
70 70 </template>
71 71 </uni-list-item>
  72 + <uni-list-item title="物料编码">
  73 + <template v-slot:footer>
  74 + <uni-easyinput v-model="item.materialCode" placeholder="请输入物料编码" :clearable="false" disabled />
  75 + </template>
  76 + </uni-list-item>
72 77 <uni-list-item title="状态">
73 78 <template v-slot:footer>
74 79 <uni-easyinput v-model="item.status" placeholder="请输入状态" :clearable="false" disabled />
... ... @@ -235,6 +240,7 @@ export default {
235 240 length: v.length || '',
236 241 lengthTolPos: v.lengthTolPos || '',
237 242 lengthTolNeg: v.lengthTolNeg || '',
  243 + materialCode: v.materialCode || '',
238 244 status: v.status || '',
239 245 quantity: v.productQuantity || v.quantity || '',
240 246 unitPrice: v.unitPrice || '',
... ...
... ... @@ -102,6 +102,11 @@
102 102 placeholder="请输入长度公差下限" @input="onNumberInput(idx, 'lengthTolNeg')" @blur="onNumberBlur(idx, 'lengthTolNeg', 9)" />
103 103 </template>
104 104 </uni-list-item>
  105 + <uni-list-item title="物料编码">
  106 + <template v-slot:footer>
  107 + <uni-easyinput v-model="item.materialCode" :inputBorder="false" placeholder="请输入物料编码" />
  108 + </template>
  109 + </uni-list-item>
105 110 <uni-list-item title="状态">
106 111 <template v-slot:footer>
107 112 <uni-easyinput v-model="item.status" :inputBorder="false" placeholder="请输入状态" />
... ... @@ -185,6 +190,7 @@
185 190 </view>
186 191 </view>
187 192 </view>
  193 + <view class="row"><text class="label">物料编码</text><text class="value">{{ item.materialCode }}</text></view>
188 194 <view class="row"><text class="label">状态</text><text class="value">{{ item.status }}</text></view>
189 195 <view class="row"><text class="label">数量</text><text class="value">{{ item.quantity }}</text></view>
190 196 <view class="row"><text class="label">单价</text><text class="value">{{ formatCurrency(item.unitPrice)
... ... @@ -371,7 +377,7 @@ export default {
371 377 return true
372 378 },
373 379 defaultItem() {
374   - return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', status: '', quantity: '', unitPrice: '', amountExcludingTax: 0, totalAmount: 0, deliveryDate: '', sampleOrder: false }
  380 + return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', materialCode: '', status: '', quantity: '', unitPrice: '', amountExcludingTax: 0, totalAmount: 0, deliveryDate: '', sampleOrder: false }
375 381 },
376 382 onNonNegativeInput(idx, field) {
377 383 const it = this.items[idx]
... ...
... ... @@ -68,6 +68,11 @@
68 68 </view>
69 69 </template>
70 70 </uni-list-item>
  71 + <uni-list-item title="物料编码">
  72 + <template v-slot:footer>
  73 + <uni-easyinput v-model="item.materialCode" placeholder="请输入物料编码" :clearable="false" disabled />
  74 + </template>
  75 + </uni-list-item>
71 76 <uni-list-item title="状态">
72 77 <template v-slot:footer>
73 78 <uni-easyinput v-model="item.status" placeholder="请输入状态" :clearable="false" disabled />
... ... @@ -233,6 +238,7 @@ export default {
233 238 length: v.length || '',
234 239 lengthTolPos: v.lengthTolPos || '',
235 240 lengthTolNeg: v.lengthTolNeg || '',
  241 + materialCode: v.materialCode || '',
236 242 status: v.status || '',
237 243 quantity: v.productQuantity || v.quantity || '',
238 244 unitPrice: v.unitPrice || '',
... ...
... ... @@ -102,6 +102,11 @@
102 102 placeholder="请输入长度公差下限" @input="onNumberInput(idx, 'lengthTolNeg')" @blur="onNumberBlur(idx, 'lengthTolNeg', 9)" />
103 103 </template>
104 104 </uni-list-item>
  105 + <uni-list-item title="物料编码">
  106 + <template v-slot:footer>
  107 + <uni-easyinput v-model="item.materialCode" :inputBorder="false" placeholder="请输入物料编码" />
  108 + </template>
  109 + </uni-list-item>
105 110 <uni-list-item title="状态">
106 111 <template v-slot:footer>
107 112 <uni-easyinput v-model="item.status" :inputBorder="false" placeholder="请输入状态" />
... ... @@ -185,6 +190,7 @@
185 190 </view>
186 191 </view>
187 192 </view>
  193 + <view class="row"><text class="label">物料编码</text><text class="value">{{ item.materialCode }}</text></view>
188 194 <view class="row"><text class="label">状态</text><text class="value">{{ item.status }}</text></view>
189 195 <view class="row"><text class="label">数量</text><text class="value">{{ item.quantity }}</text></view>
190 196 <view class="row"><text class="label">单价</text><text class="value">{{ formatCurrency(item.unitPrice)
... ... @@ -266,7 +272,7 @@ export default {
266 272 },
267 273 methods: {
268 274 defaultItem() {
269   - return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', status: '', quantity: '', unitPrice: '', amountExcludingTax: 0, totalAmount: 0, deliveryDate: '', sampleOrder: false }
  275 + return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', materialCode: '', status: '', quantity: '', unitPrice: '', amountExcludingTax: 0, totalAmount: 0, deliveryDate: '', sampleOrder: false }
270 276 },
271 277 onNonNegativeInput(idx, field) {
272 278 const it = this.items[idx]
... ...
... ... @@ -759,10 +759,10 @@ export default {
759 759
760 760 .generate-btn {
761 761 margin-left: 24rpx;
762   - height: 64rpx;
763   - line-height: 64rpx;
  762 + height: 48rpx;
  763 + line-height: 48rpx;
764 764 padding: 0 24rpx;
765   - font-size: 28rpx;
  765 + font-size: 24rpx;
766 766 border-radius: 8rpx;
767 767 background: $theme-primary;
768 768 color: #fff;
... ...
... ... @@ -316,10 +316,10 @@ export default {
316 316
317 317 .generate-btn {
318 318 margin-left: 24rpx;
319   - height: 64rpx;
320   - line-height: 64rpx;
  319 + height: 48rpx;
  320 + line-height: 48rpx;
321 321 padding: 0 24rpx;
322   - font-size: 28rpx;
  322 + font-size: 24rpx;
323 323 border-radius: 8rpx;
324 324 background: $theme-primary;
325 325 color: #fff;
... ...
... ... @@ -323,14 +323,14 @@ export default {
323 323 align-items: center;
324 324
325 325 .generate-btn {
326   - margin-left: 24rpx;
327   - height: 64rpx;
328   - line-height: 64rpx;
329   - padding: 0 24rpx;
330   - font-size: 28rpx;
331   - border-radius: 8rpx;
332   - background: $theme-primary;
333   - color: #fff;
  326 + margin-left: 24rpx;
  327 + height: 48rpx;
  328 + line-height: 48rpx;
  329 + padding: 0 24rpx;
  330 + font-size: 24rpx;
  331 + border-radius: 8rpx;
  332 + background: $theme-primary;
  333 + color: #fff;
334 334 }
335 335 }
336 336 }
... ...
... ... @@ -20,9 +20,21 @@
20 20 <Product mode="view" :status="form.status" :list="form.detailList" @applyDelay="applyDelayFun"
21 21 @split="splitFun" />
22 22 </view>
  23 +
23 24 <view class="section">
24 25 <view class="row"><text class="label">签收单据</text><text class="value act" @click="downloadFile(form.fileId, form.fileName)">{{ form.fileName }}</text></view>
25 26 </view>
  27 +
  28 + <view class="section">
  29 + <view class="row">
  30 + <text class="label">质保书</text>
  31 + <view class="value">
  32 + <view v-for="item in form.warrantyCertificateList" :key="item.fileId" class="file-item" @click="downloadFile(item.fileId, item.fileName)">
  33 + <text class="value act">{{ item.fileName }}</text>
  34 + </view>
  35 + </view>
  36 + </view>
  37 + </view>
26 38 </view>
27 39 </scroll-view>
28 40 <detail-buttons :buttons="displayButtons" @click="handleButtonClick" />
... ... @@ -47,11 +59,11 @@
47 59 <uni-popup ref="fillDatePopup" type="bottom" :mask-click="false">
48 60 <view class="dialog">
49 61 <view class="dialog_header">
50   - <text>填写日期</text>
  62 + <text>填写日期</text>
51 63 <view class="dialog_close" @click="closeFillDateInfo"></view>
52   - </view>
  64 + </view>
53 65 <view class="dialog_body fill-data_body">
54   - <uni-list>
  66 + <uni-list>
55 67 <uni-list-item title="原发货日期">
56 68 <template v-slot:footer>
57 69 <view class="value">{{ fillDateForm.shipmentsDate }}</view>
... ... @@ -827,4 +839,10 @@ export default {
827 839 }
828 840 }
829 841 }
  842 +.file-item {
  843 + margin-bottom: 12rpx;
  844 + &:last-child {
  845 + margin-bottom: 0;
  846 + }
  847 +}
830 848 </style>
... ...
... ... @@ -74,9 +74,9 @@
74 74 <uni-easyinput v-model="form.priceListNo" placeholder="请输入价格表编号" :inputBorder="false" />
75 75 </template>
76 76 </uni-list-item>
77   - <uni-list-item title="开票情况">
  77 + <uni-list-item title="开票要求">
78 78 <template v-slot:footer>
79   - <uni-easyinput v-model="form.invoicingStatus" placeholder="请输入开票情况" :inputBorder="false" />
  79 + <uni-easyinput v-model="form.invoicingStatus" placeholder="请输入开票要求" :inputBorder="false" />
80 80 </template>
81 81 </uni-list-item>
82 82 <uni-list-item class="amount-item">
... ... @@ -191,7 +191,7 @@
191 191
192 192 <view class="section">
193 193 <view class="row"><text class="label">价格表编号</text><text class="value">{{ form.priceListNo }}</text></view>
194   - <view class="row"><text class="label">开票情况</text><text class="value">{{ form.invoicingStatus }}</text></view>
  194 + <view class="row"><text class="label">开票要求</text><text class="value">{{ form.invoicingStatus }}</text></view>
195 195 <view class="row"><text class="label">运费</text><text class="value">{{ form.shippingCost }}</text></view>
196 196 <view class="row"><text class="label">执行标准</text><text class="value">{{ getDicName('APPLICABLE_STANDARD',
197 197 form.executionStandard, dicOptions.APPLICABLE_STANDARD) }}</text></view>
... ... @@ -331,7 +331,7 @@ export default {
331 331 const m = res.data || {}
332 332 const next = { ...this.form, ...m }
333 333 next.id = m.id || m.code || id
334   - next.purchaseOrderLineList = Array.isArray(m.purchaseOrderLineList) ? m.purchaseOrderLineList.map(x => ({
  334 + next.purchaseOrderLineList = Array.isArray(m.purchaseOrderLineList) ? m.purchaseOrderLineList.map(x => ({
335 335 ...x,
336 336 assessmentExceedsAgreement: Number(x.assessmentExceedsAgreement || 0).toFixed(2) || 0.00,
337 337 })) : []
... ...
... ... @@ -37,13 +37,16 @@
37 37
38 38 <view class="section">
39 39 <view class="row"><text class="label">价格表编号</text><text class="value">{{ form.priceListNo }}</text></view>
40   - <view class="row"><text class="label">开票情况</text><text class="value">{{ form.invoicingStatus }}</text></view>
  40 + <view class="row"><text class="label">开票要求</text><text class="value">{{ form.invoicingStatus }}</text></view>
41 41 <view class="row"><text class="label">运费</text><text class="value">{{ form.shippingCost }}</text></view>
42 42 <view class="row"><text class="label">执行标准</text><text class="value">{{ getDicName('APPLICABLE_STANDARD',
43 43 form.executionStandard, dicOptions.APPLICABLE_STANDARD) }}</text></view>
44 44 <view v-if="form.executionStandard === 'OTHER'" class="row"><text class="label">标准</text><text
45 45 class="value">{{ form.executionStandardRemarks }}</text></view>
46 46 </view>
  47 + <view class="section">
  48 + <view class="row"><text class="label">质保书</text><text class="value act" @click="downloadFile(form.warrantyCertificateFileId, form.warrantyCertificateFileName)">{{ form.warrantyCertificateFileName }}</text></view>
  49 + </view>
47 50
48 51 <view class="title-header">
49 52 <image class="title-header_icon" src="/static/images/title.png" />
... ... @@ -66,13 +69,32 @@
66 69 </view>
67 70 </scroll-view>
68 71 <detail-buttons :buttons="displayButtons" @click="handleButtonClick" />
  72 + <uni-popup ref="uploadPopup" type="bottom" :mask-click="false">
  73 + <view class="dialog">
  74 + <view class="dialog_header">
  75 + <text>上传质保书</text>
  76 + <view class="dialog_close" @click="closeUploadInfo"></view>
  77 + </view>
  78 + <view class="dialog_body">
  79 + <view class="dialog_row">
  80 + <text class="dialog_label">质保书</text>
  81 + <FileUpload v-model="uploadFile" />
  82 + </view>
  83 + </view>
  84 + <view class="dialog_footer">
  85 + <button class="btn confirm" type="primary" @click="onUploadSave">保存</button>
  86 + </view>
  87 + </view>
  88 + </uni-popup>
69 89 </view>
70 90 </template>
71 91
72 92 <script>
73   -import { getDetailApi, cancelApi, checkApi } from '@/api/order_list.js'
  93 +import { getDetailApi, cancelApi, checkApi, uploadWarrantyCertificate } from '@/api/order_list.js'
74 94 import Product from './product.vue'
75 95 import DetailButtons from '@/components/detail-buttons/index.vue'
  96 +import FileUpload from '@/components/file-upload/index.vue'
  97 +import { downloadFile } from '@/utils/downloadFile.js'
76 98 import {
77 99 getDicName
78 100 } from '@/utils/dic.js'
... ... @@ -82,7 +104,7 @@ import {
82 104
83 105 export default {
84 106 name: 'OrderListDetail',
85   - components: { Product, DetailButtons },
  107 + components: { Product, DetailButtons, FileUpload },
86 108 data() {
87 109 return {
88 110 form: {},
... ... @@ -92,7 +114,9 @@ export default {
92 114 { text: '审核', visible: true, variant: 'primary', event: 'audit' },
93 115 { text: '申请发货', visible: true, variant: 'outline', event: 'shipmentApply' },
94 116 { text: '取消', visible: true, variant: 'outline', event: 'cancel', style: { color: 'rgba(0,0,0,0.9)', border: '1px solid #DCDCDC' } },
  117 + { text: '上传质保书', visible: true, variant: 'outline', event: 'upload' },
95 118 ],
  119 + uploadFile: { id: '', name: '' },
96 120 dicOptions: {
97 121 AUDIT_STATUS: [],
98 122 SUPPLIER: [],
... ... @@ -105,13 +129,16 @@ export default {
105 129 const s = String((this.form && this.form.status) || '')
106 130 const e = String((this.form && this.form.examineStatus) || '')
107 131 const d = (this.form && this.form.showExamine) || false
  132 + const u = (this.form && this.form.showUpload) || false
  133 +
108 134 return {
109 135 isRefuse: e === 'REFUSE',
110 136 isAudit: e === 'AUDIT',
111 137 isAuditDetail: !this.form.sampleOrder,
112 138 canExamine: d,
113 139 canDeliveryApply: s === 'ISSUED' && (!this.form.freeze || false) && Number(this.form.totalQuantity) > 0,
114   - contractCreateBy: this.form.contractCreateBy
  140 + contractCreateBy: this.form.contractCreateBy,
  141 + showUpload: u,
115 142 }
116 143 },
117 144 displayButtons() {
... ... @@ -123,6 +150,7 @@ export default {
123 150 { ...this.buttons[2], visible: f.isAudit && f.canExamine && this.$auth.hasPermi('order-manage:order-list:approve') },
124 151 { ...this.buttons[3], visible: f.canDeliveryApply && this.$auth.hasPermi('order-manage:order-list:apply') },
125 152 { ...this.buttons[4], visible: f.isRefuse && f.contractCreateBy && this.$auth.hasPermi('order-manage:order-list:cancel') },
  153 + { ...this.buttons[5], visible: f.showUpload && this.$auth.hasPermi('order-manage:order-list:upload') },
126 154 ]
127 155 }
128 156 },
... ... @@ -151,6 +179,7 @@ export default {
151 179 audit: () => this.onAudit(),
152 180 shipmentApply: () => this.onShipmentApply(),
153 181 cancel: () => this.onCancel(),
  182 + upload: () => this.onUpload(),
154 183 }
155 184 const fn = map[btn.event]
156 185 if (typeof fn === 'function') fn()
... ... @@ -206,6 +235,37 @@ export default {
206 235 }
207 236 })
208 237 },
  238 + onUpload() {
  239 + this.$refs.uploadPopup && this.$refs.uploadPopup.open()
  240 + },
  241 + downloadFile,
  242 + closeUploadInfo() {
  243 + this.uploadFile = { id: '', name: '' };
  244 + this.$refs.uploadPopup && this.$refs.uploadPopup.close()
  245 + },
  246 + async onUploadSave() {
  247 + console.log('onUploadSave__this.uploadFile', this.uploadFile)
  248 + if (!this.uploadFile.id) {
  249 + uni.showToast({
  250 + title: '请上传质保书',
  251 + icon: 'none'
  252 + })
  253 + return
  254 + }
  255 + const params = {
  256 + warrantyCertificateFileId: this.uploadFile.id,
  257 + warrantyCertificateFileName: this.uploadFile.name,
  258 + id: this.form.id
  259 + }
  260 + try {
  261 + await uploadWarrantyCertificate(params)
  262 + uni.showToast({ title: '保存成功', icon: 'success' })
  263 + setTimeout(() => { uni.redirectTo({ url: '/pages/order_list/index' }) }, 300)
  264 + } catch (e) {
  265 + uni.showToast({ title: (e && e.msg) || '保存失败', icon: 'none' })
  266 + }
  267 + },
  268 +
209 269 loadAllDicData() {
210 270 const dicCodes = ['AUDIT_STATUS', 'SUPPLIER', 'APPLICABLE_STANDARD']
211 271 return getDicByCodes(dicCodes).then(results => {
... ... @@ -472,4 +532,82 @@ export default {
472 532 font-weight: 600;
473 533 }
474 534 }
  535 +
  536 +.dialog {
  537 + width: 100%;
  538 + overflow-y: auto;
  539 + padding: 32rpx 28rpx calc(20rpx + env(safe-area-inset-bottom));
  540 + background: #fff;
  541 + border-radius: 20rpx 20rpx 0 0;
  542 +
  543 + &_header {
  544 + position: relative;
  545 + text-align: center;
  546 + font-size: 34rpx;
  547 + font-weight: 600;
  548 + margin-bottom: 12rpx;
  549 + color: rgba(0, 0, 0, 0.9);
  550 + }
  551 +
  552 + &_body {
  553 + padding: 12rpx 4rpx 24rpx;
  554 + max-height: 70vh;
  555 + overflow-y: auto;
  556 +
  557 + }
  558 +
  559 + .split_body {
  560 + max-height: 60vh;
  561 + }
  562 +
  563 + &_footer {
  564 + padding-top: 12rpx;
  565 + display: flex;
  566 + justify-content: center;
  567 +
  568 + .btn {
  569 + width: 100%;
  570 + height: 80rpx;
  571 + line-height: 80rpx;
  572 + border-radius: 12rpx;
  573 + font-size: 32rpx;
  574 + background: $theme-primary;
  575 + color: #fff;
  576 +
  577 + &::after {
  578 + border: none;
  579 + }
  580 + }
  581 + }
  582 +}
  583 +
  584 +.dialog_close {
  585 + position: absolute;
  586 + right: 16rpx;
  587 + top: 0rpx;
  588 + width: 48rpx;
  589 + height: 48rpx;
  590 + background-image: url('~@/static/images/flow/close_icon.png');
  591 + background-repeat: no-repeat;
  592 + background-position: right center;
  593 + background-size: cover;
  594 +}
  595 +
  596 +.dialog_row {
  597 + margin-bottom: 24rpx;
  598 +}
  599 +
  600 +.dialog_label {
  601 + display: block;
  602 + margin-bottom: 12rpx;
  603 + font-size: 28rpx;
  604 + color: rgba(0, 0, 0, 0.9);
  605 +}
  606 +
  607 +.upload-show {
  608 + margin-top: 8rpx;
  609 + font-size: 26rpx;
  610 + color: rgba(0, 0, 0, 0.6);
  611 +}
  612 +
475 613 </style>
... ...
... ... @@ -72,9 +72,9 @@
72 72 <uni-easyinput v-model="form.priceListNo" placeholder="请输入价格表编号" :inputBorder="false" />
73 73 </template>
74 74 </uni-list-item>
75   - <uni-list-item title="开票情况">
  75 + <uni-list-item title="开票要求">
76 76 <template v-slot:footer>
77   - <uni-easyinput v-model="form.invoicingStatus" placeholder="请输入开票情况" :inputBorder="false" />
  77 + <uni-easyinput v-model="form.invoicingStatus" placeholder="请输入开票要求" :inputBorder="false" />
78 78 </template>
79 79 </uni-list-item>
80 80 <uni-list-item class="amount-item">
... ... @@ -155,7 +155,7 @@
155 155
156 156 </uni-list>
157 157 </scroll-view>
158   -
  158 +
159 159 <SingleSelectSheet :visible.sync="sheet.visible" :title="sheet.title" :options="sheet.options" v-model="sheet.value"
160 160 @confirm="onSheetConfirm" />
161 161 </view>
... ... @@ -230,7 +230,7 @@ export default {
230 230 const m = res.data || {}
231 231 const next = { ...this.form, ...m }
232 232 next.id = m.id || m.code || id
233   - next.purchaseOrderLineList = Array.isArray(m.purchaseOrderLineList) ? m.purchaseOrderLineList.map(x => ({
  233 + next.purchaseOrderLineList = Array.isArray(m.purchaseOrderLineList) ? m.purchaseOrderLineList.map(x => ({
234 234 ...x,
235 235 assessmentExceedsAgreement: Number(x.assessmentExceedsAgreement || 0).toFixed(2) || 0.00,
236 236 })) : []
... ...
... ... @@ -26,7 +26,7 @@
26 26
27 27 <view class="section">
28 28 <view class="row"><text class="label">价格表编号</text><text class="value">{{ form.priceListNo }}</text></view>
29   - <view class="row"><text class="label">开票情况</text><text class="value">{{ form.invoicingStatus }}</text></view>
  29 + <view class="row"><text class="label">开票要求</text><text class="value">{{ form.invoicingStatus }}</text></view>
30 30 <view class="row"><text class="label">运费</text><text class="value">{{ form.shippingCost }}</text></view>
31 31 <view class="row"><text class="label">执行标准</text><text class="value">{{ getDicName('APPLICABLE_STANDARD',
32 32 form.executionStandard, dicOptions.APPLICABLE_STANDARD) }}</text></view>
... ...