Commit dde2006ab8032e50a6870370894a0996c2170d6c

Authored by 史婷婷
1 parent ef33197f

feat: 订货单-涉及试样订单的功能{

a.子表展示 是否为试样订单(审核--都能修改、审核详情&详情和编辑 都是只读)
b.卡片增加 是否为试样订单 以及筛选
c.详情&编辑&审核&审核详情-主表  增加这个字段展示 布尔值
}
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 <!-- 产品 -->