Commit dde2006ab8032e50a6870370894a0996c2170d6c
1 parent
ef33197f
feat: 订货单-涉及试样订单的功能{
a.子表展示 是否为试样订单(审核--都能修改、审核详情&详情和编辑 都是只读) b.卡片增加 是否为试样订单 以及筛选 c.详情&编辑&审核&审核详情-主表 增加这个字段展示 布尔值 }
Showing
7 changed files
with
141 additions
and
3 deletions
| 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <project version="4"> | 2 | <project version="4"> |
| 3 | <component name="ChangeListManager"> | 3 | <component name="ChangeListManager"> |
| 4 | - <list default="true" id="22e3db16-f3f9-44cc-b7ca-0b5f75df2820" name="Changes" comment="" /> | 4 | + <list default="true" id="22e3db16-f3f9-44cc-b7ca-0b5f75df2820" name="Changes" comment=""> |
| 5 | + <change beforePath="$PROJECT_DIR$/pages/order_list/approve.vue" beforeDir="false" afterPath="$PROJECT_DIR$/pages/order_list/approve.vue" afterDir="false" /> | ||
| 6 | + <change beforePath="$PROJECT_DIR$/pages/order_list/detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/pages/order_list/detail.vue" afterDir="false" /> | ||
| 7 | + <change beforePath="$PROJECT_DIR$/pages/order_list/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/pages/order_list/index.vue" afterDir="false" /> | ||
| 8 | + <change beforePath="$PROJECT_DIR$/pages/order_list/modify.vue" beforeDir="false" afterPath="$PROJECT_DIR$/pages/order_list/modify.vue" afterDir="false" /> | ||
| 9 | + <change beforePath="$PROJECT_DIR$/pages/order_list/product.vue" beforeDir="false" afterPath="$PROJECT_DIR$/pages/order_list/product.vue" afterDir="false" /> | ||
| 10 | + <change beforePath="$PROJECT_DIR$/pages/order_list/viewer.vue" beforeDir="false" afterPath="$PROJECT_DIR$/pages/order_list/viewer.vue" afterDir="false" /> | ||
| 11 | + </list> | ||
| 5 | <option name="SHOW_DIALOG" value="false" /> | 12 | <option name="SHOW_DIALOG" value="false" /> |
| 6 | <option name="HIGHLIGHT_CONFLICTS" value="true" /> | 13 | <option name="HIGHLIGHT_CONFLICTS" value="true" /> |
| 7 | <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> | 14 | <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> |
| @@ -55,11 +55,16 @@ | @@ -55,11 +55,16 @@ | ||
| 55 | <view class="readonly-text">{{ form.deliveryMethod }}</view> | 55 | <view class="readonly-text">{{ form.deliveryMethod }}</view> |
| 56 | </template> | 56 | </template> |
| 57 | </uni-list-item> | 57 | </uni-list-item> |
| 58 | + <uni-list-item title="是否为试样订单"> | ||
| 59 | + <template v-slot:footer> | ||
| 60 | + <view class="readonly-text">{{ form.sampleOrder ? '是' : '否' }}</view> | ||
| 61 | + </template> | ||
| 62 | + </uni-list-item> | ||
| 58 | </view> | 63 | </view> |
| 59 | 64 | ||
| 60 | <!-- 产品 --> | 65 | <!-- 产品 --> |
| 61 | <view class="section2"> | 66 | <view class="section2"> |
| 62 | - <Product mode="add" :list="initPurchaseOrderLineList" @change="purchaseOrderLineListChange" | 67 | + <Product mode="approve" :list="initPurchaseOrderLineList" @change="purchaseOrderLineListChange" |
| 63 | :orderDate="form.orderDate" /> | 68 | :orderDate="form.orderDate" /> |
| 64 | </view> | 69 | </view> |
| 65 | 70 |
| @@ -27,6 +27,7 @@ | @@ -27,6 +27,7 @@ | ||
| 27 | </view> | 27 | </view> |
| 28 | <view class="row"><text class="label">交货方式</text><text class="value">{{ form.deliveryMethod }}</text></view> | 28 | <view class="row"><text class="label">交货方式</text><text class="value">{{ form.deliveryMethod }}</text></view> |
| 29 | <view class="row"><text class="label">是否冻结</text><text class="value">{{ form.freeze ? '是' : '否' }}</text></view> | 29 | <view class="row"><text class="label">是否冻结</text><text class="value">{{ form.freeze ? '是' : '否' }}</text></view> |
| 30 | + <view class="row"><text class="label">是否为试样订单</text><text class="value">{{ form.sampleOrder ? '是' : '否' }}</text></view> | ||
| 30 | </view> | 31 | </view> |
| 31 | 32 | ||
| 32 | <!-- 产品 --> | 33 | <!-- 产品 --> |
| @@ -31,6 +31,7 @@ | @@ -31,6 +31,7 @@ | ||
| 31 | <view class="info-row"><text>生产厂</text><text>{{ item.workshopName }}</text></view> | 31 | <view class="info-row"><text>生产厂</text><text>{{ item.workshopName }}</text></view> |
| 32 | <view class="info-row"><text>办事处</text><text>{{ item.deptName }}</text></view> | 32 | <view class="info-row"><text>办事处</text><text>{{ item.deptName }}</text></view> |
| 33 | <view class="info-row"><text>订货日期</text><text>{{ item.orderDate }}</text></view> | 33 | <view class="info-row"><text>订货日期</text><text>{{ item.orderDate }}</text></view> |
| 34 | + <view class="info-row"><text>是否为试样订单</text><text>{{ item.sampleOrder ? '是' : '否' }}</text></view> | ||
| 34 | </view> | 35 | </view> |
| 35 | </template> | 36 | </template> |
| 36 | </CardList> | 37 | </CardList> |
| @@ -65,6 +66,12 @@ | @@ -65,6 +66,12 @@ | ||
| 65 | </view> | 66 | </view> |
| 66 | 67 | ||
| 67 | <view class="form-item"> | 68 | <view class="form-item"> |
| 69 | + <view class="label">是否为试样订单</view> | ||
| 70 | + <uni-data-checkbox mode="tag" :multiple="false" :value-field="'value'" :text-field="'text'" | ||
| 71 | + v-model="model.sampleOrder" @change="onSampleOrderChange" :localdata="sampleOrderOptions" /> | ||
| 72 | + </view> | ||
| 73 | + | ||
| 74 | + <view class="form-item"> | ||
| 68 | <view class="label">订货日期</view> | 75 | <view class="label">订货日期</view> |
| 69 | <uni-datetime-picker type="daterange" v-model="model.dateRange" start="2023-01-01" @change="onDateChange($event, model)" /> | 76 | <uni-datetime-picker type="daterange" v-model="model.dateRange" start="2023-01-01" @change="onDateChange($event, model)" /> |
| 70 | </view> | 77 | </view> |
| @@ -103,6 +110,7 @@ export default { | @@ -103,6 +110,7 @@ export default { | ||
| 103 | workshopOptions: [], | 110 | workshopOptions: [], |
| 104 | statusOptions: [], | 111 | statusOptions: [], |
| 105 | examineStatusOptions: [], | 112 | examineStatusOptions: [], |
| 113 | + sampleOrderOptions: [{ text: '是', value: 'true' }, { text: '否', value: 'false' }], | ||
| 106 | query: {}, | 114 | query: {}, |
| 107 | extraParams: {}, | 115 | extraParams: {}, |
| 108 | currentItems: [] | 116 | currentItems: [] |
| @@ -202,6 +210,11 @@ export default { | @@ -202,6 +210,11 @@ export default { | ||
| 202 | const raw = e && e.detail && e.detail.value !== undefined ? e.detail.value : (e && e.value !== undefined ? e.value : '') | 210 | const raw = e && e.detail && e.detail.value !== undefined ? e.detail.value : (e && e.value !== undefined ? e.value : '') |
| 203 | this.filterForm.examineStatus = raw | 211 | this.filterForm.examineStatus = raw |
| 204 | }, | 212 | }, |
| 213 | + onSampleOrderChange(e) { | ||
| 214 | + const raw = e && e.detail && e.detail.value !== undefined ? e.detail.value : (e && e.value !== undefined ? e.value : '') | ||
| 215 | + console.log('onSampleOrderChange', raw, typeof raw) | ||
| 216 | + this.filterForm.sampleOrder = raw; | ||
| 217 | + }, | ||
| 205 | onWorkshopChange(e) { | 218 | onWorkshopChange(e) { |
| 206 | const raw = e && e.detail && e.detail.value !== undefined ? e.detail.value : (e && e.value !== undefined ? e.value : '') | 219 | const raw = e && e.detail && e.detail.value !== undefined ? e.detail.value : (e && e.value !== undefined ? e.value : '') |
| 207 | this.filterForm.workshopId = raw | 220 | this.filterForm.workshopId = raw |
| @@ -54,6 +54,11 @@ | @@ -54,6 +54,11 @@ | ||
| 54 | <view class="readonly-text">{{ form.deliveryMethod }}</view> | 54 | <view class="readonly-text">{{ form.deliveryMethod }}</view> |
| 55 | </template> | 55 | </template> |
| 56 | </uni-list-item> | 56 | </uni-list-item> |
| 57 | + <uni-list-item title="是否为试样订单"> | ||
| 58 | + <template v-slot:footer> | ||
| 59 | + <view class="readonly-text">{{ form.sampleOrder ? '是' : '否' }}</view> | ||
| 60 | + </template> | ||
| 61 | + </uni-list-item> | ||
| 57 | </view> | 62 | </view> |
| 58 | 63 | ||
| 59 | <!-- 产品 --> | 64 | <!-- 产品 --> |
| @@ -93,6 +93,91 @@ | @@ -93,6 +93,91 @@ | ||
| 93 | </view> | 93 | </view> |
| 94 | </view> | 94 | </view> |
| 95 | 95 | ||
| 96 | + <view v-else-if="mode === 'approve'" class="section"> | ||
| 97 | + <view v-for="(item, idx) in items" :key="'a-' + idx" class="block"> | ||
| 98 | + <view class="row"><text class="label">行业</text><text class="value">{{ item.industry }}</text></view> | ||
| 99 | + <view class="row"><text class="label">品质</text><text class="value">{{ item.quality }}</text></view> | ||
| 100 | + <view class="row"><text class="label">牌号</text><text class="value">{{ item.brand }}</text></view> | ||
| 101 | + | ||
| 102 | + <view v-show="!item.collapsed"> | ||
| 103 | + <!-- 厚(公差) * 宽(公差) * 长(公差) --> | ||
| 104 | + <view class="row row-spec"><text class="label">规格(mm)</text> | ||
| 105 | + <view class="value value-spec"> | ||
| 106 | + <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view> | ||
| 107 | + <view v-if="item.thickness" class="value-spec_box"> | ||
| 108 | + <view v-if="item.thicknessTolPos" class="value-spec_box_1">+{{ item.thicknessTolPos }} | ||
| 109 | + </view> | ||
| 110 | + <view v-if="item.thicknessTolNeg" class="value-spec_box_2">-{{ item.thicknessTolNeg }} | ||
| 111 | + </view> | ||
| 112 | + </view> | ||
| 113 | + <view v-if="item.width" class="value-spec_val p12">*</view> | ||
| 114 | + <view v-if="item.width" class="value-spec_val">{{ item.width }}</view> | ||
| 115 | + <view v-if="item.width" class="value-spec_box"> | ||
| 116 | + <view v-if="item.widthTolPos" class="value-spec_box_1">{{ item.widthTolPos > 0 ? '+' + item.widthTolPos : item.widthTolPos }}</view> | ||
| 117 | + <view v-if="item.widthTolNeg" class="value-spec_box_2">{{ item.widthTolNeg > 0 ? '+' + item.widthTolNeg : item.widthTolNeg }}</view> | ||
| 118 | + </view> | ||
| 119 | + <view v-if="item.length" class="value-spec_val p12">*</view> | ||
| 120 | + <view v-if="item.length" class="value-spec_val">{{ item.length }}</view> | ||
| 121 | + <view v-if="item.length" class="value-spec_box"> | ||
| 122 | + <view v-if="item.lengthTolPos" class="value-spec_box_1">{{ item.lengthTolPos > 0 ? '+' + item.lengthTolPos : item.lengthTolPos }}</view> | ||
| 123 | + <view v-if="item.lengthTolNeg" class="value-spec_box_2">{{ item.lengthTolNeg > 0 ? '+' + item.lengthTolNeg : item.lengthTolNeg }}</view> | ||
| 124 | + </view> | ||
| 125 | + </view> | ||
| 126 | + </view> | ||
| 127 | + <view class="row"><text class="label">状态</text><text class="value">{{ item.status }}</text></view> | ||
| 128 | + <view class="row" :class="{ 'noneStyle': !item.showSalesPrice }"><text | ||
| 129 | + class="label">数量kg</text><text class="value">{{ item.quantity }}</text> | ||
| 130 | + </view> | ||
| 131 | + <view class="row" :class="{ 'noneStyle': item.showSalesPrice }" v-if="item.showSalesPrice"><text | ||
| 132 | + class="label">销售价格</text><text class="value">{{ | ||
| 133 | + item.salesPrice }}</text></view> | ||
| 134 | + <uni-list class="edit-list"> | ||
| 135 | + <uni-list-item class="amount-item"> | ||
| 136 | + <template v-slot:body> | ||
| 137 | + <view class="item-title"><text>包装费</text></view> | ||
| 138 | + </template> | ||
| 139 | + <template v-slot:footer> | ||
| 140 | + <view class="amount-row"> | ||
| 141 | + <uni-easyinput type="digit" v-model="item.packagingFee" placeholder="0.00" | ||
| 142 | + :inputBorder="false" | ||
| 143 | + @input="onNonNegativeNumberInput($event, item, idx, 'packagingFee')" | ||
| 144 | + @blur="onNonNegativeNumberBlur(item, idx, 'packagingFee')" /> | ||
| 145 | + <text class="unit">元</text> | ||
| 146 | + </view> | ||
| 147 | + </template> | ||
| 148 | + </uni-list-item> | ||
| 149 | + <uni-list-item title="发货日期"> | ||
| 150 | + <template v-slot:footer> | ||
| 151 | + <uni-datetime-picker type="date" v-model="item.deliveryDate" :start="minDeliveryDate" | ||
| 152 | + @change="onDeliveryChange($event, item, idx)" /> | ||
| 153 | + </template> | ||
| 154 | + </uni-list-item> | ||
| 155 | + <uni-list-item title="考核超协"> | ||
| 156 | + <template v-slot:footer> | ||
| 157 | + <uni-easyinput :disabled="pageType === 'modify'" | ||
| 158 | + v-model="item.assessmentExceedsAgreement" | ||
| 159 | + :placeholder="pageType === 'modify' ? '' : '请输入考核超协'" :inputBorder="false" /> | ||
| 160 | + </template> | ||
| 161 | + </uni-list-item> | ||
| 162 | + <uni-list-item class="select-item" :class="String(item.sampleOrder) ? 'is-filled' : 'is-empty'" clickable | ||
| 163 | + @click="openSheet(idx)" :rightText="(item.sampleOrder ? '是' : '否') || '请选择'" showArrow> | ||
| 164 | + <template v-slot:body> | ||
| 165 | + <view class="item-title"><text>是否为试样订单</text></view> | ||
| 166 | + </template> | ||
| 167 | + </uni-list-item> | ||
| 168 | + </uni-list> | ||
| 169 | + </view> | ||
| 170 | + | ||
| 171 | + <view class="block-ops"> | ||
| 172 | + <div class="toggle" @click="toggleItem(idx)"> | ||
| 173 | + <image :src="item.collapsed ? '/static/images/up.png' : '/static/images/down.png'" | ||
| 174 | + class="icon" /> | ||
| 175 | + {{ item.collapsed ? '展开' : '收起' }} | ||
| 176 | + </div> | ||
| 177 | + </view> | ||
| 178 | + </view> | ||
| 179 | + </view> | ||
| 180 | + | ||
| 96 | <view v-else-if="mode === 'view'" class="view-list" v-show="!collapsedView"> | 181 | <view v-else-if="mode === 'view'" class="view-list" v-show="!collapsedView"> |
| 97 | <view v-for="(item, idx) in items" :key="'v-' + idx" class="card"> | 182 | <view v-for="(item, idx) in items" :key="'v-' + idx" class="card"> |
| 98 | <view class="row"><text class="label">行业</text><text class="value">{{ item.industry }}</text></view> | 183 | <view class="row"><text class="label">行业</text><text class="value">{{ item.industry }}</text></view> |
| @@ -135,6 +220,7 @@ | @@ -135,6 +220,7 @@ | ||
| 135 | </view> | 220 | </view> |
| 136 | <view class="row"><text class="label">考核超协</text><text class="value">{{ item.assessmentExceedsAgreement | 221 | <view class="row"><text class="label">考核超协</text><text class="value">{{ item.assessmentExceedsAgreement |
| 137 | }}</text></view> | 222 | }}</text></view> |
| 223 | + <view class="row"><text class="label">是否为试样订单</text><text class="value">{{ item.sampleOrder ? '是' : '否' }}</text></view> | ||
| 138 | </view> | 224 | </view> |
| 139 | <view class="view-total"> | 225 | <view class="view-total"> |
| 140 | <view class="head">合计</view> | 226 | <view class="head">合计</view> |
| @@ -144,12 +230,16 @@ | @@ -144,12 +230,16 @@ | ||
| 144 | </view> | 230 | </view> |
| 145 | </view> | 231 | </view> |
| 146 | 232 | ||
| 233 | + <SingleSelectSheet :visible.sync="sheet.visible" :title="sheet.title" :options="sheet.options" v-model="sheet.value" | ||
| 234 | + @confirm="onSheetConfirm" /> | ||
| 147 | </view> | 235 | </view> |
| 148 | </template> | 236 | </template> |
| 149 | <script> | 237 | <script> |
| 150 | import { uuid } from '@/utils/uuid.js' | 238 | import { uuid } from '@/utils/uuid.js' |
| 239 | +import SingleSelectSheet from '@/components/single-select/index.vue' | ||
| 151 | export default { | 240 | export default { |
| 152 | name: 'Product', | 241 | name: 'Product', |
| 242 | + components: { SingleSelectSheet }, | ||
| 153 | props: { | 243 | props: { |
| 154 | title: { type: String, default: '' }, | 244 | title: { type: String, default: '' }, |
| 155 | mode: { type: String, default: 'add' }, | 245 | mode: { type: String, default: 'add' }, |
| @@ -163,6 +253,7 @@ export default { | @@ -163,6 +253,7 @@ export default { | ||
| 163 | return { | 253 | return { |
| 164 | items: [], | 254 | items: [], |
| 165 | collapsedView: false, | 255 | collapsedView: false, |
| 256 | + sheet: { visible: false, title: '请选择', options: [], value: '', field: '' } | ||
| 166 | } | 257 | } |
| 167 | }, | 258 | }, |
| 168 | computed: { | 259 | computed: { |
| @@ -265,7 +356,22 @@ export default { | @@ -265,7 +356,22 @@ export default { | ||
| 265 | const num = Number(v) | 356 | const num = Number(v) |
| 266 | if (isNaN(num) || num < 0) item[field] = '0' | 357 | if (isNaN(num) || num < 0) item[field] = '0' |
| 267 | if (typeof idx === 'number') this.$set(this.items, idx, { ...item }) | 358 | if (typeof idx === 'number') this.$set(this.items, idx, { ...item }) |
| 268 | - } | 359 | + }, |
| 360 | + openSheet(idx) { | ||
| 361 | + const item = this.items[idx] | ||
| 362 | + const options = [{ label: '是', value: true }, { label: '否', value: false }] | ||
| 363 | + const current = item.sampleOrder | ||
| 364 | + this.sheet = { visible: true, title: '是否为试样订单', options, idx, value: current } | ||
| 365 | + }, | ||
| 366 | + onSheetConfirm({ value }) { | ||
| 367 | + const idx = this.sheet.idx | ||
| 368 | + if (idx > -1 && this.items[idx]) { | ||
| 369 | + const item = this.items[idx] | ||
| 370 | + item.sampleOrder = value | ||
| 371 | + this.$set(this.items, idx, { ...item }) | ||
| 372 | + } | ||
| 373 | + this.sheet.visible = false | ||
| 374 | + }, | ||
| 269 | } | 375 | } |
| 270 | } | 376 | } |
| 271 | </script> | 377 | </script> |
| @@ -16,6 +16,7 @@ | @@ -16,6 +16,7 @@ | ||
| 16 | <view class="row"><text class="label">备货单位/人(生产标准)</text><text class="value">{{ form.stockUpCompanyName }}</text></view> | 16 | <view class="row"><text class="label">备货单位/人(生产标准)</text><text class="value">{{ form.stockUpCompanyName }}</text></view> |
| 17 | <view class="row"><text class="label">结算方式或期限</text><text class="value">{{ form.settlementTerms }}</text></view> | 17 | <view class="row"><text class="label">结算方式或期限</text><text class="value">{{ form.settlementTerms }}</text></view> |
| 18 | <view class="row"><text class="label">交货方式</text><text class="value">{{ form.deliveryMethod }}</text></view> | 18 | <view class="row"><text class="label">交货方式</text><text class="value">{{ form.deliveryMethod }}</text></view> |
| 19 | + <view class="row"><text class="label">是否为试样订单</text><text class="value">{{ form.sampleOrder ? '是' : '否' }}</text></view> | ||
| 19 | </view> | 20 | </view> |
| 20 | 21 | ||
| 21 | <!-- 产品 --> | 22 | <!-- 产品 --> |