From 0c33f718ed1ab346aaf5fdb6d6af11e9498a75a0 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期四, 03 七月 2025 17:21:00 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- manager/src/views/member/list/index.vue | 79 +++++++++++++++++++++----- seller/src/views/goods/goods-seller/goods.vue | 2 seller/src/views/goods/goods-seller/goodsOperationSec.vue | 62 ++++++++++++++++++++ 3 files changed, 125 insertions(+), 18 deletions(-) diff --git a/manager/src/views/member/list/index.vue b/manager/src/views/member/list/index.vue index 3611c63..0d346e4 100644 --- a/manager/src/views/member/list/index.vue +++ b/manager/src/views/member/list/index.vue @@ -52,14 +52,14 @@ <Modal v-model="descFlag" :title="descTitle" @on-ok="handleSubmitModal" width="500"> <Form ref="form" :model="form" :rules="ruleValidate" :label-width="80"> - <Input v-model="form.id" v-show="false"/> + <Input v-model="form.id" v-show="false" /> <FormItem label="澶村儚"> <img :src="form.face || defaultPic" class="face" /> <Button type="text" class="upload" @click="() => { - this.picModelFlag = true; - this.$refs.ossManage.selectImage = true; - }">淇敼</Button> + this.picModelFlag = true; + this.$refs.ossManage.selectImage = true; + }">淇敼</Button> <input type="file" style="display: none" id="file" /> </FormItem> <FormItem label="鐢ㄦ埛鍚�" prop="name"> @@ -67,6 +67,11 @@ </FormItem> <FormItem label="鐢ㄦ埛鏄电О" prop="name"> <Input v-model="form.nickName" style="width: 200px" /> + </FormItem> + <FormItem label="鏍囩" prop="tags"> + <Select v-model="selectTagIds" multiple filterable :loading="selectLoading" style="width:200px;"> + <Option v-for="item in options" :key="item.id" :label="item.tagName" :value="item.id"></Option> + </Select> </FormItem> <FormItem label="鎬у埆" prop="sex"> <RadioGroup type="button" button-style="solid" v-model="form.sex"> @@ -96,7 +101,7 @@ <Modal width="1200px" v-model="picModelFlag"> <ossManage @callback="callbackSelected" :isComponent="true" :initialize="picModelFlag" ref="ossManage" /> </Modal> - <multipleMap ref="map" @callback="selectedRegion"/> + <multipleMap ref="map" @callback="selectedRegion" /> </div> </template> @@ -105,6 +110,7 @@ import * as API_Member from "@/api/member.js"; import ossManage from "@/views/sys/oss-manage/ossManage"; import * as RegExp from "@/libs/RegExp.js"; +import { getTags } from "@/api/tag.js"; export default { name: "member", @@ -114,12 +120,15 @@ }, data() { return { - defaultPic:require('@/assets/default.png'), + defaultPic: require('@/assets/default.png'), descTitle: "", // modal鏍囬 descFlag: false, //缂栬緫鏌ョ湅妗� loading: true, // 琛ㄥ崟鍔犺浇鐘舵�� addFlag: false, // modal鏄鹃殣鎺у埗 - + selectLoading: false, + options: [], + selectTagIds: [], + selectTags: [], addMemberForm: { // 娣诲姞鐢ㄦ埛琛ㄥ崟 mobile: "", @@ -323,7 +332,7 @@ methods: { // 鍥炶皟缁欑埗绾� callback(val, index) { - this.selectMember.forEach(item=>{item.___selected = false}) + this.selectMember.forEach(item => { item.___selected = false }) this.$set(val, "___selected", !val.___selected); console.log(val.___selected); console.log(this.selectMember); @@ -391,8 +400,16 @@ * 鏌ヨ鏌ョ湅浼氬憳璇︽儏 */ getMemberInfo(id) { + var that = this; API_Member.getMemberInfoData(id).then((res) => { if (res.result) { + debugger + that.selectTags = [] + that.selectTagIds = [] + res.result.tags.forEach(element => { + that.selectTags.push(element.tagName) + that.selectTagIds.push(element.tagId) + }); this.$set(this, "form", res.result); } }); @@ -432,17 +449,17 @@ // 閫変腑鐨勫湴鍧� selectedRegion(val) { - if(val.type === 'select'){ + if (val.type === 'select') { const paths = val.data.map(item => item.name).join(',') const ids = val.data.map(item => item.id).join(',') - this.$set(this.form,'region',paths) - this.$set(this.form,'regionId',ids) + this.$set(this.form, 'region', paths) + this.$set(this.form, 'regionId', ids) } - else{ - this.$set(this.form,'region',val.data.addr) - this.$set(this.form,'regionId',val.data.addrId) + else { + this.$set(this.form, 'region', val.data.addr) + this.$set(this.form, 'regionId', val.data.addrId) } }, //鏌ョ湅浼氬憳 @@ -474,9 +491,10 @@ // 鎻愪氦淇敼鏁版嵁 handleSubmitModal() { - const { nickName, sex, username, face, newPassword,id,regionId,region } = this.form; + debugger + const { nickName, sex, username, face, newPassword, id, regionId, region } = this.form; let time = new Date(this.form.birthday); - let birthday = this.form.birthday=== undefined?'': + let birthday = this.form.birthday === undefined ? '' : time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate(); let submit = { regionId, @@ -489,6 +507,7 @@ id }; + submit.tags = this.selectTagIds if (newPassword) { submit.password = this.md5(newPassword); } @@ -499,9 +518,35 @@ } }); }, + selectTag(e) { + debugger + if (this.selectTagIds.indexOf(e.value) != -1) { + this.selectTagIds.splice(this.selectTagIds.indexOf(e.value), 1) + this.selectTags.splice(this.selectTags.indexOf(e.label), 1) + } + else { + this.selectTagIds.push(e.value) + this.selectTags.push(e.label) + } + console.log(this.selectTags); + + }, + remoteMethod(query) { + this.selectLoading = true; + var params = { + "tagTypeKey": "USER", + "pageNumber": 1, + "pageSize": 500 + } + getTags(params).then(res => { + this.options = res.data; + this.selectLoading = false; + }); + }, }, mounted() { this.getData(); + this.remoteMethod("") }, }; </script> @@ -509,9 +554,11 @@ /deep/ .ivu-table-wrapper { width: 100%; } + /deep/ .ivu-card { width: 100%; } + .face { width: 60px; height: 60px; diff --git a/seller/src/views/goods/goods-seller/goods.vue b/seller/src/views/goods/goods-seller/goods.vue index e4efb96..63942cf 100644 --- a/seller/src/views/goods/goods-seller/goods.vue +++ b/seller/src/views/goods/goods-seller/goods.vue @@ -333,6 +333,8 @@ return h("Tag", { props: { color: "orange" } }, "闆跺敭"); } else if (params.row.salesModel === "WHOLESALE") { return h("Tag", { props: { color: "magenta" } }, "鎵瑰彂"); + } else if (params.row.salesModel === "PRESALE") { + return h("Tag", { props: { color: "magenta" } }, "棰勫敭"); } else { return h("Tag", { props: { color: "volcano" } }, "鍏朵粬绫诲瀷"); } diff --git a/seller/src/views/goods/goods-seller/goodsOperationSec.vue b/seller/src/views/goods/goods-seller/goodsOperationSec.vue index c78ec8b..1d58489 100644 --- a/seller/src/views/goods/goods-seller/goodsOperationSec.vue +++ b/seller/src/views/goods/goods-seller/goodsOperationSec.vue @@ -23,6 +23,14 @@ <FormItem label="鍟嗗搧浠锋牸" prop="price"> <Input v-model="baseInfoForm.price" clearable placeholder="鍟嗗搧浠锋牸" style="width: 260px" type="text"/> </FormItem> + + <FormItem label="鎶芥垚姣斾緥" prop="commission"> +<!-- <Input v-model="baseInfoForm.commission" max="100" min="0" clearable placeholder="鎶芥垚姣斾緥" style="width: 260px" type="number"/>--> + <InputNumber v-model="baseInfoForm.commission" :formatter="value => `${value}%`" + :parser="value => value.replace('%', '')" :max="100" :min="0" clearable + placeholder="鎶芥垚姣斾緥" style="width: 260px" type="number"/> + </FormItem> + <FormItem label="鍟嗗搧鍗栫偣" prop="sellingPoint"> <Input v-model="baseInfoForm.sellingPoint" :rows="4" style="width: 260px" type="textarea"/> </FormItem> @@ -48,13 +56,22 @@ <RadioGroup v-if="baseInfoForm.goodsType != 'VIRTUAL_GOODS'" v-model="baseInfoForm.salesModel" button-style="solid" type="button" @on-change="renderTableData(skuTableData)"> <Radio label="RETAIL" title="闆跺敭鍨�">闆跺敭鍨�</Radio> - <Radio label="WHOLESALE" title="鎵瑰彂鍨�">鎵瑰彂鍨�</Radio> +<!-- <Radio label="WHOLESALE" title="鎵瑰彂鍨�">鎵瑰彂鍨�</Radio>--> + <Radio label="PRESALE" title="棰勫敭">棰勫敭</Radio> </RadioGroup> <RadioGroup v-else v-model="baseInfoForm.salesModel" button-style="solid" type="button"> <Radio label="RETAIL" title="闆跺敭鍨�"> <span>铏氭嫙鍨�</span> </Radio> </RadioGroup> + </FormItem> + <FormItem v-if="baseInfoForm.salesModel == 'PRESALE'"> + <div> + 棰勫敭鏃堕棿锛� + <DatePicker type="daterange" v-model="baseInfoForm.preSaleTime" + format="yyyy-MM-dd" placement="bottom-end" placeholder="璇烽�夋嫨棰勫敭鏃堕棿" style="width: 200px" + @on-change="choosePreTime"></DatePicker> + </div> </FormItem> <FormItem v-if="baseInfoForm.salesModel == 'WHOLESALE'" class="form-item-view-el" label="閿�鍞鍒�" prop="wholesaleRule"> @@ -541,6 +558,7 @@ import COS from 'cos-js-sdk-v5'; import {getFileKey} from "@/utils/file.js"; import {getFilePreview, getSts} from "@/api/file"; +import {formatDate} from "@/utils/filters"; export default { @@ -677,6 +695,10 @@ categoryName: [], goodsVideo: "", showGoodsVideo: "", + // 棰勫敭鏃堕棿 + preSaleTime:[], + preSaleBeginDate:'', + preSaleEndDate:'', }, /** 琛ㄦ牸澶� */ skuTableColumn: [], @@ -758,6 +780,32 @@ } }, methods: { + // 鏍煎紡鍖栨樉绀哄�� + formatter(date) { + return this.formatDate(date, 'yyyy-MM-dd'); + }, + + // 鏃ユ湡鏍煎紡鍖栧伐鍏� + formatDate(date, format) { + const year = date.getFullYear(); + const month = (date.getMonth() + 1).toString().padStart(2, '0'); + const day = date.getDate().toString().padStart(2, '0'); + + return format + .replace('yyyy', year) + .replace('MM', month) + .replace('dd', day); + }, + choosePreTime(e){ + if (this.baseInfoForm.preSaleTime){ + const[begin,end] = this.baseInfoForm.preSaleTime; + this.baseInfoForm.preSaleBeginDate = this.formatDate(begin,'yyyy-MM-dd'); + this.baseInfoForm.preSaleEndDate = this.formatDate(end,'yyyy-MM-dd'); + console.log('------------------>閫夋嫨鏃堕棿',this.baseInfoForm.preSaleBeginDate,this.baseInfoForm.preSaleEndDate) + + } + console.log('鏃堕棿閫夋嫨------------------銆�',e) + }, // 閫夋嫨鍥剧墖modal handleCLickImg(val, index) { console.log('娴嬭瘯杈撳叆鐨勫��----------------銆�', val) @@ -1185,6 +1233,7 @@ response.result.recommend ? (response.result.recommend = 1) : (response.result.recommend = 0); + response.result.preSaleTime = [response.result.preSaleBeginDate, response.result.preSaleEndDate]; this.baseInfoForm = {...this.baseInfoForm, ...response.result}; this.baseInfoForm.release = 1; //鍗充娇鏄鏀惧叆浠撳簱锛屼慨鏀圭殑鏃跺�欎篃浼氭樉绀轰細绔嬪嵆鍙戝竷 this.categoryId = response.result.categoryPath.split(",")[2]; @@ -1679,6 +1728,7 @@ * 娓叉煋table鎵�闇�瑕佺殑column 鍜� data */ renderTableData(skus) { + console.log('-------------->閿�鍞被鍨�',skus) this.skuTableColumn = []; let pushData = []; // 娓叉煋澶撮儴 @@ -1703,7 +1753,15 @@ } ); } - + // 棰勫敭妯″紡 + if (this.baseInfoForm.salesModel !== "PRESALE") { + pushData.push( + { + title: "棰勫敭鏃堕棿", + slot: "price", + } + ); + } if (this.baseInfoForm.salesModel === "WHOLESALE" && this.wholesaleData) { this.wholesaleData.forEach((item, index) => { pushData.push({ -- Gitblit v1.8.0