This commit is contained in:
xiezhijun
2021-04-20 18:18:48 +08:00
15 changed files with 397 additions and 225 deletions

View File

@ -53,8 +53,12 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="收款账号" prop="accountId">
<el-select v-model="form.accountId" placeholder="请选择">
<el-form-item label="进粉渠道" prop="accountId">
<el-select
v-model="form.accountId"
placeholder="请选择"
@change="handleOnChanelIdChange"
>
<el-option
v-for="dict in accountIdOptions"
:key="dict.dictValue"
@ -157,10 +161,7 @@
</el-col>
<el-col :span="8" v-show="orderRateOptionsShow">
<el-form-item label="拆分比例" prop="nutritionistRate">
<el-select
v-model="form.nutritionistRate"
placeholder="请选择"
>
<el-select v-model="form.nutritionistRate" placeholder="请选择">
<el-option
v-for="dict in orderRateOptions"
:key="dict.dictValue"
@ -672,12 +673,15 @@ export default {
handleOrderTypeChange() {
// console.log(this.form.orderTypeList);
},
handleOnChanelIdChange(val) {
this.initPlanningAndOperation();
},
},
watch: {
// 监听收款账号的变化
"form.accountId": function (newVal, oldVal) {
this.initPlanningAndOperation();
},
// "form.accountId": function (newVal, oldVal) {
// this.initPlanningAndOperation();
// },
"form.orderTypeList": function (newVal, oldVal) {
//判断订单类型是否选择了二开
if (newVal[1] == 1) {
@ -697,11 +701,11 @@ export default {
}
//判断是否选择了体验单
if (newVal[0] == 2) {
this.afterNutiShow = false;
this.form.onSaleId = parseInt(this.onSaleIdOptions[1].dictValue);
this.form.serveTimeId = 7;
this.form.conditioningProjectId = 12;
}else{
this.afterNutiShow = false;
this.form.onSaleId = parseInt(this.onSaleIdOptions[1].dictValue);
this.form.serveTimeId = 7;
this.form.conditioningProjectId = 12;
} else {
this.form.onSaleId = null;
this.form.serveTimeId = 90;
this.afterNutiShow = true;

View File

@ -212,6 +212,7 @@ export default {
this.$refs.cusCreateOrderDialogRef.showDialog(
{
customer: this.data.name,
accountId: this.data.channelId,
cusId: this.data.id,
preSaleId: this.data.salesman,
afterSaleId: this.data.afterDietitian,

View File

@ -11,7 +11,11 @@
<el-form ref="form" :model="form" :rules="rules" label-width="90px">
<el-col :span="16">
<el-form-item label="订单类型" prop="orderTypeName">
<el-input v-model="form.orderTypeName" placeholder="" :disabled="true"/>
<el-input
v-model="form.orderTypeName"
placeholder=""
:disabled="true"
/>
</el-form-item>
</el-col>
<el-col :span="8">
@ -32,8 +36,12 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="收款账号" prop="accountId">
<el-select v-model="form.accountId" placeholder="请选择">
<el-form-item label="进粉渠道" prop="accountId">
<el-select
v-model="form.accountId"
placeholder="请选择"
@change="handleOnChannelIdChange"
>
<el-option
v-for="dict in accountIdOptions"
:key="dict.dictValue"
@ -389,7 +397,7 @@ export default {
//是否显示售后、营养师、营养师助理
afterSaleNutriAssShow: true,
//是否显示策划、策划助理、运营、运营助理
planOperatorShow: true
planOperatorShow: true,
};
},
created() {
@ -571,9 +579,9 @@ export default {
this.resetForm("form");
// console.log("--"+obj.orderType);
this.onSaleShow = this.form.orderType == "2";
this.afterSaleNutriAssShow = this.form.orderType != "2" && this.form.afterSaleCommissOrder == 0;
this.afterSaleNutriAssShow =
this.form.orderType != "2" && this.form.afterSaleCommissOrder == 0;
this.planOperatorShow = this.form.afterSaleCommissOrder == 0;
},
handleOnClosed() {
this.reset();
@ -609,13 +617,17 @@ export default {
};
}
},
},
watch: {
// 监听收款账号的变化
"form.accountId": function (newVal, oldVal) {
// console.log("updte");
handleOnChannelIdChange(val) {
console.log(val);
this.initPlanningAndOperation();
},
},
watch: {
// 监听收款账号的变化
// "form.accountId": function (newVal, oldVal) {
// // console.log("updte");
// this.initPlanningAndOperation();
// },
},
};
</script>

View File

@ -11,6 +11,7 @@ const getters = {
roles: state => state.user.roles,
permissions: state => state.user.permissions,
userId: state => state.user.userId,
userRemark: state => state.user.remark,
permission_routes: state => state.permission.routes,
//
nutritionistIdOptions: state => state.global.nutritionistIdOptions,

View File

@ -1,100 +1,117 @@
import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { login, logout, getInfo } from "@/api/login";
import { getToken, setToken, removeToken } from "@/utils/auth";
const user = {
state: {
token: getToken(),
name: '',
avatar: '',
name: "",
avatar: "",
remark: "",
roles: [],
permissions: []
},
mutations: {
SET_TOKEN: (state, token) => {
state.token = token
state.token = token;
},
SET_NAME: (state, name) => {
state.name = name
state.name = name;
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
state.avatar = avatar;
},
SET_ROLES: (state, roles) => {
state.roles = roles
state.roles = roles;
},
SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions
state.permissions = permissions;
},
SET_USERID: (state, userId) => {
state.userId = userId
state.userId = userId;
},
SET_REMARK: (state, remark) => {
state.remark = remark;
}
},
actions: {
// 登录
Login({ commit }, userInfo) {
const username = userInfo.username.trim()
const password = userInfo.password
const code = userInfo.code
const uuid = userInfo.uuid
const username = userInfo.username.trim();
const password = userInfo.password;
const code = userInfo.code;
const uuid = userInfo.uuid;
return new Promise((resolve, reject) => {
login(username, password, code, uuid).then(res => {
setToken(res.token)
commit('SET_TOKEN', res.token)
resolve()
}).catch(error => {
reject(error)
})
})
login(username, password, code, uuid)
.then(res => {
setToken(res.token);
commit("SET_TOKEN", res.token);
resolve();
})
.catch(error => {
reject(error);
});
});
},
// 获取用户信息
GetInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getInfo(state.token).then(res => {
const user = res.user
const avatar = user.avatar == "" ? require("@/assets/image/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
commit('SET_ROLES', res.roles)
commit('SET_PERMISSIONS', res.permissions)
} else {
commit('SET_ROLES', ['ROLE_DEFAULT'])
}
commit('SET_NAME', user.userName)
commit('SET_AVATAR', avatar)
commit('SET_USERID', user.userId)
resolve(res)
}).catch(error => {
reject(error)
})
})
getInfo(state.token)
.then(res => {
const user = res.user;
const avatar =
user.avatar == ""
? require("@/assets/image/profile.jpg")
: process.env.VUE_APP_BASE_API + user.avatar;
if (res.roles && res.roles.length > 0) {
// 验证返回的roles是否是一个非空数组
commit("SET_ROLES", res.roles);
commit("SET_PERMISSIONS", res.permissions);
} else {
commit("SET_ROLES", ["ROLE_DEFAULT"]);
}
commit("SET_NAME", user.userName);
commit("SET_AVATAR", avatar);
commit("SET_USERID", user.userId);
commit("SET_REMARK", user.remark);
resolve(res);
})
.catch(error => {
reject(error);
});
});
},
// 退出系统
LogOut({ commit, state }) {
return new Promise((resolve, reject) => {
logout(state.token).then(() => {
commit('SET_TOKEN', '')
commit('SET_ROLES', [])
commit('SET_PERMISSIONS', [])
removeToken()
resolve()
}).catch(error => {
reject(error)
})
})
logout(state.token)
.then(() => {
commit("SET_TOKEN", "");
commit("SET_ROLES", []);
commit("SET_PERMISSIONS", []);
commit("SET_USERID", "");
commit("SET_REMARK", "");
removeToken();
resolve();
})
.catch(error => {
reject(error);
});
});
},
// 前端 登出
FedLogOut({ commit }) {
return new Promise(resolve => {
commit('SET_TOKEN', '')
removeToken()
resolve()
})
commit("SET_TOKEN", "");
removeToken();
resolve();
});
}
}
}
};
export default user
export default user;

View File

@ -16,8 +16,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="进粉渠道" prop="fansChannel">
<!-- <el-form-item label="进粉方式" prop="fansChannel">
<el-select v-model="queryParams.fansChannel" placeholder="请选择">
<el-option
v-for="dict in fansChannelOptions"
@ -26,8 +25,18 @@
:value="parseInt(dict.dictValue)"
/>
</el-select>
</el-form-item> -->
<el-form-item label="进粉渠道" prop="channelId">
<el-select v-model="queryParams.channelId" placeholder="请选择">
<el-option
v-for="dict in accountIdOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="parseInt(dict.dictValue)"
/>
</el-select>
</el-form-item>
<el-form-item label="营养师" prop="mainDietitian">
<el-form-item label="营养师" prop="mainDietitian" v-if="!isPartner">
<el-select v-model="queryParams.mainDietitian" placeholder="请选择">
<el-option
v-for="dict in nutritionistIdOptions"
@ -37,7 +46,11 @@
/>
</el-select>
</el-form-item>
<el-form-item label="营养师助理" prop="assistantDietitian">
<el-form-item
label="营养师助理"
prop="assistantDietitian"
v-if="!isPartner"
>
<el-select
v-model="queryParams.assistantDietitian"
placeholder="请选择"
@ -50,7 +63,7 @@
/>
</el-select>
</el-form-item>
<el-form-item label="销售人员" prop="salesman">
<el-form-item label="销售人员" prop="salesman" v-if="!isPartner">
<el-select v-model="queryParams.salesman" placeholder="请选择">
<el-option
v-for="dict in preSaleIdOptions"
@ -60,7 +73,7 @@
/>
</el-select>
</el-form-item>
<el-form-item label="售后营养师" prop="afterDietitian">
<el-form-item label="售后营养师" prop="afterDietitian" v-if="!isPartner">
<el-select v-model="queryParams.afterDietitian" placeholder="请选择">
<el-option
v-for="dict in afterSaleIdOptions"
@ -132,13 +145,18 @@
<span>{{ parseTime(scope.row.fansTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="进粉渠道"
<!-- <el-table-column
label="进粉方式"
align="center"
prop="fansChannel"
:formatter="fansChannelFormat"
>
</el-table-column>
/> -->
<el-table-column
label="进粉渠道"
align="center"
prop="channelId"
:formatter="channelFormat"
/>
<el-table-column label="客户姓名" align="center" prop="name" />
<el-table-column label="手机号" align="center" prop="phone" />
<el-table-column
@ -250,13 +268,13 @@
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
fixed="right"
width="120"
class-name="small-padding fixed-width"
v-if="!isPartner"
>
<template slot-scope="scope">
<el-button
@ -363,10 +381,10 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="进粉渠道" prop="fansChannel">
<el-select v-model="form.fansChannel" placeholder="请选择">
<el-form-item label="进粉渠道" prop="channelId">
<el-select v-model="form.channelId" placeholder="请选择">
<el-option
v-for="dict in fansChannelOptions"
v-for="dict in accountIdOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="parseInt(dict.dictValue)"
@ -393,7 +411,9 @@
<!-- 食谱计划抽屉 -->
<RecipesPlanDrawer ref="recipesPlanDrawerRef" />
<!-- 客户打卡记录 -->
<CustomerPunchLogDrawer ref="customerPunchLogDrawerRef"></CustomerPunchLogDrawer>
<CustomerPunchLogDrawer
ref="customerPunchLogDrawerRef"
></CustomerPunchLogDrawer>
</div>
</template>
@ -413,7 +433,7 @@ import PhysicalSignsDialog from "@/components/PhysicalSignsDialog";
import ContractDrawer from "@/components/ContractDrawer";
import HeatStatisticsDrawer from "@/components/HeatStatisticsDrawer";
import RecipesPlanDrawer from "@/components/RecipesPlanDrawer";
import CustomerPunchLogDrawer from "@/components/PunchLog/CustomerPunchLog";
import CustomerPunchLogDrawer from "@/components/PunchLog/CustomerPunchLog";
import { mapGetters } from "vuex";
export default {
@ -424,7 +444,7 @@ export default {
"contract-drawer": ContractDrawer,
heatStatisticsDrawer: HeatStatisticsDrawer,
RecipesPlanDrawer,
CustomerPunchLogDrawer
CustomerPunchLogDrawer,
},
data() {
const userId = store.getters && store.getters.userId;
@ -446,6 +466,8 @@ export default {
customerCenterList: [],
//
fansChannelOptions: [],
//
accountIdOptions: [],
// 弹出层标题
title: "",
// 是否显示弹出层
@ -493,6 +515,9 @@ export default {
fansTime: [
{ required: true, message: "进粉时间不能为空", trigger: "blur" },
],
channelId: [
{ required: true, message: "进粉渠道不能为空", trigger: "blur" },
],
},
fanPickerOptions: {
disabledDate(time) {
@ -505,9 +530,26 @@ export default {
this.getDicts("customer_fans_channel").then((response) => {
this.fansChannelOptions = response.data;
});
this.getDicts("cus_account").then((response) => {
if (this.isPartner) {
const accRange = this.userRemark.split("|");
this.accountIdOptions = accRange.reduce((arr, accId) => {
const tarObj = response.data.find((obj) => obj.dictValue === accId);
if (tarObj) {
arr.push(tarObj);
}
return arr;
}, []);
} else {
this.accountIdOptions = response.data;
}
});
this.getList();
},
computed: {
isPartner() {
return this.roles && this.roles.includes("partner");
},
...mapGetters([
// 售前字典
"preSaleIdOptions",
@ -517,6 +559,10 @@ export default {
"nutritionistIdOptions",
// 助理营养师字典
"nutriAssisIdOptions",
//
"userRemark",
//
"roles",
]),
},
methods: {
@ -554,6 +600,9 @@ export default {
fansChannelFormat(row, column) {
return this.selectDictLabel(this.fansChannelOptions, row.fansChannel);
},
channelFormat(row, column) {
return this.selectDictLabel(this.accountIdOptions, row.channelId);
},
handleOnOrderClick(row) {
this.$refs["cusOrderDrawerRef"].showDrawer(row);
},
@ -576,7 +625,7 @@ export default {
handleClickCustomerPunchLog(row) {
this.$refs["customerPunchLogDrawerRef"].showDrawer(row);
},
// 取消按钮
cancel() {
this.open = false;

View File

@ -19,7 +19,7 @@
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="6" v-if="!isPartner">
<el-form-item label="收款方式" prop="payTypeId">
<el-select
v-model="queryParams.payTypeId"
@ -37,10 +37,10 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="收款账号" prop="accountId">
<el-form-item label="进粉渠道" prop="accountId">
<el-select
v-model="queryParams.accountId"
placeholder="请选择账号"
placeholder="请选择渠道"
clearable
size="small"
>
@ -70,7 +70,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="6" v-if="!isPartner">
<el-form-item label="销售" prop="preSaleId">
<el-select
v-model="queryParams.preSaleId"
@ -88,7 +88,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="6" v-if="!isPartner">
<el-form-item label="售后" prop="afterSaleId">
<el-select
v-model="queryParams.afterSaleId"
@ -106,7 +106,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="6" v-if="!isPartner">
<el-form-item label="主营养师" prop="nutritionistId">
<el-select
v-model="queryParams.nutritionistId"
@ -124,7 +124,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="6" v-if="!isPartner">
<el-form-item
label="营养师助理"
prop="nutriAssisId"
@ -147,7 +147,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="6" v-if="!isPartner">
<el-form-item label="策划" prop="plannerId">
<el-select
v-model="queryParams.plannerId"
@ -165,7 +165,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="6" v-if="!isPartner">
<el-form-item label="策划助理" prop="plannerAssisId">
<el-select
v-model="queryParams.plannerAssisId"
@ -183,7 +183,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="6" v-if="!isPartner">
<el-form-item label="运营" prop="operatorId">
<el-select
v-model="queryParams.operatorId"
@ -201,7 +201,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="6" v-if="!isPartner">
<el-form-item label="运营助理" prop="operatorAssisId">
<el-select
v-model="queryParams.operatorAssisId"
@ -235,7 +235,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="6" v-if="!isPartner">
<el-form-item label="订单金额" prop="amountFlag">
<el-select
v-model="queryParams.amountFlag"
@ -356,7 +356,7 @@
</template>
</el-table-column>
<el-table-column
label="收款账号"
label="进粉渠道"
align="center"
prop="account"
width="90"
@ -586,6 +586,9 @@ export default {
isMobile() {
return this.device === "mobile";
},
isPartner() {
return this.roles && this.roles.includes("partner");
},
...mapGetters([
// 售前字典
"preSaleIdOptions",
@ -606,6 +609,10 @@ export default {
//
"userId",
//
"userRemark",
//
"roles",
//
"device",
]),
},
@ -615,7 +622,18 @@ export default {
this.payTypeIdOptions = response.data;
});
this.getDicts("cus_account").then((response) => {
this.accountIdOptions = response.data;
if (this.isPartner) {
const accRange = this.userRemark.split("|");
this.accountIdOptions = accRange.reduce((arr, accId) => {
const tarObj = response.data.find((obj) => obj.dictValue === accId);
if (tarObj) {
arr.push(tarObj);
}
return arr;
}, []);
} else {
this.accountIdOptions = response.data;
}
});
this.getDicts("cus_serve_time").then((response) => {
this.serveTimeIdOption = response.data;

View File

@ -19,21 +19,26 @@ export function getProcessMenuData(menuData) {
igdList: cur.igdList.reduce((igdArr, igdData) => {
if (igdData.id > 0) {
const tarDetail = cur.detail.find(obj => obj.id === igdData.id);
if (tarDetail) {
igdArr.push({
id: igdData.id,
name: igdData.name,
carbonRatio: igdData.carbonRatio,
fatRatio: igdData.fatRatio,
proteinRatio: igdData.proteinRatio,
cusUnit: tarDetail.cus_unit,
cusWeight: tarDetail.cus_weight,
weight: parseFloat(tarDetail.weight),
notRec: igdData.notRec,
rec: igdData.rec,
type: igdData.type
});
if (tarDetail && tarDetail.weight === -1) {
return igdArr;
}
igdArr.push({
id: igdData.id,
name: igdData.name,
carbonRatio: igdData.carbonRatio,
fatRatio: igdData.fatRatio,
proteinRatio: igdData.proteinRatio,
cusUnit: tarDetail ? tarDetail.cus_unit : igdData.cusUnit,
cusWeight: tarDetail ? tarDetail.cus_weight : igdData.cusWeight,
weight: tarDetail
? parseFloat(tarDetail.weight)
: parseFloat(igdData.weight),
notRec: igdData.notRec,
rec: igdData.rec,
type: igdData.type
});
}
return igdArr;
}, [])