From c9928dd4f6d25e2339ea1400f59ec58674a927a7 Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期四, 19 六月 2025 20:07:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- pages/goods-manager/addGoods/addGoods.vue | 185 ++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 153 insertions(+), 32 deletions(-) diff --git a/pages/goods-manager/addGoods/addGoods.vue b/pages/goods-manager/addGoods/addGoods.vue index 0a13802..0dfd68a 100644 --- a/pages/goods-manager/addGoods/addGoods.vue +++ b/pages/goods-manager/addGoods/addGoods.vue @@ -4,36 +4,54 @@ <u-form :border-bottom="false" :model="form" ref="uForm" :error-type="['toast']" :rule="rules"> <u-form-item label="鍟嗗搧鍒嗙被" label-width="130" prop=""> - <div @click="showPicker"> - {{ form.___path || '璇烽�夋嫨鎵�鍦ㄥ湴鍖�' }} - </div> + <picker mode="multiSelector" @change="bindMultiPickerChange" + @columnchange="bindMultiPickerColumnChange" :value="multiIndex" :range="categoryListArray" + range-key="name"> + <view class="picker"> + {{ categoryListArray[0][multiIndex[0]].name ? categoryListArray[0][multiIndex[0]].name + + '锛�' : '' }} + {{ categoryListArray[1][multiIndex[1]].name ? categoryListArray[1][multiIndex[1]].name + + '锛�' : '' }} + {{ categoryListArray[2][multiIndex[2]].name ? categoryListArray[2][multiIndex[2]].name : + '' }} + </view> + </picker> </u-form-item> - <u-form-item class="border" label="鍟嗗搧鍚嶇О" label-width="130" prop="name"> - <u-input v-model="form.name" clearable placeholder="璇疯緭鍏ュ晢鍝佸悕绉�" /> + <u-form-item class="border" label="鍟嗗搧鍚嶇О" label-width="130" prop="goodsName"> + <u-input v-model="form.goodsName" clearable placeholder="璇疯緭鍏ュ晢鍝佸悕绉�" /> </u-form-item> - <u-form-item label="鍟嗗搧浠锋牸" label-width="130" prop="mobile"> - <u-input v-model="form.mobile" type="number" maxlength="11" placeholder="璇疯緭鍏ュ晢鍝佷环鏍�" /> + <u-form-item label="鍟嗗搧浠锋牸" label-width="130" prop="price"> + <u-input v-model="form.price" type="number" placeholder="璇疯緭鍏ュ晢鍝佷环鏍�" /> </u-form-item> - <u-form-item class="detailgoods" label="璇︾粏鍦板潃" label-width="130" prop="detail"> - <u-input type="textarea" v-model="form.detail" maxlength="100" height="150" placeholder="琛楅亾妤肩墝鍙风瓑" /> - </u-form-item> + <u-form-item label="鍟嗗搧鍗栫偣" label-width="130"> - <u-input type="textarea" v-model="form.alias" placeholder="璇疯緭鍏ュ晢鍝佸崠鐐�" /> + <u-input type="textarea" v-model="form.sellingPoint" placeholder="璇疯緭鍏ュ晢鍝佸崠鐐�" /> </u-form-item> - <u-form-item label="鍟嗗搧鍝佺墝" label-width="130" prop=""> - <div @click="showPicker"> - {{ form.___path || '璇烽�夋嫨鎵�鍦ㄥ湴鍖�' }} - </div> + <u-form-item label="鍟嗗搧鍝佺墝" label-width="130" prop="brandId"> + <picker @change="bindBrandsChange" :value="b_index" :range="brandsArray" :range-key="'name'"> + <view class="uni-input">{{ brandsArray[b_index].name }}</view> + </picker> </u-form-item> - <u-form-item label="璁¢噺鍗曚綅" label-width="130" prop="___path"> - <div @click="showPicker"> - {{ form.___path || '璇烽�夋嫨鎵�鍦ㄥ湴鍖�' }} - </div> + <u-form-item label="璁¢噺鍗曚綅" label-width="130" prop="goodsUnit"> + <picker @change="bindUnitChange" :value="u_index" :range="unitArray" :range-key="'name'"> + <view class="uni-input">{{ unitArray[u_index].name }}</view> + </picker> </u-form-item> + <u-form-item label="閿�鍞ā寮�" label-width="130" prop="salesModel"> + <radio-group name="radio" @change="radioChange" v-model="form.salesModel"> + <label> + <radio value="RETAIL" :checked="form.salesModel == 'RETAIL'" /><text>闆跺敭鍨�</text> + </label> + <label> + <radio value="WHOLESALE" :checked="form.salesModel == 'WHOLESALE'" /><text>鎵瑰彂鍨�</text> + </label> + </radio-group> + </u-form-item> + <view class="opt-view"> @@ -57,26 +75,27 @@ </template> <script> -import UForm from '@/uview-components/uview-ui/components/u-form/u-form.vue'; -import UFormItem from '@/uview-components/uview-ui/components/u-form-item/u-form-item.vue'; -import UInput from '@/uview-components/uview-ui/components/u-input/u-input.vue'; -import UUpload from '@/uview-components/uview-ui/components/u-upload/u-upload.vue'; -import UCheckboxGroup from '@/uview-components/uview-ui/components/u-checkbox-group/u-checkbox-group.vue'; -import UCheckbox from '@/uview-components/uview-ui/components/u-checkbox/u-checkbox.vue'; -import UIcon from '@/uview-components/uview-ui/components/u-icon/u-icon.vue'; -import UActionSheet from '@/uview-components/uview-ui/components/u-action-sheet/u-action-sheet.vue'; +import '@/components/uview-components/uview-ui'; import storage from "@/utils/storage.js"; +import * as API_GOODS from "@/api/goods.js"; export default { - components: { UForm, UFormItem, UInput, UUpload, UCheckboxGroup, UCheckbox, UIcon, UActionSheet }, data() { return { + c_index: 0, + b_index: 0, + u_index: 0, + categoryListArray: [], + multiIndex: [0, 0, 0], storage, - form: {} + form: {}, + brandsArray: [], + unitArray: [] } }, methods: { + //鍥剧墖涓婁紶 onUploaded(lists) { let images = []; @@ -86,17 +105,119 @@ }); this.form.images = images; }, - }, + bindBrandsChange(e) { + this.b_index = e.detail.value + this.form.brandId = this.brandsArray[this.b_index].id + }, + bindUnitChange(e) { + this.u_index = e.detail.value + this.form.goodsUnit = this.unitArray[this.u_index].name + }, + initCategory() { + API_GOODS.getStoreGoodsCategory().then((res) => { + const params = res.data.result; + if (params && params.length > 0) { + this.initBrands(params[0].id) + } + this.categoryListData = params; + this.manageCategoryListThreeLevel() + }); + }, + initBrands(categoryId) { + this.brandsArray = [] + API_GOODS.getStoreGoodsBrands(categoryId).then((res) => { + const params = res.data; + this.brandsArray = params + }); + }, + initGoods() { + API_GOODS.getgoodsUnit().then((res) => { + const params = res.data.result.records; + this.unitArray = params + }); + }, + manageCategoryListThreeLevel() { + let categoryLen = this.categoryListData.length + for (var i = categoryLen - 1; i >= 0; i--) { + let categoryChildrenLen = this.categoryListData[i].children.length + for (var j = categoryChildrenLen - 1; j >= 0; j--) { + if (!this.categoryListData[i].children[j].children.length) { + this.categoryListData[i].children.splice(j, 1) + } + } + } + this.manageCategoryListTwoLevel() + }, + + manageCategoryListTwoLevel() { + let categoryLen = this.categoryListData.length + for (var i = categoryLen - 1; i >= 0; i--) { + if (!this.categoryListData[i].children.length) { + this.categoryListData.splice(i, 1) + } + } + this.categoryListArray = [ + this.categoryListData, + this.categoryListData[0].children, + this.categoryListData[0].children[0].children, + ] + }, + + // value 鏀瑰彉鏃惰Е鍙� change 浜嬩欢 + bindMultiPickerChange: function (e) { + this.multiIndex = e.detail.value + + this.initBrands(this.categoryListData[this.multiIndex[0]].id) + }, + // 鏌愪竴鍒楃殑鍊兼敼鍙樻椂瑙﹀彂 columnchange 浜嬩欢 + bindMultiPickerColumnChange: function (e) { + if (!this.multiIndex || !this.multiIndex.length) { + this.multiIndex = [0, 0, 0] + } + + let column = e.detail.column; + let value = e.detail.value; + + let multiIndex = this.multiIndex; + multiIndex[column] = value; + if (column == 0) { + multiIndex[1] = 0; + multiIndex[2] = 0; + } + if (column == 1) { + multiIndex[2] = 0; + } + this.multiIndex = multiIndex; + + let categoryListArray = []; + categoryListArray[0] = this.categoryListData; + categoryListArray[1] = this.categoryListData[multiIndex[0]].children; + if (this.categoryListData[multiIndex[0]].children[multiIndex[1]].children) { + categoryListArray[2] = this.categoryListData[multiIndex[0]].children[multiIndex[1]].children; + } else { + categoryListArray[2] = []; + } + this.categoryListArray = categoryListArray; + + }, + radioChange: function (e) { + this.form.salesModel = e.detail.value + }, + }, + onShow() { + this.initGoods() + this.initCategory() + + }, onLoad(option) { uni.showLoading({ title: "鍔犺浇涓�", }); this.routerVal = option; - console.log(option); if (option.id) { - getGoodsDetail(option.id).then((res) => { + API_GOODS.getStoreGoodsInfo(option.id).then((res) => { const params = res.data.result; params.___path = params.consigneegoodsPath; this.$set(this, "form", params); -- Gitblit v1.8.0