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