From 7ae4e27a487e282b60dc65d7836d1bcd86e7a464 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期一, 27 十月 2025 16:51:43 +0800
Subject: [PATCH] 主页页面,活动弹窗,图片适配
---
pages/goods-manager/addGoods/addGoods.vue | 190 +++++++++++++++++++++++++++++++++++++++--------
1 files changed, 156 insertions(+), 34 deletions(-)
diff --git a/pages/goods-manager/addGoods/addGoods.vue b/pages/goods-manager/addGoods/addGoods.vue
index 0a13802..403106a 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,46 +75,150 @@
</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 { upload } from "@/api/common.js";
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 {
+ action: upload,
+ c_index: 0,
+ b_index: 0,
+ u_index: 0,
+ categoryListArray: [],
+ multiIndex: [0, 0, 0],
storage,
- form: {}
+ form: {},
+ brandsArray: [],
+ unitArray: []
}
},
methods: {
+
//鍥剧墖涓婁紶
onUploaded(lists) {
let images = [];
lists.forEach((item) => {
- images.push(item.response.result);
+ images.push(item.response.data.fileKey);
});
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