Showing
25 changed files
with
239 additions
and
45 deletions
| @@ -10,9 +10,12 @@ export const statusStyle = [ | @@ -10,9 +10,12 @@ export const statusStyle = [ | ||
| 10 | 10 | ||
| 11 | export const statusMap = { | 11 | export const statusMap = { |
| 12 | '生产中': '#2BA471', | 12 | '生产中': '#2BA471', |
| 13 | + '审核通过': '#2BA471', | ||
| 13 | '审核中': '#3D48A3', | 14 | '审核中': '#3D48A3', |
| 14 | '已签收': '#E7E7E7', | 15 | '已签收': '#E7E7E7', |
| 16 | + '已取消': '#000', | ||
| 15 | '已发货': '#D54941', | 17 | '已发货': '#D54941', |
| 18 | + '已驳回': '#D54941', | ||
| 16 | } | 19 | } |
| 17 | 20 | ||
| 18 | const baseUrl = '/contract'; | 21 | const baseUrl = '/contract'; |
| @@ -24,6 +27,15 @@ export function queryApi(params) { | @@ -24,6 +27,15 @@ export function queryApi(params) { | ||
| 24 | params | 27 | params |
| 25 | }) | 28 | }) |
| 26 | } | 29 | } |
| 30 | +//取消锁价无规格申请单申请 | ||
| 31 | +export function cancelApi(id) { | ||
| 32 | + return request({ | ||
| 33 | + url: `${baseUrl}/specLockDelayApplication/cancel`, | ||
| 34 | + method: 'get', | ||
| 35 | + params: { id } | ||
| 36 | + }) | ||
| 37 | +} | ||
| 38 | + | ||
| 27 | // 查询锁价无规格申请单列表 | 39 | // 查询锁价无规格申请单列表 |
| 28 | export function querySpecLockApi(params) { | 40 | export function querySpecLockApi(params) { |
| 29 | return request({ | 41 | return request({ |
| @@ -39,7 +39,7 @@ | @@ -39,7 +39,7 @@ | ||
| 39 | <view class="item-title"><text class="required">*</text><text>生产厂</text></view> | 39 | <view class="item-title"><text class="required">*</text><text>生产厂</text></view> |
| 40 | </template> | 40 | </template> |
| 41 | </uni-list-item> | 41 | </uni-list-item> |
| 42 | - <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" @change="onProductsChange" :options="productList" /> | 42 | + <ProductRel mode="add" :deliveryDate="form.orderDate" :deliveryDateBase="form.deliveryDate" @change="onProductsChange" :options="productList" /> |
| 43 | <uni-list-item title="合计人民币金额(大写)"> | 43 | <uni-list-item title="合计人民币金额(大写)"> |
| 44 | <template v-slot:footer> | 44 | <template v-slot:footer> |
| 45 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" disabled /> | 45 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" disabled /> |
| @@ -40,7 +40,7 @@ | @@ -40,7 +40,7 @@ | ||
| 40 | <uni-easyinput v-model="form.unit" :inputBorder="false" disabled /> | 40 | <uni-easyinput v-model="form.unit" :inputBorder="false" disabled /> |
| 41 | </template> | 41 | </template> |
| 42 | </uni-list-item> | 42 | </uni-list-item> |
| 43 | - <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" :list="productLineList" @change="onProductsChange" :options="productList" /> | 43 | + <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" :deliveryDate="form.orderDate" :list="productLineList" @change="onProductsChange" :options="productList" /> |
| 44 | <uni-list-item title="合计人民币金额(大写)"> | 44 | <uni-list-item title="合计人民币金额(大写)"> |
| 45 | <template v-slot:footer> | 45 | <template v-slot:footer> |
| 46 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" | 46 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" |
| @@ -134,7 +134,7 @@ | @@ -134,7 +134,7 @@ | ||
| 134 | </uni-list-item> | 134 | </uni-list-item> |
| 135 | <uni-list-item title="发货日期"> | 135 | <uni-list-item title="发货日期"> |
| 136 | <template v-slot:footer> | 136 | <template v-slot:footer> |
| 137 | - <uni-datetime-picker type="date" v-model="item.deliveryDate" @change="onDateChange(idx, $event)" /> | 137 | + <uni-datetime-picker :start="minDeliveryDate" type="date" v-model="item.deliveryDate" @change="onDateChange(idx, $event)" /> |
| 138 | </template> | 138 | </template> |
| 139 | </uni-list-item> | 139 | </uni-list-item> |
| 140 | </uni-list> | 140 | </uni-list> |
| @@ -205,6 +205,7 @@ export default { | @@ -205,6 +205,7 @@ export default { | ||
| 205 | list: { type: Array, default: () => [] }, | 205 | list: { type: Array, default: () => [] }, |
| 206 | max: { type: Number, default: 8 }, | 206 | max: { type: Number, default: 8 }, |
| 207 | deliveryDateBase: { type: String, default: '' }, | 207 | deliveryDateBase: { type: String, default: '' }, |
| 208 | + deliveryDate: { type: String, default: '' }, | ||
| 208 | options: { type: Array, default: () => [] } | 209 | options: { type: Array, default: () => [] } |
| 209 | }, | 210 | }, |
| 210 | components: { SingleSelectSheet }, | 211 | components: { SingleSelectSheet }, |
| @@ -222,6 +223,21 @@ export default { | @@ -222,6 +223,21 @@ export default { | ||
| 222 | label: o.label != null ? o.label : (o.text != null ? o.text : (o.name != null ? o.name : '')), | 223 | label: o.label != null ? o.label : (o.text != null ? o.text : (o.name != null ? o.name : '')), |
| 223 | value: o.value != null ? o.value : (o.id != null ? o.id : o.productId) | 224 | value: o.value != null ? o.value : (o.id != null ? o.id : o.productId) |
| 224 | })) | 225 | })) |
| 226 | + }, | ||
| 227 | + minDeliveryDate() { | ||
| 228 | + const s = this.deliveryDate | ||
| 229 | + if (!s) return '' | ||
| 230 | + const parts = String(s).split('-') | ||
| 231 | + const y = Number(parts[0]) | ||
| 232 | + const m = Number(parts[1]) | ||
| 233 | + const d = Number(parts[2]) | ||
| 234 | + if (!y || !m || !d) return '' | ||
| 235 | + const dt = new Date(y, m - 1, d) | ||
| 236 | + dt.setDate(dt.getDate() + 1) | ||
| 237 | + const yy = dt.getFullYear() | ||
| 238 | + const mm = String(dt.getMonth() + 1).padStart(2, '0') | ||
| 239 | + const dd = String(dt.getDate() - 1).padStart(2, '0') | ||
| 240 | + return `${yy}/${mm}/${dd}` | ||
| 225 | } | 241 | } |
| 226 | }, | 242 | }, |
| 227 | watch: { | 243 | watch: { |
| @@ -39,7 +39,7 @@ | @@ -39,7 +39,7 @@ | ||
| 39 | <view class="item-title"><text class="required">*</text><text>生产厂</text></view> | 39 | <view class="item-title"><text class="required">*</text><text>生产厂</text></view> |
| 40 | </template> | 40 | </template> |
| 41 | </uni-list-item> | 41 | </uni-list-item> |
| 42 | - <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" @change="onProductsChange" :options="productList" /> | 42 | + <ProductRel mode="add" :deliveryDate="form.orderDate" :deliveryDateBase="form.deliveryDate" @change="onProductsChange" :options="productList" /> |
| 43 | <uni-list-item title="合计人民币金额(大写)"> | 43 | <uni-list-item title="合计人民币金额(大写)"> |
| 44 | <template v-slot:footer> | 44 | <template v-slot:footer> |
| 45 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" disabled /> | 45 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" disabled /> |
| @@ -108,7 +108,7 @@ | @@ -108,7 +108,7 @@ | ||
| 108 | 数量 | 108 | 数量 |
| 109 | </div> | 109 | </div> |
| 110 | <div class="total-item-price"> | 110 | <div class="total-item-price"> |
| 111 | - {{ (totalQuantity || 0).toFixed(2) }}t | 111 | + {{ (totalQuantity || 0).toFixed(2) }}kg |
| 112 | </div> | 112 | </div> |
| 113 | </div> | 113 | </div> |
| 114 | <div class="total-item"> | 114 | <div class="total-item"> |
| @@ -41,7 +41,7 @@ | @@ -41,7 +41,7 @@ | ||
| 41 | </template> | 41 | </template> |
| 42 | </uni-list-item> | 42 | </uni-list-item> |
| 43 | 43 | ||
| 44 | - <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" :list="productLineList" @change="onProductsChange" :options="productList" /> | 44 | + <ProductRel mode="add" :deliveryDate="form.orderDate" :deliveryDateBase="form.deliveryDate" :list="productLineList" @change="onProductsChange" :options="productList" /> |
| 45 | 45 | ||
| 46 | <uni-list-item title="合计人民币金额(大写)"> | 46 | <uni-list-item title="合计人民币金额(大写)"> |
| 47 | <template v-slot:footer> | 47 | <template v-slot:footer> |
| @@ -134,7 +134,7 @@ | @@ -134,7 +134,7 @@ | ||
| 134 | </uni-list-item> | 134 | </uni-list-item> |
| 135 | <uni-list-item title="发货日期"> | 135 | <uni-list-item title="发货日期"> |
| 136 | <template v-slot:footer> | 136 | <template v-slot:footer> |
| 137 | - <uni-datetime-picker type="date" v-model="item.deliveryDate" @change="onDateChange(idx, $event)" /> | 137 | + <uni-datetime-picker :start="minDeliveryDate" type="date" v-model="item.deliveryDate" @change="onDateChange(idx, $event)" /> |
| 138 | </template> | 138 | </template> |
| 139 | </uni-list-item> | 139 | </uni-list-item> |
| 140 | </uni-list> | 140 | </uni-list> |
| @@ -205,6 +205,7 @@ export default { | @@ -205,6 +205,7 @@ export default { | ||
| 205 | list: { type: Array, default: () => [] }, | 205 | list: { type: Array, default: () => [] }, |
| 206 | max: { type: Number, default: 8 }, | 206 | max: { type: Number, default: 8 }, |
| 207 | deliveryDateBase: { type: String, default: '' }, | 207 | deliveryDateBase: { type: String, default: '' }, |
| 208 | + deliveryDate: { type: String, default: '' }, | ||
| 208 | options: { type: Array, default: () => [] } | 209 | options: { type: Array, default: () => [] } |
| 209 | }, | 210 | }, |
| 210 | components: { SingleSelectSheet }, | 211 | components: { SingleSelectSheet }, |
| @@ -244,6 +245,23 @@ export default { | @@ -244,6 +245,23 @@ export default { | ||
| 244 | this.items = init | 245 | this.items = init |
| 245 | this.recalculateAll() | 246 | this.recalculateAll() |
| 246 | }, | 247 | }, |
| 248 | + computed: { | ||
| 249 | + minDeliveryDate() { | ||
| 250 | + const s = this.deliveryDate | ||
| 251 | + if (!s) return '' | ||
| 252 | + const parts = String(s).split('-') | ||
| 253 | + const y = Number(parts[0]) | ||
| 254 | + const m = Number(parts[1]) | ||
| 255 | + const d = Number(parts[2]) | ||
| 256 | + if (!y || !m || !d) return '' | ||
| 257 | + const dt = new Date(y, m - 1, d) | ||
| 258 | + dt.setDate(dt.getDate() + 1) | ||
| 259 | + const yy = dt.getFullYear() | ||
| 260 | + const mm = String(dt.getMonth() + 1).padStart(2, '0') | ||
| 261 | + const dd = String(dt.getDate() - 1).padStart(2, '0') | ||
| 262 | + return `${yy}/${mm}/${dd}` | ||
| 263 | + } | ||
| 264 | + }, | ||
| 247 | methods: { | 265 | methods: { |
| 248 | defaultItem() { | 266 | defaultItem() { |
| 249 | return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', status: '', quantity: '', unitPrice: '', processingFee: undefined, amountExcludingTax: 0, totalAmount: 0, deliveryDate: '' } | 267 | return { productId: '', productName: '', industry: '', brand: '', quality: '', thickness: '', thicknessTolPos: '', thicknessTolNeg: '', width: '', widthTolPos: '', widthTolNeg: '', length: '', lengthTolPos: '', lengthTolNeg: '', status: '', quantity: '', unitPrice: '', processingFee: undefined, amountExcludingTax: 0, totalAmount: 0, deliveryDate: '' } |
| @@ -39,7 +39,7 @@ | @@ -39,7 +39,7 @@ | ||
| 39 | <view class="item-title"><text class="required">*</text><text>生产厂</text></view> | 39 | <view class="item-title"><text class="required">*</text><text>生产厂</text></view> |
| 40 | </template> | 40 | </template> |
| 41 | </uni-list-item> | 41 | </uni-list-item> |
| 42 | - <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" @change="onProductsChange" :options="productList" /> | 42 | + <ProductRel mode="add" :deliveryDate="form.orderDate" :deliveryDateBase="form.deliveryDate" @change="onProductsChange" :options="productList" /> |
| 43 | <uni-list-item title="合计人民币金额(大写)"> | 43 | <uni-list-item title="合计人民币金额(大写)"> |
| 44 | <template v-slot:footer> | 44 | <template v-slot:footer> |
| 45 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" disabled /> | 45 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" disabled /> |
| @@ -41,7 +41,7 @@ | @@ -41,7 +41,7 @@ | ||
| 41 | </template> | 41 | </template> |
| 42 | </uni-list-item> | 42 | </uni-list-item> |
| 43 | 43 | ||
| 44 | - <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" :list="productLineList" @change="onProductsChange" :options="productList" /> | 44 | + <ProductRel mode="add" :deliveryDate="form.orderDate" :deliveryDateBase="form.deliveryDate" :list="productLineList" @change="onProductsChange" :options="productList" /> |
| 45 | 45 | ||
| 46 | <uni-list-item title="合计人民币金额(大写)"> | 46 | <uni-list-item title="合计人民币金额(大写)"> |
| 47 | <template v-slot:footer> | 47 | <template v-slot:footer> |
| @@ -134,7 +134,7 @@ | @@ -134,7 +134,7 @@ | ||
| 134 | </uni-list-item> | 134 | </uni-list-item> |
| 135 | <uni-list-item title="发货日期"> | 135 | <uni-list-item title="发货日期"> |
| 136 | <template v-slot:footer> | 136 | <template v-slot:footer> |
| 137 | - <uni-datetime-picker type="date" v-model="item.deliveryDate" @change="onDateChange(idx, $event)" /> | 137 | + <uni-datetime-picker :start="minDeliveryDate" type="date" v-model="item.deliveryDate" @change="onDateChange(idx, $event)" /> |
| 138 | </template> | 138 | </template> |
| 139 | </uni-list-item> | 139 | </uni-list-item> |
| 140 | </uni-list> | 140 | </uni-list> |
| @@ -205,6 +205,7 @@ export default { | @@ -205,6 +205,7 @@ export default { | ||
| 205 | list: { type: Array, default: () => [] }, | 205 | list: { type: Array, default: () => [] }, |
| 206 | max: { type: Number, default: 8 }, | 206 | max: { type: Number, default: 8 }, |
| 207 | deliveryDateBase: { type: String, default: '' }, | 207 | deliveryDateBase: { type: String, default: '' }, |
| 208 | + deliveryDate: { type: String, default: '' }, | ||
| 208 | options: { type: Array, default: () => [] } | 209 | options: { type: Array, default: () => [] } |
| 209 | }, | 210 | }, |
| 210 | components: { SingleSelectSheet }, | 211 | components: { SingleSelectSheet }, |
| @@ -222,6 +223,21 @@ export default { | @@ -222,6 +223,21 @@ export default { | ||
| 222 | label: o.label != null ? o.label : (o.text != null ? o.text : (o.name != null ? o.name : '')), | 223 | label: o.label != null ? o.label : (o.text != null ? o.text : (o.name != null ? o.name : '')), |
| 223 | value: o.value != null ? o.value : (o.id != null ? o.id : o.productId) | 224 | value: o.value != null ? o.value : (o.id != null ? o.id : o.productId) |
| 224 | })) | 225 | })) |
| 226 | + }, | ||
| 227 | + minDeliveryDate() { | ||
| 228 | + const s = this.deliveryDate | ||
| 229 | + if (!s) return '' | ||
| 230 | + const parts = String(s).split('-') | ||
| 231 | + const y = Number(parts[0]) | ||
| 232 | + const m = Number(parts[1]) | ||
| 233 | + const d = Number(parts[2]) | ||
| 234 | + if (!y || !m || !d) return '' | ||
| 235 | + const dt = new Date(y, m - 1, d) | ||
| 236 | + dt.setDate(dt.getDate() + 1) | ||
| 237 | + const yy = dt.getFullYear() | ||
| 238 | + const mm = String(dt.getMonth() + 1).padStart(2, '0') | ||
| 239 | + const dd = String(dt.getDate() - 1).padStart(2, '0') | ||
| 240 | + return `${yy}/${mm}/${dd}` | ||
| 225 | } | 241 | } |
| 226 | }, | 242 | }, |
| 227 | watch: { | 243 | watch: { |
| @@ -39,7 +39,7 @@ | @@ -39,7 +39,7 @@ | ||
| 39 | <view class="item-title"><text class="required">*</text><text>生产厂</text></view> | 39 | <view class="item-title"><text class="required">*</text><text>生产厂</text></view> |
| 40 | </template> | 40 | </template> |
| 41 | </uni-list-item> | 41 | </uni-list-item> |
| 42 | - <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" @change="onProductsChange" :options="productList" :rawToProdRatioList="rawToProdRatioList" /> | 42 | + <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" :deliveryDate="form.orderDate" @change="onProductsChange" :options="productList" :rawToProdRatioList="rawToProdRatioList" /> |
| 43 | <uni-list-item title="合计人民币金额(大写)"> | 43 | <uni-list-item title="合计人民币金额(大写)"> |
| 44 | <template v-slot:footer> | 44 | <template v-slot:footer> |
| 45 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" disabled /> | 45 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" disabled /> |
| @@ -41,7 +41,7 @@ | @@ -41,7 +41,7 @@ | ||
| 41 | </template> | 41 | </template> |
| 42 | </uni-list-item> | 42 | </uni-list-item> |
| 43 | 43 | ||
| 44 | - <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" :list="productLineList" @change="onProductsChange" :options="productList" /> | 44 | + <ProductRel mode="add" :deliveryDate="form.orderDate" :deliveryDateBase="form.deliveryDate" :list="productLineList" @change="onProductsChange" :options="productList" /> |
| 45 | 45 | ||
| 46 | <uni-list-item title="合计人民币金额(大写)"> | 46 | <uni-list-item title="合计人民币金额(大写)"> |
| 47 | <template v-slot:footer> | 47 | <template v-slot:footer> |
| @@ -140,7 +140,7 @@ | @@ -140,7 +140,7 @@ | ||
| 140 | </uni-list-item> | 140 | </uni-list-item> |
| 141 | <uni-list-item title="发货日期"> | 141 | <uni-list-item title="发货日期"> |
| 142 | <template v-slot:footer> | 142 | <template v-slot:footer> |
| 143 | - <uni-datetime-picker type="date" v-model="item.deliveryDate" @change="onDateChange(idx, $event)" /> | 143 | + <uni-datetime-picker :start="minDeliveryDate" type="date" v-model="item.deliveryDate" @change="onDateChange(idx, $event)" /> |
| 144 | </template> | 144 | </template> |
| 145 | </uni-list-item> | 145 | </uni-list-item> |
| 146 | </uni-list> | 146 | </uni-list> |
| @@ -213,6 +213,7 @@ export default { | @@ -213,6 +213,7 @@ export default { | ||
| 213 | max: { type: Number, default: 8 }, | 213 | max: { type: Number, default: 8 }, |
| 214 | deliveryDateBase: { type: String, default: '' }, | 214 | deliveryDateBase: { type: String, default: '' }, |
| 215 | options: { type: Array, default: () => [] }, | 215 | options: { type: Array, default: () => [] }, |
| 216 | + deliveryDate: { type: String, default: '' }, | ||
| 216 | rawToProdRatioList: { type: Array, default: () => [] } | 217 | rawToProdRatioList: { type: Array, default: () => [] } |
| 217 | }, | 218 | }, |
| 218 | components: { SingleSelectSheet }, | 219 | components: { SingleSelectSheet }, |
| @@ -230,14 +231,28 @@ export default { | @@ -230,14 +231,28 @@ export default { | ||
| 230 | label: o.label != null ? o.label : (o.text != null ? o.text : (o.name != null ? o.name : '')), | 231 | label: o.label != null ? o.label : (o.text != null ? o.text : (o.name != null ? o.name : '')), |
| 231 | value: o.value != null ? o.value : (o.id != null ? o.id : o.rawProductId) | 232 | value: o.value != null ? o.value : (o.id != null ? o.id : o.rawProductId) |
| 232 | })) | 233 | })) |
| 233 | - } | ||
| 234 | - , | 234 | + }, |
| 235 | ratioOptions() { | 235 | ratioOptions() { |
| 236 | const list = Array.isArray(this.rawToProdRatioList) ? this.rawToProdRatioList : [] | 236 | const list = Array.isArray(this.rawToProdRatioList) ? this.rawToProdRatioList : [] |
| 237 | return list.map(o => ({ | 237 | return list.map(o => ({ |
| 238 | label: o.label != null ? o.label : (o.text != null ? o.text : (o.name != null ? o.name : '')), | 238 | label: o.label != null ? o.label : (o.text != null ? o.text : (o.name != null ? o.name : '')), |
| 239 | value: o.value != null ? o.value : (o.id != null ? o.id : o.code) | 239 | value: o.value != null ? o.value : (o.id != null ? o.id : o.code) |
| 240 | })) | 240 | })) |
| 241 | + }, | ||
| 242 | + minDeliveryDate() { | ||
| 243 | + const s = this.deliveryDate | ||
| 244 | + if (!s) return '' | ||
| 245 | + const parts = String(s).split('-') | ||
| 246 | + const y = Number(parts[0]) | ||
| 247 | + const m = Number(parts[1]) | ||
| 248 | + const d = Number(parts[2]) | ||
| 249 | + if (!y || !m || !d) return '' | ||
| 250 | + const dt = new Date(y, m - 1, d) | ||
| 251 | + dt.setDate(dt.getDate() + 1) | ||
| 252 | + const yy = dt.getFullYear() | ||
| 253 | + const mm = String(dt.getMonth() + 1).padStart(2, '0') | ||
| 254 | + const dd = String(dt.getDate() - 1).padStart(2, '0') | ||
| 255 | + return `${yy}/${mm}/${dd}` | ||
| 241 | } | 256 | } |
| 242 | }, | 257 | }, |
| 243 | watch: { | 258 | watch: { |
| @@ -39,7 +39,7 @@ | @@ -39,7 +39,7 @@ | ||
| 39 | <view class="item-title"><text class="required">*</text><text>生产厂</text></view> | 39 | <view class="item-title"><text class="required">*</text><text>生产厂</text></view> |
| 40 | </template> | 40 | </template> |
| 41 | </uni-list-item> | 41 | </uni-list-item> |
| 42 | - <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" @change="onProductsChange" :options="productList" /> | 42 | + <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" :deliveryDate="form.orderDate" @change="onProductsChange" :options="productList" /> |
| 43 | <uni-list-item title="合计人民币金额(大写)"> | 43 | <uni-list-item title="合计人民币金额(大写)"> |
| 44 | <template v-slot:footer> | 44 | <template v-slot:footer> |
| 45 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" disabled /> | 45 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" disabled /> |
| @@ -41,7 +41,7 @@ | @@ -41,7 +41,7 @@ | ||
| 41 | </template> | 41 | </template> |
| 42 | </uni-list-item> | 42 | </uni-list-item> |
| 43 | 43 | ||
| 44 | - <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" :list="productLineList" @change="onProductsChange" :options="productList" /> | 44 | + <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" :deliveryDate="form.orderDate" :list="productLineList" @change="onProductsChange" :options="productList" /> |
| 45 | 45 | ||
| 46 | <uni-list-item title="合计人民币金额(大写)"> | 46 | <uni-list-item title="合计人民币金额(大写)"> |
| 47 | <template v-slot:footer> | 47 | <template v-slot:footer> |
| @@ -129,7 +129,7 @@ | @@ -129,7 +129,7 @@ | ||
| 129 | </uni-list-item> | 129 | </uni-list-item> |
| 130 | <uni-list-item title="发货日期"> | 130 | <uni-list-item title="发货日期"> |
| 131 | <template v-slot:footer> | 131 | <template v-slot:footer> |
| 132 | - <uni-datetime-picker type="date" v-model="item.deliveryDate" @change="onDateChange(idx, $event)" /> | 132 | + <uni-datetime-picker :start="minDeliveryDate" type="date" v-model="item.deliveryDate" @change="onDateChange(idx, $event)" /> |
| 133 | </template> | 133 | </template> |
| 134 | </uni-list-item> | 134 | </uni-list-item> |
| 135 | </uni-list> | 135 | </uni-list> |
| @@ -200,6 +200,7 @@ export default { | @@ -200,6 +200,7 @@ export default { | ||
| 200 | list: { type: Array, default: () => [] }, | 200 | list: { type: Array, default: () => [] }, |
| 201 | max: { type: Number, default: 8 }, | 201 | max: { type: Number, default: 8 }, |
| 202 | deliveryDateBase: { type: String, default: '' }, | 202 | deliveryDateBase: { type: String, default: '' }, |
| 203 | + deliveryDate: { type: String, default: '' }, | ||
| 203 | options: { type: Array, default: () => [] } | 204 | options: { type: Array, default: () => [] } |
| 204 | }, | 205 | }, |
| 205 | components: { SingleSelectSheet }, | 206 | components: { SingleSelectSheet }, |
| @@ -217,6 +218,21 @@ export default { | @@ -217,6 +218,21 @@ export default { | ||
| 217 | label: o.label != null ? o.label : (o.text != null ? o.text : (o.name != null ? o.name : '')), | 218 | label: o.label != null ? o.label : (o.text != null ? o.text : (o.name != null ? o.name : '')), |
| 218 | value: o.value != null ? o.value : (o.id != null ? o.id : o.productId) | 219 | value: o.value != null ? o.value : (o.id != null ? o.id : o.productId) |
| 219 | })) | 220 | })) |
| 221 | + }, | ||
| 222 | + minDeliveryDate() { | ||
| 223 | + const s = this.deliveryDate | ||
| 224 | + if (!s) return '' | ||
| 225 | + const parts = String(s).split('-') | ||
| 226 | + const y = Number(parts[0]) | ||
| 227 | + const m = Number(parts[1]) | ||
| 228 | + const d = Number(parts[2]) | ||
| 229 | + if (!y || !m || !d) return '' | ||
| 230 | + const dt = new Date(y, m - 1, d) | ||
| 231 | + dt.setDate(dt.getDate() + 1) | ||
| 232 | + const yy = dt.getFullYear() | ||
| 233 | + const mm = String(dt.getMonth() + 1).padStart(2, '0') | ||
| 234 | + const dd = String(dt.getDate() - 1).padStart(2, '0') | ||
| 235 | + return `${yy}/${mm}/${dd}` | ||
| 220 | } | 236 | } |
| 221 | }, | 237 | }, |
| 222 | watch: { | 238 | watch: { |
| @@ -39,7 +39,7 @@ | @@ -39,7 +39,7 @@ | ||
| 39 | <view class="item-title"><text class="required">*</text><text>生产厂</text></view> | 39 | <view class="item-title"><text class="required">*</text><text>生产厂</text></view> |
| 40 | </template> | 40 | </template> |
| 41 | </uni-list-item> | 41 | </uni-list-item> |
| 42 | - <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" @change="onProductsChange" :options="productList" /> | 42 | + <ProductRel mode="add" :deliveryDate="form.orderDate" :deliveryDateBase="form.deliveryDate" @change="onProductsChange" :options="productList" /> |
| 43 | <uni-list-item title="合计人民币金额(大写)"> | 43 | <uni-list-item title="合计人民币金额(大写)"> |
| 44 | <template v-slot:footer> | 44 | <template v-slot:footer> |
| 45 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" disabled /> | 45 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" disabled /> |
| @@ -41,7 +41,7 @@ | @@ -41,7 +41,7 @@ | ||
| 41 | </template> | 41 | </template> |
| 42 | </uni-list-item> | 42 | </uni-list-item> |
| 43 | 43 | ||
| 44 | - <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" :list="productLineList" @change="onProductsChange" :options="productList" /> | 44 | + <ProductRel mode="add" :deliveryDate="form.orderDate" :deliveryDateBase="form.deliveryDate" :list="productLineList" @change="onProductsChange" :options="productList" /> |
| 45 | 45 | ||
| 46 | <uni-list-item title="合计人民币金额(大写)"> | 46 | <uni-list-item title="合计人民币金额(大写)"> |
| 47 | <template v-slot:footer> | 47 | <template v-slot:footer> |
| @@ -129,7 +129,7 @@ | @@ -129,7 +129,7 @@ | ||
| 129 | </uni-list-item> | 129 | </uni-list-item> |
| 130 | <uni-list-item title="发货日期"> | 130 | <uni-list-item title="发货日期"> |
| 131 | <template v-slot:footer> | 131 | <template v-slot:footer> |
| 132 | - <uni-datetime-picker type="date" v-model="item.deliveryDate" @change="onDateChange(idx, $event)" /> | 132 | + <uni-datetime-picker :start="minDeliveryDate" type="date" v-model="item.deliveryDate" @change="onDateChange(idx, $event)" /> |
| 133 | </template> | 133 | </template> |
| 134 | </uni-list-item> | 134 | </uni-list-item> |
| 135 | </uni-list> | 135 | </uni-list> |
| @@ -200,6 +200,7 @@ export default { | @@ -200,6 +200,7 @@ export default { | ||
| 200 | list: { type: Array, default: () => [] }, | 200 | list: { type: Array, default: () => [] }, |
| 201 | max: { type: Number, default: 8 }, | 201 | max: { type: Number, default: 8 }, |
| 202 | deliveryDateBase: { type: String, default: '' }, | 202 | deliveryDateBase: { type: String, default: '' }, |
| 203 | + deliveryDate: { type: String, default: '' }, | ||
| 203 | options: { type: Array, default: () => [] } | 204 | options: { type: Array, default: () => [] } |
| 204 | }, | 205 | }, |
| 205 | components: { SingleSelectSheet }, | 206 | components: { SingleSelectSheet }, |
| @@ -217,6 +218,22 @@ export default { | @@ -217,6 +218,22 @@ export default { | ||
| 217 | label: o.label != null ? o.label : (o.text != null ? o.text : (o.name != null ? o.name : '')), | 218 | label: o.label != null ? o.label : (o.text != null ? o.text : (o.name != null ? o.name : '')), |
| 218 | value: o.value != null ? o.value : (o.id != null ? o.id : o.productId) | 219 | value: o.value != null ? o.value : (o.id != null ? o.id : o.productId) |
| 219 | })) | 220 | })) |
| 221 | + }, | ||
| 222 | + | ||
| 223 | + minDeliveryDate() { | ||
| 224 | + const s = this.deliveryDate | ||
| 225 | + if (!s) return '' | ||
| 226 | + const parts = String(s).split('-') | ||
| 227 | + const y = Number(parts[0]) | ||
| 228 | + const m = Number(parts[1]) | ||
| 229 | + const d = Number(parts[2]) | ||
| 230 | + if (!y || !m || !d) return '' | ||
| 231 | + const dt = new Date(y, m - 1, d) | ||
| 232 | + dt.setDate(dt.getDate() + 1) | ||
| 233 | + const yy = dt.getFullYear() | ||
| 234 | + const mm = String(dt.getMonth() + 1).padStart(2, '0') | ||
| 235 | + const dd = String(dt.getDate() - 1).padStart(2, '0') | ||
| 236 | + return `${yy}/${mm}/${dd}` | ||
| 220 | } | 237 | } |
| 221 | }, | 238 | }, |
| 222 | watch: { | 239 | watch: { |
| @@ -25,7 +25,7 @@ | @@ -25,7 +25,7 @@ | ||
| 25 | 25 | ||
| 26 | <script> | 26 | <script> |
| 27 | import DetailButtons from '@/components/detail-buttons/index.vue' | 27 | import DetailButtons from '@/components/detail-buttons/index.vue' |
| 28 | -import { getSpecDetailApi } from '@/api/contract.js' | 28 | +import { getSpecDetailApi, cancelApi } from '@/api/contract.js' |
| 29 | 29 | ||
| 30 | export default { | 30 | export default { |
| 31 | components: { DetailButtons }, | 31 | components: { DetailButtons }, |
| @@ -35,14 +35,24 @@ export default { | @@ -35,14 +35,24 @@ export default { | ||
| 35 | form: { | 35 | form: { |
| 36 | id: '', contractCode: '', customerName: '', deptName: '', workshopName: '', contractType: '', contractDocumentDate: '', applicationCount: '', totalQuantity: '', specLockDate: '', delayReason: '', orderDate: '' | 36 | id: '', contractCode: '', customerName: '', deptName: '', workshopName: '', contractType: '', contractDocumentDate: '', applicationCount: '', totalQuantity: '', specLockDate: '', delayReason: '', orderDate: '' |
| 37 | 37 | ||
| 38 | - } | 38 | + }, |
| 39 | + buttons: [ | ||
| 40 | + { text: '编辑', variant: 'outline', visible: true, event: 'edit' }, | ||
| 41 | + { text: '审核', variant: 'outline', visible: true, event: 'audit' }, | ||
| 42 | + { text: '审核详情', variant: 'outline', visible: true, event: 'auditDetail' }, | ||
| 43 | + { text: '取消', variant: 'danger', visible: true, event: 'cancel' }, | ||
| 44 | + ] | ||
| 39 | } | 45 | } |
| 40 | }, | 46 | }, |
| 41 | computed: { | 47 | computed: { |
| 42 | displayButtons() { | 48 | displayButtons() { |
| 49 | + const s = this.form.approvalStatus || false | ||
| 50 | + const e = this.form.showExamine || false | ||
| 43 | return [ | 51 | return [ |
| 44 | - // { text: '删除', variant: 'danger' }, | ||
| 45 | - { text: '编辑', variant: 'outline' } | 52 | + { ...this.buttons[0], visible: (s === 'REFUSE' && this.$auth.hasPermi('contract-manage:unlocked-operation-application:modify')) }, |
| 53 | + { ...this.buttons[1], visible: (s === 'AUDIT' && e && this.$auth.hasPermi('contract-manage:unlocked-operation-application:approve')) }, | ||
| 54 | + { ...this.buttons[2], visible: (s !== 'REFUSE' && this.$auth.hasPermi('contract-manage:unlocked-operation-application:review')) }, | ||
| 55 | + { ...this.buttons[3], visible: (s === 'REFUSE' && this.$auth.hasPermi('contract-manage:unlocked-operation-application:cancel')) }, | ||
| 46 | ] | 56 | ] |
| 47 | } | 57 | } |
| 48 | }, | 58 | }, |
| @@ -60,6 +70,7 @@ export default { | @@ -60,6 +70,7 @@ export default { | ||
| 60 | const m = d || {} | 70 | const m = d || {} |
| 61 | const yesNo = m.hasFrameworkAgreement === 'Y' || m.hasFrameworkAgreement === true | 71 | const yesNo = m.hasFrameworkAgreement === 'Y' || m.hasFrameworkAgreement === true |
| 62 | this.form = { | 72 | this.form = { |
| 73 | + ...res.data || {}, | ||
| 63 | id: m.id || '', | 74 | id: m.id || '', |
| 64 | contractCode: m.contractCode || '', | 75 | contractCode: m.contractCode || '', |
| 65 | customerName: m.customerName || (m.customer && m.customer.name) || '', | 76 | customerName: m.customerName || (m.customer && m.customer.name) || '', |
| @@ -75,13 +86,52 @@ export default { | @@ -75,13 +86,52 @@ export default { | ||
| 75 | } | 86 | } |
| 76 | }) | 87 | }) |
| 77 | }, | 88 | }, |
| 89 | + onEdit() { | ||
| 90 | + if (!this.form.id) return | ||
| 91 | + uni.navigateTo({ url: `/pages/contract_unlocked_operation/modify?id=${this.form.id}` }) | ||
| 92 | + }, | ||
| 93 | + onAudit(id, type) { | ||
| 94 | + const CACHE_KEY = 'sourceBusinessId' | ||
| 95 | + // const TYPE = 'contractType' | ||
| 96 | + // uni.setStorageSync(TYPE, type) | ||
| 97 | + uni.setStorageSync(CACHE_KEY, id) | ||
| 98 | + uni.navigateTo({ url: '/pages/flow/audit' }) | ||
| 99 | + }, | ||
| 100 | + onAuditDetail(id, type) { | ||
| 101 | + console.log(id,'id') | ||
| 102 | + const CACHE_KEY = 'sourceBusinessId' | ||
| 103 | + // const TYPE = 'contractType' | ||
| 104 | + // uni.setStorageSync(TYPE, type) | ||
| 105 | + uni.setStorageSync(CACHE_KEY, id) | ||
| 106 | + uni.navigateTo({ url: '/pages/flow/audit_detail' }) | ||
| 107 | + }, | ||
| 108 | + onCancel(id) { | ||
| 109 | + uni.showModal({ | ||
| 110 | + title: '确认取消吗?', | ||
| 111 | + success: (res) => { | ||
| 112 | + if (res.confirm) { | ||
| 113 | + uni.showLoading({ title: '取消中...' }) | ||
| 114 | + cancelApi(id).then(res => { | ||
| 115 | + uni.hideLoading() | ||
| 116 | + if (res.code === 200) { | ||
| 117 | + uni.showToast({ title: '取消成功' }) | ||
| 118 | + this.loadDetail() | ||
| 119 | + } else { | ||
| 120 | + uni.showToast({ title: res.msg || '取消失败' }) | ||
| 121 | + } | ||
| 122 | + }) | ||
| 123 | + } | ||
| 124 | + } | ||
| 125 | + }) | ||
| 126 | + }, | ||
| 78 | handleButtonClick(btn) { | 127 | handleButtonClick(btn) { |
| 79 | - if (btn && btn.text === '编辑') { | ||
| 80 | - return uni.navigateTo({ url: `/pages/contract_unlocked_operation/modify?id=${this.id}` }) | ||
| 81 | - } | ||
| 82 | - // if (btn && btn.text === '删除') { | ||
| 83 | - // uni.showToast({ title: '暂未接入删除接口', icon: 'none' }) | ||
| 84 | - // } | 128 | + if (!btn || btn.disabled) return |
| 129 | + if (typeof btn.onClick === 'function') return btn.onClick(this.form, btn.params) | ||
| 130 | + const e = btn.event || '' | ||
| 131 | + if (e === 'edit') return this.onEdit(btn && btn.params) | ||
| 132 | + if (e === 'audit') return this.onAudit(this.form.id || '') | ||
| 133 | + if (e === 'auditDetail') return this.onAuditDetail(this.form.id || '') | ||
| 134 | + if (e === 'cancel') return this.onCancel(this.form.id || '') | ||
| 85 | } | 135 | } |
| 86 | } | 136 | } |
| 87 | } | 137 | } |
| @@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
| 6 | cancelButton="none" bgColor="#F3F3F3" textColor="rgba(0,0,0,0.4)" @confirm="search" @input="onSearchInput" /> | 6 | cancelButton="none" bgColor="#F3F3F3" textColor="rgba(0,0,0,0.4)" @confirm="search" @input="onSearchInput" /> |
| 7 | <view class="tool-icons"> | 7 | <view class="tool-icons"> |
| 8 | <!-- <image class="tool-icon" src="/static/images/dev_manage/add_icon.png" @click="onAdd" /> --> | 8 | <!-- <image class="tool-icon" src="/static/images/dev_manage/add_icon.png" @click="onAdd" /> --> |
| 9 | - <!-- <image class="tool-icon" src="/static/images/dev_manage/filter_icon.png" @click="openFilter" /> --> | 9 | + <image class="tool-icon" src="/static/images/dev_manage/filter_icon.png" @click="openFilter" /> |
| 10 | </view> | 10 | </view> |
| 11 | </view> | 11 | </view> |
| 12 | 12 | ||
| @@ -39,22 +39,19 @@ | @@ -39,22 +39,19 @@ | ||
| 39 | </card-list> | 39 | </card-list> |
| 40 | </view> | 40 | </view> |
| 41 | <!-- 筛选弹框 --> | 41 | <!-- 筛选弹框 --> |
| 42 | - <!-- <filter-modal :visible.sync="filterVisible" :value.sync="filterForm" title="筛选" @reset="onFilterReset" | 42 | + <filter-modal :visible.sync="filterVisible" :value.sync="filterForm" title="筛选" @reset="onFilterReset" |
| 43 | @confirm="onFilterConfirm"> | 43 | @confirm="onFilterConfirm"> |
| 44 | <template v-slot="{ model }"> | 44 | <template v-slot="{ model }"> |
| 45 | <view class="filter-form"> | 45 | <view class="filter-form"> |
| 46 | <view class="form-item"> | 46 | <view class="form-item"> |
| 47 | - <view class="label">品种</view> | 47 | + <view class="label">审核状态</view> |
| 48 | <uni-data-checkbox mode="tag" :multiple="false" :value-field="'value'" :text-field="'text'" | 48 | <uni-data-checkbox mode="tag" :multiple="false" :value-field="'value'" :text-field="'text'" |
| 49 | - v-model="model.materialTypeId" @change="onMaterialTypeChange" :localdata="materialTypeOptions" /> | ||
| 50 | - </view> | ||
| 51 | - <view class="form-item"> | ||
| 52 | - <view class="label">授权截止时间</view> | ||
| 53 | - <uni-datetime-picker type="daterange" v-model="model.dateRange" start="2023-01-01" /> | 49 | + v-model="model.approvalStatus" @change="onApprovalStatusChange" :localdata="auditStatusOptions" /> |
| 54 | </view> | 50 | </view> |
| 51 | + | ||
| 55 | </view> | 52 | </view> |
| 56 | </template> | 53 | </template> |
| 57 | - </filter-modal> --> | 54 | + </filter-modal> |
| 58 | </view> | 55 | </view> |
| 59 | </template> | 56 | </template> |
| 60 | 57 | ||
| @@ -74,13 +71,14 @@ export default { | @@ -74,13 +71,14 @@ export default { | ||
| 74 | // 批量选择 | 71 | // 批量选择 |
| 75 | batchMode: false, | 72 | batchMode: false, |
| 76 | // 给到 card 的筛选值 | 73 | // 给到 card 的筛选值 |
| 77 | - query: { materialTypeId: '', dateRange: [] }, | 74 | + query: { materialTypeId: '', dateRange: [], approvalStatus: '' }, |
| 78 | extraParams: {}, | 75 | extraParams: {}, |
| 79 | 76 | ||
| 80 | // 筛选弹框 | 77 | // 筛选弹框 |
| 81 | filterVisible: false, | 78 | filterVisible: false, |
| 82 | - filterForm: { materialTypeId: '', dateRange: [] }, | 79 | + filterForm: { materialTypeId: '', dateRange: [], approvalStatus: '' }, |
| 83 | materialTypeOptions: [], | 80 | materialTypeOptions: [], |
| 81 | + auditStatusOptions: [], | ||
| 84 | statusMap | 82 | statusMap |
| 85 | } | 83 | } |
| 86 | 84 | ||
| @@ -93,6 +91,7 @@ export default { | @@ -93,6 +91,7 @@ export default { | ||
| 93 | }, | 91 | }, |
| 94 | created() { | 92 | created() { |
| 95 | this.getProductVariety(); | 93 | this.getProductVariety(); |
| 94 | + this.loadAuditStatusOptions(); | ||
| 96 | }, | 95 | }, |
| 97 | // 页面触底兜底:当页面自身滚动到底部时,转调卡片组件加载更多 | 96 | // 页面触底兜底:当页面自身滚动到底部时,转调卡片组件加载更多 |
| 98 | onReachBottom() { | 97 | onReachBottom() { |
| @@ -162,6 +161,9 @@ export default { | @@ -162,6 +161,9 @@ export default { | ||
| 162 | }, | 161 | }, |
| 163 | onFilterConfirm(payload) { | 162 | onFilterConfirm(payload) { |
| 164 | // 合并筛选值 | 163 | // 合并筛选值 |
| 164 | + if ((payload.approvalStatus === '' || payload.approvalStatus == null) && this.filterForm.approvalStatus !== '') { | ||
| 165 | + payload.approvalStatus = this.filterForm.approvalStatus | ||
| 166 | + } | ||
| 165 | this.query = { ...this.query, ...payload } | 167 | this.query = { ...this.query, ...payload } |
| 166 | }, | 168 | }, |
| 167 | onMaterialTypeChange(e) { | 169 | onMaterialTypeChange(e) { |
| @@ -198,6 +200,22 @@ export default { | @@ -198,6 +200,22 @@ export default { | ||
| 198 | })) | 200 | })) |
| 199 | }) | 201 | }) |
| 200 | }, | 202 | }, |
| 203 | + async loadAuditStatusOptions() { | ||
| 204 | + try { | ||
| 205 | + const dicCodes = ['AUDIT_STATUS'] | ||
| 206 | + const results = await getDicByCodes(dicCodes) | ||
| 207 | + const option = (results.AUDIT_STATUS && results.AUDIT_STATUS.data) || [] | ||
| 208 | + this.auditStatusOptions = option.map(it => ({ value: it.code, text: it.name })) | ||
| 209 | + } catch (e) { | ||
| 210 | + this.auditStatusOptions = [] | ||
| 211 | + } | ||
| 212 | + }, | ||
| 213 | + onApprovalStatusChange(e) { | ||
| 214 | + const raw = e && e.detail && e.detail.value !== undefined | ||
| 215 | + ? e.detail.value | ||
| 216 | + : (e && e.value !== undefined ? e.value : '') | ||
| 217 | + this.filterForm.approvalStatus = raw | ||
| 218 | + }, | ||
| 201 | } | 219 | } |
| 202 | } | 220 | } |
| 203 | </script> | 221 | </script> |
| @@ -39,7 +39,7 @@ | @@ -39,7 +39,7 @@ | ||
| 39 | <view class="item-title"><text class="required">*</text><text>生产厂</text></view> | 39 | <view class="item-title"><text class="required">*</text><text>生产厂</text></view> |
| 40 | </template> | 40 | </template> |
| 41 | </uni-list-item> | 41 | </uni-list-item> |
| 42 | - <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" @change="onProductsChange" :options="productList" /> | 42 | + <ProductRel mode="add" :deliveryDate="form.orderDate" :deliveryDateBase="form.deliveryDate" @change="onProductsChange" :options="productList" /> |
| 43 | <uni-list-item title="合计人民币金额(大写)"> | 43 | <uni-list-item title="合计人民币金额(大写)"> |
| 44 | <template v-slot:footer> | 44 | <template v-slot:footer> |
| 45 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" disabled /> | 45 | <uni-easyinput v-model="form.totalAmountCapital" placeholder="自动计算" :inputBorder="false" disabled /> |
| @@ -41,7 +41,7 @@ | @@ -41,7 +41,7 @@ | ||
| 41 | </template> | 41 | </template> |
| 42 | </uni-list-item> | 42 | </uni-list-item> |
| 43 | 43 | ||
| 44 | - <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" :list="productLineList" @change="onProductsChange" :options="productList" /> | 44 | + <ProductRel mode="add" :deliveryDateBase="form.deliveryDate" :deliveryDate="form.orderDate" :list="productLineList" @change="onProductsChange" :options="productList" /> |
| 45 | 45 | ||
| 46 | <uni-list-item title="合计人民币金额(大写)"> | 46 | <uni-list-item title="合计人民币金额(大写)"> |
| 47 | <template v-slot:footer> | 47 | <template v-slot:footer> |
| @@ -129,7 +129,7 @@ | @@ -129,7 +129,7 @@ | ||
| 129 | </uni-list-item> | 129 | </uni-list-item> |
| 130 | <uni-list-item title="发货日期"> | 130 | <uni-list-item title="发货日期"> |
| 131 | <template v-slot:footer> | 131 | <template v-slot:footer> |
| 132 | - <uni-datetime-picker type="date" v-model="item.deliveryDate" @change="onDateChange(idx, $event)" /> | 132 | + <uni-datetime-picker :start="minDeliveryDate" type="date" v-model="item.deliveryDate" @change="onDateChange(idx, $event)" /> |
| 133 | </template> | 133 | </template> |
| 134 | </uni-list-item> | 134 | </uni-list-item> |
| 135 | </uni-list> | 135 | </uni-list> |
| @@ -200,6 +200,7 @@ export default { | @@ -200,6 +200,7 @@ export default { | ||
| 200 | list: { type: Array, default: () => [] }, | 200 | list: { type: Array, default: () => [] }, |
| 201 | max: { type: Number, default: 8 }, | 201 | max: { type: Number, default: 8 }, |
| 202 | deliveryDateBase: { type: String, default: '' }, | 202 | deliveryDateBase: { type: String, default: '' }, |
| 203 | + deliveryDate: { type: String, default: '' }, | ||
| 203 | options: { type: Array, default: () => [] } | 204 | options: { type: Array, default: () => [] } |
| 204 | }, | 205 | }, |
| 205 | components: { SingleSelectSheet }, | 206 | components: { SingleSelectSheet }, |
| @@ -217,6 +218,21 @@ export default { | @@ -217,6 +218,21 @@ export default { | ||
| 217 | label: o.label != null ? o.label : (o.text != null ? o.text : (o.name != null ? o.name : '')), | 218 | label: o.label != null ? o.label : (o.text != null ? o.text : (o.name != null ? o.name : '')), |
| 218 | value: o.value != null ? o.value : (o.id != null ? o.id : o.productId) | 219 | value: o.value != null ? o.value : (o.id != null ? o.id : o.productId) |
| 219 | })) | 220 | })) |
| 221 | + }, | ||
| 222 | + minDeliveryDate() { | ||
| 223 | + const s = this.deliveryDate | ||
| 224 | + if (!s) return '' | ||
| 225 | + const parts = String(s).split('-') | ||
| 226 | + const y = Number(parts[0]) | ||
| 227 | + const m = Number(parts[1]) | ||
| 228 | + const d = Number(parts[2]) | ||
| 229 | + if (!y || !m || !d) return '' | ||
| 230 | + const dt = new Date(y, m - 1, d) | ||
| 231 | + dt.setDate(dt.getDate() + 1) | ||
| 232 | + const yy = dt.getFullYear() | ||
| 233 | + const mm = String(dt.getMonth() + 1).padStart(2, '0') | ||
| 234 | + const dd = String(dt.getDate() - 1).padStart(2, '0') | ||
| 235 | + return `${yy}/${mm}/${dd}` | ||
| 220 | } | 236 | } |
| 221 | }, | 237 | }, |
| 222 | watch: { | 238 | watch: { |