Commit bd092ab2 authored by Liu Peng's avatar Liu Peng

增加标签会员价格修改

parent be93511f
...@@ -3,31 +3,33 @@ ...@@ -3,31 +3,33 @@
*****************/ *****************/
// 导入请求公用方法 // 导入请求公用方法
import { import { request } from "../../utils/axiosFun";
request
} from '../../utils/axiosFun';
export const fetchList = (query) => { export const fetchList = (query) => {
return request('post', '/api/sys/user/list', query, "F") return request("post", "/api/sys/user/list", query, "F");
} };
export const addObj = (obj) => { export const addObj = (obj) => {
return request('post', '/api/sys/user/save', obj) return request("post", "/api/sys/user/save", obj);
} };
export const delObj = (ids) => { export const delObj = (ids) => {
return request('post', '/api/sys/user/delete', ids) return request("post", "/api/sys/user/delete", ids);
} };
export const putObj = (obj) => { export const putObj = (obj) => {
return request('post', '/api/sys/user/update', obj) return request("post", "/api/sys/user/update", obj);
} };
export const getObj = (id) => { export const getObj = (id) => {
return request('get','/api/sys/user/info/' + id) return request("get", "/api/sys/user/info/" + id);
} };
export const getCurrentInfo = () => { export const getCurrentInfo = () => {
return request('get','/api/sys/user/info',{}) return request("get", "/api/sys/user/info", {});
} };
export const changePassword = (obj) => { export const changePassword = (obj) => {
return request('post','/api/sys/user/password',obj) return request("post", "/api/sys/user/password", obj);
} };
\ No newline at end of file
export const fetchAllUserTags = (query) => {
return request("post", "/api/mgr/userTag/list", query, "F");
};
<template> <template>
<div class="price-config-container"> <div class="price-config-container">
<a-form-model <a-form-model :model="formModel" :label-col="{span:4}" :wrapper-col="{span: 10}" :rules="formRules" ref="formv">
:model="formModel" <a-form-model-item label="会员价格" ref="vipPriceVal" prop="vipPrice">
:label-col="{span:4}" <a-input v-model="formModel.vipPrice" suffix="1个月"></a-input>
:wrapper-col="{span: 4}" </a-form-model-item>
:rules="formRules" <a-form-model-item label="标签用户会员价格">
ref="formv" <a-row justify="space-between" v-for="utp in formModel.userTagPrice" :key="utp.id" :value="utp.id">
> <a-col :span="4">
<a-form-model-item label="会员价格" ref="vipPriceVal" prop="vipPrice"> <span class="required">*</span>会员价格:
<a-input v-model="formModel.vipPrice" prefix="¥" suffix="1个月"></a-input> </a-col>
</a-form-model-item> <a-col :span="7">
<!-- <a-form-model-item label="折扣配置" ref="discountFor3MonVal" prop="discountFor3Mon"> <a-input v-model="utp.price" suffix="1个月"></a-input>
<a-input v-model="formModel.discountFor3Mon" prefix="¥" suffix="3个月" @blur="blurValidate('discountFor3MonVal')"></a-input> </a-col>
</a-form-model-item> <a-col :span="3" class="spliter">
<a-form-model-item :wrapper-col="{span:4,offset:4}" ref="discountFor6MonVal" prop="discountFor6Mon"> 适用于:
<a-input v-model="formModel.discountFor6Mon" prefix="¥" suffix="6个月" @blur="blurValidate('discountFor6MonVal')"></a-input> </a-col>
</a-form-model-item> <a-col :span="7">
<a-form-model-item :wrapper-col="{span:4,offset:4}" ref="discountFor12MonVal" prop="discountFor12Mon"> <a-select v-model="utp.id">
<a-input v-model="formModel.discountFor12Mon" prefix="¥" suffix="12个月" @blur="blurValidate('discountFor12MonVal')"></a-input> <a-select-option :value="tag.id" v-for="tag in userTags" :key="tag.id">
</a-form-model-item> --> {{tag.name}}
<a-form-model-item label="企业会员价格" ref="enterpriceVipPriceVal" prop="enterpriceVipPrice"> </a-select-option>
<a-input v-model="formModel.enterpriceVipPrice" prefix="¥" suffix="1个月"></a-input> </a-select>
</a-form-model-item> </a-col>
<a-form-model-item :wrapper-col="{offset:4}"> </a-row>
<a-button type="primary" @click="onSubmit" :loading="btnLoading">保存</a-button> <a-button type="primary" @click="addTagedMember">+继续添加</a-button>
</a-form-model-item> </a-form-model-item>
</a-form-model>
</div> <a-form-model-item label="企业会员价格" ref="enterpriceVipPriceVal" prop="enterpriceVipPrice">
<a-input v-model="formModel.enterpriceVipPrice" suffix="1个月"></a-input>
</a-form-model-item>
<a-form-model-item :wrapper-col="{offset:4}">
<a-button type="primary" @click="onSubmit" :loading="btnLoading">保存</a-button>
</a-form-model-item>
</a-form-model>
</div>
</template> </template>
<script> <script>
import {getConfig,updateConfig} from '@/api/biz/priceConfig' import { getConfig, updateConfig } from "@/api/biz/priceConfig";
import {disposereq} from '@/utils/util'
import { disposereq } from "@/utils/util";
import { fetchAllUserTags } from "@/api/admin/user";
import { uuid } from "vue-uuid";
export default { export default {
data(){ data() {
let validatorPrice = (rule,value,callback) => { let validatorPrice = (rule, value, callback) => {
var val = parseFloat(value) var val = parseFloat(value);
if(val <= 0.0){ if (val <= 0.0) {
return callback(new Error('必须大于0')) return callback(new Error("必须大于0"));
} }
return true; return true;
}; };
return { return {
formModel: { userTags: [],
vipPrice: 0, formModel: {
discountFor3Mon: 0, vipPrice: 0,
discountFor6Mon: 0, discountFor3Mon: 0,
discountFor12Mon: 0, discountFor6Mon: 0,
enterpriceVipPrice: 0 discountFor12Mon: 0,
enterpriceVipPrice: 0,
},
btnLoading: false,
formRules: {
vipPrice: [
{
required: true,
message: "不能为空",
trigger: "blur",
},
{
type: "number",
message: "必须为数字",
trigger: "blur",
transform: (value) => {
return Number(value);
}, },
btnLoading: false, },
formRules:{ {
vipPrice: [ validator: validatorPrice,
{ message: "必须大于0",
required: true, trigger: "blur",
message: '不能为空', },
trigger: 'blur' ],
}, discountFor3Mon: [
{ {
type: 'number', required: true,
message: '必须为数字', message: "不能为空",
trigger: 'blur', trigger: "blur",
transform: (value)=>{ },
return Number(value) {
} type: "number",
}, message: "必须为数字",
{ trigger: "blur",
validator: validatorPrice, transform: (value) => {
message: '必须大于0', return Number(value);
trigger: 'blur' },
} },
], ],
discountFor3Mon: [ discountFor6Mon: [
{ {
required: true, required: true,
message: '不能为空', message: "不能为空",
trigger: 'blur' trigger: "blur",
}, },
{ {
type: 'number', type: "number",
message: '必须为数字', message: "必须为数字",
trigger: 'blur', trigger: "blur",
transform: (value)=>{ transform: (value) => {
return Number(value) return Number(value);
} },
} },
], ],
discountFor6Mon: [ discountFor12Mon: [
{ {
required: true, required: true,
message: '不能为空', message: "不能为空",
trigger: 'blur' trigger: "blur",
}, },
{ {
type: 'number', type: "number",
message: '必须为数字', message: "必须为数字",
trigger: 'blur', trigger: "blur",
transform: (value)=>{ transform: (value) => {
return Number(value) return Number(value);
} },
} },
], ],
discountFor12Mon: [ enterpriceVipPrice: [
{ {
required: true, required: true,
message: '不能为空', message: "不能为空",
trigger: 'blur' trigger: "blur",
}, },
{ {
type: 'number', type: "number",
message: '必须为数字', message: "必须为数字",
trigger: 'blur', trigger: "blur",
transform: (value)=>{ transform: (value) => {
return Number(value) return Number(value);
} },
} },
], {
enterpriceVipPrice: [ validator: validatorPrice,
{ message: "必须大于0",
required: true, trigger: "blur",
message: '不能为空', },
trigger: 'blur' ],
}, },
{ };
type: 'number', },
message: '必须为数字', created() {
trigger: 'blur', this.getPriceConfig();
transform: (value)=>{ fetchAllUserTags({
return Number(value) pageIndex: 0,
} pageSize: 1000,
}, }).then((resp) => {
{ this.userTags = resp.data;
validator: validatorPrice, });
message: '必须大于0', },
trigger: 'blur' beforeUpdate() {},
} methods: {
] blurValidate(prop) {
} this.$refs[prop].onFieldBlur();
}
}, },
created() { getPriceConfig() {
this.getPriceConfig() getConfig()
.then((res) => {
if (res.resp_code == 200) {
this.formModel = res.datas;
} else {
this.$message.info(res.resp_msg);
}
})
.catch((err) => {
disposereq(err);
});
}, },
beforeUpdate() { addTagedMember() {
if (!this.formModel.userTagPrice) {
this.formModel.userTagPrice = [];
}
this.formModel.userTagPrice.push({
name: "",
price: 0,
});
}, },
methods: { onSubmit() {
this.btnLoading = true;
blurValidate(prop){ this.$refs.formv.validate((valid) => {
this.$refs[prop].onFieldBlur() if (valid) {
}, const utp = this.formModel.userTagPrice;
getPriceConfig(){ utp.forEach((tmp) => {
getConfig().then(res => { const tag = this.userTags.find((ut) => ut.id === tmp.id);
if(res.resp_code == 200){ if (tag) {
this.formModel = res.datas tmp.name = tag.name;
}else{ }
this.$message.info(res.resp_msg); });
} updateConfig(this.formModel)
}).catch(err => { .then((res) => {
disposereq(err) if (res.resp_code == 200) {
}) this.$message.info("保存成功");
}, } else {
onSubmit(){ this.$message.info(res.resp_msg);
this.btnLoading = true
this.$refs.formv.validate(valid=>{
if(valid){
updateConfig(this.formModel).then(res => {
if(res.resp_code == 200){
this.$message.info('保存成功');
}else{
this.$message.info(res.resp_msg);
}
this.btnLoading = false
}).catch(err => {
this.btnLoading = false
disposereq(err)
})
}else{
this.btnLoading = false
} }
}) this.btnLoading = false;
})
.catch((err) => {
this.btnLoading = false;
disposereq(err);
});
} else {
this.btnLoading = false;
} }
} });
} },
},
};
</script> </script>
<style> <style>
.price-config-container{ .price-config-container {
margin: 10px; margin: 10px;
} }
</style>
\ No newline at end of file .required {
color: #f5222c;
}
.spliter {
margin-left: 10px;
}
</style>
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
* https://cli.vuejs.org/zh/config/#%E7%9B%AE%E6%A0%87%E6%B5%8F%E8%A7%88%E5%99%A8 * https://cli.vuejs.org/zh/config/#%E7%9B%AE%E6%A0%87%E6%B5%8F%E8%A7%88%E5%99%A8
* *
*/ */
// const url = 'http://edu.qkdata.com:10081' const url = 'http://edu.qkdata.com:10081'
const url = 'http://localhost:9090' // const url = 'http://localhost:9090'
// 基础路径,发布前修改这里,当前配置打包出来的资源都是相对路径 // 基础路径,发布前修改这里,当前配置打包出来的资源都是相对路径
let publicPath = '/admin' let publicPath = '/admin'
......
...@@ -1174,6 +1174,11 @@ ...@@ -1174,6 +1174,11 @@
dependencies: dependencies:
source-map "^0.6.1" source-map "^0.6.1"
"@types/uuid@^8.0.0":
version "8.3.1"
resolved "http://192.168.10.201:8081/repository/npm-public/@types/uuid/-/uuid-8.3.1.tgz#1a32969cf8f0364b3d8c8af9cc3555b7805df14f"
integrity sha1-GjKWnPjwNks9jIr5zDVVt4Bd8U8=
"@types/webpack-dev-server@^3.11.0": "@types/webpack-dev-server@^3.11.0":
version "3.11.4" version "3.11.4"
resolved "http://192.168.10.201:8081/repository/npm-public/@types/webpack-dev-server/-/webpack-dev-server-3.11.4.tgz#90d47dd660b696d409431ab8c1e9fa3615103a07" resolved "http://192.168.10.201:8081/repository/npm-public/@types/webpack-dev-server/-/webpack-dev-server-3.11.4.tgz#90d47dd660b696d409431ab8c1e9fa3615103a07"
...@@ -8353,6 +8358,11 @@ uuid@^3.3.2, uuid@^3.4.0: ...@@ -8353,6 +8358,11 @@ uuid@^3.3.2, uuid@^3.4.0:
resolved "http://192.168.10.201:8081/repository/npm-public/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" resolved "http://192.168.10.201:8081/repository/npm-public/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4= integrity sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=
uuid@^8.1.0:
version "8.3.2"
resolved "http://192.168.10.201:8081/repository/npm-public/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha1-gNW1ztJxu5r2xEXyGhoExgbO++I=
validate-npm-package-license@^3.0.1: validate-npm-package-license@^3.0.1:
version "3.0.4" version "3.0.4"
resolved "http://192.168.10.201:8081/repository/npm-public/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" resolved "http://192.168.10.201:8081/repository/npm-public/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
...@@ -8460,6 +8470,14 @@ vue-template-es2015-compiler@^1.9.0: ...@@ -8460,6 +8470,14 @@ vue-template-es2015-compiler@^1.9.0:
resolved "http://192.168.10.201:8081/repository/npm-public/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" resolved "http://192.168.10.201:8081/repository/npm-public/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
integrity sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU= integrity sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=
vue-uuid@2.0.2:
version "2.0.2"
resolved "http://192.168.10.201:8081/repository/npm-public/vue-uuid/-/vue-uuid-2.0.2.tgz#0cfb739e660a3af1d4e3342743578114f79b2438"
integrity sha1-DPtznmYKOvHU4zQnQ1eBFPebJDg=
dependencies:
"@types/uuid" "^8.0.0"
uuid "^8.1.0"
vue@^2.6.10: vue@^2.6.10:
version "2.6.12" version "2.6.12"
resolved "http://192.168.10.201:8081/repository/npm-public/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123" resolved "http://192.168.10.201:8081/repository/npm-public/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment