Commit 7cea1560 authored by 黄奎's avatar 黄奎

页面修改

parent 7467ba7c
<style>
@import "../../assets/css/customerManage.css";
@import "../../assets/css/customerManage.css";
.el-table__fixed-body-wrapper table {
.el-table__fixed-body-wrapper table {
padding-bottom: 8px !important;
}
}
.clueTitle {
.clueTitle {
padding: 20px 20px 0 20px;
}
}
</style>
<template>
<div class="customerManage" style="display:flex;flex-direction:column;height:100%;">
......@@ -47,8 +47,7 @@
<el-row v-if="!multipleSelection.length" :gutter="30">
<el-col :span="4">
<span class="font-size-12" style="padding-right: 10px">场景</span>
<el-popover placement="bottom" width="180" popper-class="popover-class" v-model="visible"
trigger="click">
<el-popover placement="bottom" width="180" popper-class="popover-class" v-model="visible" trigger="click">
<div data-v-16d669bb="" class="scene-container">
<div class="scene-list">
<div class="scene-list-item" :class="{'scene-list-item-select': sceneID === item.ID}"
......@@ -56,8 +55,7 @@
{{item.SceneName}}</div>
</div>
<div class="handle-interval">
<div class="vux-flexbox handle-button vux-flex-row"
@click="MsgBus.$emit('sceneBoxShow', 4, 1)">
<div class="vux-flexbox handle-button vux-flex-row" @click="MsgBus.$emit('sceneBoxShow', 4, 1)">
<i class="el-icon-circle-plus-outline handle-button-icon"></i>
<div class="handle-button-name">新建场景</div>
</div>
......@@ -69,10 +67,8 @@
</div>
</div>
<el-select size="mini" popper-class="select-no" slot="reference" v-model="msg.ID"
placeholder="请选择">
<el-option v-for="item in SceneEmployeeList" :key="item.ID" :label="item.SceneName"
:value="item.ID">
<el-select size="mini" popper-class="select-no" slot="reference" v-model="msg.ID" placeholder="请选择">
<el-option v-for="item in SceneEmployeeList" :key="item.ID" :label="item.SceneName" :value="item.ID">
</el-option>
</el-select>
</el-popover>
......@@ -92,8 +88,7 @@
<div v-else class="flex-center">
<p class="font-size-12">已选 <span class="font-color-link">{{multipleSelection.length}}</span></p>
<div class="selection-box">
<div v-for="(item, index) in selectionList"
:key="index">
<div v-for="(item, index) in selectionList" :key="index">
<template v-if="item.show">
<el-button @click="item.myFun">
<i :class="item.class"></i>{{item.name}}
......@@ -120,8 +115,7 @@
</el-table-column>
</el-table>
<el-table v-if="!loading" ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%"
height="100%" border row-class-name="font-size-12"
@selection-change="handleSelectionChange">
height="100%" border row-class-name="font-size-12" @selection-change="handleSelectionChange">
<el-table-column v-if="!isDrawer" fixed type="selection" width="40"></el-table-column>
<el-table-column prop="ClueState" label="线索状态" show-overflow-tooltip width="80">
<template slot-scope="scope">
......@@ -139,12 +133,12 @@
{{msg.CustomerType===1?scope.row.ClueName:scope.row.CustomerName}}</p>
</template>
</el-table-column>
<el-table-column prop="CustomerSourceTypeStr" label="线索来源" v-if="queryType[1].show"
show-overflow-tooltip width="80">
<el-table-column prop="CustomerSourceTypeStr" label="线索来源" v-if="queryType[1].show" show-overflow-tooltip
width="80">
</el-table-column>
<!--CustomerSource其他的来源 -->
<el-table-column prop="SourceAccountName" label="来源细分"
v-if="queryType[2].show && msg.CustomerType === 1" show-overflow-tooltip>
<el-table-column prop="SourceAccountName" label="来源细分" v-if="queryType[2].show && msg.CustomerType === 1"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="ClueDemand" label="需求" v-if="queryType[3].show && msg.CustomerType === 1"
show-overflow-tooltip width="260">
......@@ -152,33 +146,29 @@
<el-table-column prop="CustomerLevelStr" label="客户级别" sortable width="100"
v-if="queryType[4].show && msg.CustomerType === 0" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="Contact" label="联系人" v-if="queryType[5].show&&msg.CustomerType!=1"
show-overflow-tooltip>
<el-table-column prop="Contact" label="联系人" v-if="queryType[5].show&&msg.CustomerType!=1" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="CustomerName" label="联系人" v-if="queryType[5].show&&msg.CustomerType===1"
show-overflow-tooltip width="100">
</el-table-column>
<el-table-column prop="ContactNumber" label="联系电话" sortable v-if="queryType[6].show"
show-overflow-tooltip>
<el-table-column prop="ContactNumber" label="联系电话" sortable v-if="queryType[6].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="WeChatNo" label="微信号" sortable v-if="queryType[7].show && msg.CustomerType === 1"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="PersonChargeStr" label="负责人" sortable
v-if="queryType[8].show && msg.CustomerType === 1" show-overflow-tooltip width="90">
<el-table-column prop="PersonChargeStr" label="负责人" sortable v-if="queryType[8].show && msg.CustomerType === 1"
show-overflow-tooltip width="90">
</el-table-column>
<el-table-column prop="CreateByStr" label="创建人" sortable v-if="queryType[9].show" show-overflow-tooltip
width="90">
</el-table-column>
<el-table-column prop="UpdateTime" label="上次更新时间" sortable v-if="queryType[10].show"
show-overflow-tooltip>
<el-table-column prop="UpdateTime" label="上次更新时间" sortable v-if="queryType[10].show" show-overflow-tooltip>
<template slot-scope="scope">
<span>{{scope.row.UpdateTime}}</span>
</template>
</el-table-column>
<el-table-column prop="CreateTimestr" label="创建时间" sortable v-if="queryType[11].show"
show-overflow-tooltip>
<el-table-column prop="CreateTimestr" label="创建时间" sortable v-if="queryType[11].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="IsCarefor" fixed="right" width="50" label="关注">
<template slot-scope="scope">
......@@ -212,12 +202,12 @@
</div>
<el-drawer :with-header="false" size='70%' :visible.sync="isShowCustomerInfo" direction="rtl"
:before-close="handleClose">
<customerInfoBox :CustomerId="CustomerId" @transferS="transfer" @deleteClue="deleteClue" @watersS="waters"
<customerInfoBox :CustomerId="CustomerId" @transferS="transferClue" @deleteClue="deleteClue" @watersS="waters"
@editCustS="editCust" @getList="getList" :activeNameNum="activeNameNum" :receiptType="receiptType" />
</el-drawer>
<el-drawer :with-header="false" size='70%' :visible.sync="isShowGuestInfo" direction="rtl"
:before-close="handleClose">
<guestInfoBox :CustomerId="CustomerId" @transferS="transfer" @deleteClue="deleteClue" @watersS="waters"
<guestInfoBox :CustomerId="CustomerId" @transferS="transferClue" @deleteClue="deleteClue" @watersS="waters"
@editCustS="editCust" @getList="getList" />
</el-drawer>
<div v-if="dialogTableVisible">
......@@ -248,20 +238,20 @@
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" class="add-box-btn" @click="transfer(2)">确 定</el-button>
<el-button type="primary" class="add-box-btn" @click="transferClue(2)">确 定</el-button>
<el-button class="add-box-btn add-box-cancel" @click="transferVisible = false">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import mySelect from "../dialogModel/select";
import customerInfoBox from "./customerInfoBox";
import customerDialogBox from "./customerDialogBox";
import guestDialogBox from "./guestDialogBox";
import guestInfoBox from "./guestInfoBox";
import importDialogBox from "./importDialogBox";
export default {
import mySelect from "../dialogModel/select";
import customerInfoBox from "./customerInfoBox";
import customerDialogBox from "./customerDialogBox";
import guestDialogBox from "./guestDialogBox";
import guestInfoBox from "./guestInfoBox";
import importDialogBox from "./importDialogBox";
export default {
props: {
isDrawer: {
type: Boolean,
......@@ -305,8 +295,7 @@ export default {
guestDialogBoxShow: false,
isShowGuestInfo: false, //是否显示直客弹窗
activeMenu: 1,
queryType2: [
{
queryType2: [{
label: "线索名称",
show: true,
},
......@@ -355,8 +344,7 @@ export default {
show: true,
},
],
queryType: [
{
queryType: [{
label: "线索名称",
show: true,
},
......@@ -421,6 +409,7 @@ export default {
transferMsg: {
CustomerIds: [],
EmpId: "",
CustomerType:0,//0-客户,1-直客
},
CustomerTypeText: "", // 线索名称搜索
msg: {
......@@ -437,11 +426,10 @@ export default {
IsSelectAdmin: 0,
},
total: 0,
selectionList: [
{
selectionList: [{
name: "转移",
class: "iconfont iconplus-transfer",
myFun: this.transfer,
myFun: this.transferClue,
show: true,
},
{
......@@ -464,11 +452,11 @@ export default {
isShowImport: false, //是否显示导入弹窗
importType: 1, //导入文件类型(1-客户导入,2-直客导入)
IsSelectAdminList: [], //是否是线索管理员
erpOrderObj:{}
erpOrderObj: {}
};
},
mounted() {
if(this.$route.query&&this.$route.query.erpOrderObj){
if (this.$route.query && this.$route.query.erpOrderObj) {
this.erpOrderObj = JSON.parse(this.$route.query.erpOrderObj)
let data = {
condition: "is",
......@@ -486,12 +474,12 @@ export default {
this.userInfo = this.getLocalStorage();
let $this = this;
this.MsgBus.$on("closeCustomerDialogBox", function() {
this.MsgBus.$on("closeCustomerDialogBox", function () {
$this.dialogTableVisible = false;
$this.guestDialogBoxShow = false;
$this.isShowImport = false;
});
this.MsgBus.$on("sceneSave", function(msg) {
this.MsgBus.$on("sceneSave", function (msg) {
$this.sceneList = [...msg];
$this.GetSceneEmployeeList();
let obj = {};
......@@ -501,7 +489,7 @@ export default {
$this.msg.Data = obj;
$this.getList();
});
this.MsgBus.$on("editScene", function() {
this.MsgBus.$on("editScene", function () {
$this.GetSceneEmployeeList();
});
this.GetConfigCuleAdmin();
......@@ -557,8 +545,7 @@ export default {
},
GetSceneEmployeeList() {
this.apipost(
"/api/Scene/GetSceneEmployeeList",
{
"/api/Scene/GetSceneEmployeeList", {
LableType: 4,
},
(res) => {
......@@ -606,8 +593,7 @@ export default {
(res) => {
if (res.data.resultCode == 1) {
this.EmployeeList = res.data.data;
} else {
}
} else {}
},
(err) => {}
);
......@@ -630,16 +616,13 @@ export default {
str = str + x + ",";
});
this.apipost(
"/api/Customer/DelCustomerClue",
{
"/api/Customer/DelCustomerClue", {
CustomerIds: str.substring(0, str.length - 1),
CustomerType: this.msg.CustomerType,
},
(res) => {
if (res.data.resultCode == 1) {
if (type === 1) {
}
{
if (type === 1) {} {
this.isShowCustomerInfo = false;
this.isShowGuestInfo = false;
}
......@@ -658,7 +641,7 @@ export default {
});
},
//导出
export() {},
export () {},
//转换为客户
waters(type) {
let tips = "确定将这些线索转换为客户吗?";
......@@ -682,9 +665,7 @@ export default {
};
this.apipost("/api/Customer/UpdateCustomerClue", msg, (res) => {
if (res.data.resultCode == 1) {
if (type === 1) {
}
{
if (type === 1) {} {
this.isShowCustomerInfo = false;
this.isShowGuestInfo = false;
}
......@@ -704,8 +685,7 @@ export default {
// 关注
CareforCustomer(scope) {
this.apipost(
"/api/Customer/CareforCustomer",
{
"/api/Customer/CareforCustomer", {
CustomerCreateId: scope.row.CustomerCreateId,
},
(res) => {
......@@ -717,7 +697,7 @@ export default {
);
},
// 转移
transfer(type) {
transferClue(type) {
if (type !== 2) {
if (type === 3) {
this.multipleSelection.push(this.CustomerId);
......@@ -739,8 +719,7 @@ export default {
ids = this.multipleSelection.join(",");
}
this.apipost(
"/api/Customer/AutoTransferCustomer",
{
"/api/Customer/AutoTransferCustomer", {
IDs: ids,
},
(res) => {
......@@ -766,6 +745,7 @@ export default {
this.multipleSelection.map((x, i) => {
str = str + x + ",";
});
this.transferMsg.CustomerType=this.msg.CustomerType;
this.transferMsg.CustomerIds = str.substring(0, str.length - 1);
this.apipost(
"/api/Customer/TransferCustomerClue",
......@@ -774,18 +754,15 @@ export default {
if (res.data.resultCode == 1) {
this.multipleSelection = [];
this.transferVisible = false;
if (type === 3) {
}
{
if (type === 3) {} {
this.isShowCustomerInfo = false;
this.isShowGuestInfo = false;
}
this.$message.success(res.data.message);
this.getList();
this.transferMsg = {
CustomerIds: [],
EmpId: "",
};
this.transferMsg.CustomerIds = [];
this.transferMsg.EmpId = "";
this.transferMsg.CustomerType=0;
}
}
);
......@@ -838,7 +815,7 @@ export default {
handleClose(done) {
done();
},
getList: function(isclose) {
getList: function (isclose) {
if (isclose && isclose == 1) {
this.isShowGuestInfo = false;
}
......@@ -855,8 +832,6 @@ export default {
if (!this.isDrawer) {
url = "/api/Customer/GetCustomerCluePage";
} else {
// this.msg.StartTime = this.queryTime && this.queryTime.StartTime;
// this.msg.EndTime = this.queryTime && this.queryTime.EndTime;
delete this.msg.ClueState;
delete this.msg.CustomerSourceType;
delete this.msg.OrderType;
......@@ -879,5 +854,5 @@ export default {
this.multipleSelection = val.map((x) => x.CustomerId);
},
},
};
};
</script>
\ No newline at end of file
......@@ -10,37 +10,40 @@
<el-row :gutter="20" style="position: relative;">
<el-col :xs="7" :sm="6" :md="5" :lg="4" :xl="3">
<span class="font-size-12" style="padding-right: 10px;flex-shrink: 0;">期数:</span>
<el-select size="mini" width="200" v-model="msg.PeriodsId" placeholder="请选择"
@change="getList">
<el-select size="mini" width="200" v-model="msg.PeriodsId" placeholder="请选择" @change="getList">
<el-option label="不限" :value="-1"></el-option>
<el-option v-for="item in PeroidsList" :key="item.Id" :label="item.Periods"
:value="item.Id"></el-option>
<el-option v-for="item in PeroidsList" :key="item.Id" :label="item.Periods" :value="item.Id">
</el-option>
</el-select>
</el-col>
<el-col :xs="13" :sm="14" :md="15" :lg="16" :xl="17" v-if="PredictData.State==1">
<div style="text-align: right;position: absolute;right: 20px;top: 0;font-size: 14px;">
{{PredictData.EmpType==1?'当月预期利润':'当月预期引流数量'}}
<template v-if="PredictData.EmpType==1">
<span style="font-size: 16px;" :style="{'color':PredictData.OrderProfit>PredictData.LimitMoney?'red':'green'}">{{PredictData.OrderProfit}}</span>
<span style="font-size: 16px;"
:style="{'color':PredictData.OrderProfit>PredictData.LimitMoney?'red':'green'}">{{PredictData.OrderProfit}}</span>
<template v-if="PredictData.LimitMoney>0">
<span style="font-size: 16px;"> /</span>
<span style="font-size: 16px;">
{{PredictData.LimitMoney}}
</span>
</template>
<span style="color: red;margin-left: 5px;" v-if="PredictData.LimitMoney>0&&PredictData.LimitMoney>PredictData.OrderProfit">
<span style="color: red;margin-left: 5px;"
v-if="PredictData.LimitMoney>0&&PredictData.LimitMoney>PredictData.OrderProfit">
目标未达成仍需努力
</span>
</template>
<template v-else>
<span style="font-size: 16px;" :style="{'color':PredictData.LureNum>PredictData.LimitNum?'red':'green'}">{{PredictData.LureNum}}</span>
<span style="font-size: 16px;"
:style="{'color':PredictData.LureNum>PredictData.LimitNum?'red':'green'}">{{PredictData.LureNum}}</span>
<template v-if="PredictData.LimitNum>0">
<span style="font-size: 16px;"> /</span>
<span style="font-size: 16px;">
{{PredictData.LimitNum}}
</span>
</template>
<span style="color: red;margin-left: 5px;font-size: 14px;" v-if="PredictData.LimitNum>0&&PredictData.LimitNum>PredictData.LureNum">
<span style="color: red;margin-left: 5px;font-size: 14px;"
v-if="PredictData.LimitNum>0&&PredictData.LimitNum>PredictData.LureNum">
目标未达成仍需努力
</span>
</template>
......@@ -78,7 +81,8 @@
</el-table-column>
<el-table-column label="工资规则">
<template slot-scope="scope">
<span :class="scope.row.WageReId?'cursor-p':''" @click="GenerateScale(scope.row)">{{scope.row.WageType!=1?'上季度定档':'新员工比例'}}</span>
<span :class="scope.row.WageReId?'cursor-p':''"
@click="GenerateScale(scope.row)">{{scope.row.WageType!=1?'上季度定档':'新员工比例'}}</span>
</template>
</el-table-column>
<el-table-column label="追加工资">
......@@ -122,8 +126,8 @@
</div>
<div v-if="total>0">
<el-pagination class="Mypagination" background @current-change="handleCurrentChange"
:page-sizes="[10, 20, 30, 60, 90, 100]" :page-size="msg.pageSize" layout="total, sizes, prev, pager, next"
@size-change="handleSizeChange" :total="total">
:page-sizes="[10, 20, 30, 60, 90, 100]" :page-size="msg.pageSize"
layout="total, sizes, prev, pager, next" @size-change="handleSizeChange" :total="total">
</el-pagination>
</div>
<!-- 查看生成比例 -->
......@@ -143,29 +147,37 @@
import commissionPopUp from "../dialogModel/commissionPopUp"
import inAccordanceWith from "../dialogModel/inAccordanceWithDialog"
export default {
components:{
components: {
commissionPopUp,
inAccordanceWith
},
data() {
return {
commissionPopUpVisible:false,
parameters:{},
outerVisible:false,
objNew:{},
commissionratioList:[],
EmName:'',
EmpType:'',
outerVisible:false,
loading:false,
commissionPopUpVisible: false,
parameters: {},
outerVisible: false,
objNew: {},
commissionratioList: [],
EmName: '',
EmpType: '',
outerVisible: false,
loading: false,
PeroidsList: [],
titleList:[
{name:'不限',id:'-1'},
{name:'引流规则',id:'2'},
{name:'销售规则',id:'1'}
titleList: [{
name: '不限',
id: '-1'
},
{
name: '引流规则',
id: '2'
},
{
name: '销售规则',
id: '1'
}
],
dataList:[],
total:0,
dataList: [],
total: 0,
msg: {
pageIndex: 1,
pageSize: 20,
......@@ -209,33 +221,32 @@
'rgba(196,60,141,1)',
'rgba(195,90,141,1)',
],
PredictData:{}
PredictData: {}
}
},
mounted() {
let $this = this
this.getList()
this.GetCommissionPeroidsList()
this.MsgBus.$on("closeaddContacts", function() {
this.MsgBus.$on("closeaddContacts", function () {
$this.commissionPopUpVisible = false;
});
this.getMyCommissionMonthPredict()
},
methods: {
getMyCommissionMonthPredict(){
getMyCommissionMonthPredict() {
this.apipost(
"/api/commission/GetMyCommissionMonthPredict", { },
"/api/commission/GetMyCommissionMonthPredict", {},
(res) => {
if (res.data.resultCode == 1) {
this.PredictData = res.data.data
console.log(this.PredictData,'---')
}
},
(err) => {}
);
},
// 提成详情
commissionDetails(item){
commissionDetails(item) {
this.parameters = item
this.commissionPopUpVisible = true
},
......@@ -247,9 +258,10 @@
},
// 设置进度
setItemProgress(data) {
if(this.commissionratioList.AvgLureNum>=data.StartValue&&this.commissionratioList.AvfOrderNum>=data.EndValue){
if (this.commissionratioList.AvgLureNum >= data.StartValue && this.commissionratioList.AvfOrderNum >=
data.EndValue) {
return 100
}else{
} else {
return 100
}
},
......@@ -262,11 +274,12 @@
},
// 设置当前进度条状态,显示不同颜色
setItemStatus(data) {
if(this.commissionratioList.AvgLureNum>=data.StartValue&&this.commissionratioList.AvfOrderNum>=data.EndValue){
if (this.commissionratioList.AvgLureNum >= data.StartValue && this.commissionratioList.AvfOrderNum >=
data.EndValue) {
return 'exception'
}
},
formatProgress(data){
formatProgress(data) {
if (data.StartValue > 0) {
const s = data.StartValue.toString().slice(0, -4) ? data.StartValue.toString().slice(0, -4) : '0'
const e = data.StartValue.toString().slice(-4, -3)
......@@ -288,8 +301,8 @@
},
// 获取员工生成比例
GenerateScale(item){
if(!item.WageReId){
GenerateScale(item) {
if (!item.WageReId) {
return
}
this.objNew = item
......@@ -297,7 +310,7 @@
},
GetCommissionPeroidsList() { //期数下拉
this.apipost(
"/api/Commission/GetCommissionPeroidsList",{},res => {
"/api/Commission/GetCommissionPeroidsList", {}, res => {
if (res.data.resultCode == 1) {
this.PeroidsList = res.data.data;
} else {
......@@ -317,7 +330,7 @@
this.loading = false
this.dataList = res.data.data.pageData
this.total = res.data.data.count;
}else{
} else {
this.loading = false
this.$message.error(res.data.message);
}
......@@ -336,61 +349,79 @@
</script>
<style scoped>
/deep/.el-table tr:first-child th:nth-child(6){
/deep/.el-table tr:first-child th:nth-child(6) {
background: #FFE082 !important;
}
/deep/.el-table tr:first-child th:nth-child(7){
/deep/.el-table tr:first-child th:nth-child(7) {
background: #FFE082 !important;
}
/deep/.el-table tr:first-child th:nth-child(8){
/deep/.el-table tr:first-child th:nth-child(8) {
background: #FFE082 !important;
}
/deep/.el-table tr:first-child th:nth-child(9){
/deep/.el-table tr:first-child th:nth-child(9) {
background: #E1BEE7 !important;
}
/deep/.el-table tr:first-child th:nth-child(10){
/deep/.el-table tr:first-child th:nth-child(10) {
background: #E1BEE7 !important;
}
/deep/.el-table tr:first-child th:nth-child(11){
/deep/.el-table tr:first-child th:nth-child(11) {
background: #E1BEE7 !important;
}
/deep/.el-table tr td:nth-child(6){
/deep/.el-table tr td:nth-child(6) {
background: #FFE082;
}
/deep/.el-table tr td:nth-child(7){
/deep/.el-table tr td:nth-child(7) {
background: #FFE082;
}
/deep/.el-table tr td:nth-child(8){
/deep/.el-table tr td:nth-child(8) {
background: #FFE082;
}
/deep/.el-table tr td:nth-child(9){
/deep/.el-table tr td:nth-child(9) {
background: #E1BEE7;
}
/deep/.el-table tr td:nth-child(10){
/deep/.el-table tr td:nth-child(10) {
background: #E1BEE7;
}
/deep/.el-table tr td:nth-child(11){
/deep/.el-table tr td:nth-child(11) {
background: #E1BEE7;
}
.cursor-p{
.cursor-p {
cursor: pointer;
}
.cursor-p:hover{
.cursor-p:hover {
color: #409EFF;
}
.red{
.red {
color: red;
}
.black{
.black {
color: black;
cursor: pointer;
padding: 5px 10px 5px 0;
}
.green{
.green {
color: green;
cursor: pointer;
}
.black:hover,.green:hover{
.black:hover,
.green:hover {
color: #409EFF;
}
</style>
\ No newline at end of file
<style scoped>
@import "../../../assets/css/customerManage.css";
* {
font-family: "perfectFont";
}
.query-box .el-row .el-col {
display: flex;
align-items: center;
margin-bottom: 15px;
}
.query-box .el-row .el-col span {
flex-shrink: 0;
}
.orderAllList {
background-color: #ffffff;
display: flex;
flex-wrap: wrap;
}
.orderAllList-box {
flex: 1;
max-width: 600px;
......@@ -28,30 +33,36 @@
flex-direction: column;
border-radius: 5px;
}
.orderAllList-top{
}
.orderAllList-top div{
.orderAllList-top {}
.orderAllList-top div {
width: 25%;
float: left;
}
.orderAllList-top span{
.orderAllList-top span {
font-size: 14px;
}
.orderAllList-top span:last-child{
.orderAllList-top span:last-child {
margin-left: 10px;
}
.red {
color: #f72e52;
}
.blue {
color: #3a7cf7;
}
.status-box {
display: flex;
flex-direction: row;
justify-content: flex-end;
}
.status-text {
display: flex;
flex-direction: row;
......@@ -59,13 +70,14 @@
margin-left: 15px;
font-size: 13px;
}
.tis-k {
width: 10px;
height: 10px;
margin-right: 10px;
}
</style>
<template>
</style>
<template>
<div class="customerManage">
<div class="tools">
<h1> {{pagesTitle=='销售'?'订单管理':'订单统计管理'}}</h1>
......@@ -81,30 +93,16 @@
@change="handleCurrentChange(1)" @keyup.enter.native="handleCurrentChange(1)"></el-input>
</el-col>
<el-col v-if="pagesTitle!='销售'" :xs="7" :sm="6" :md="5" :lg="4" :xl="3">
<span class="font-size-12" style="padding-right: 10px"
>业务员</span
>
<span class="font-size-12" style="padding-right: 10px">业务员</span>
<el-select size="mini" v-model="msg.EnterId" @change="handleCurrentChange(1)">
<el-option
v-for="(item, index) in EmployeeList"
:key="index"
:label="item.EmName"
:value="item.EmployeeId"
>
<el-option v-for="(item, index) in EmployeeList" :key="index" :label="item.EmName" :value="item.EmployeeId">
</el-option>
</el-select>
</el-col>
<el-col v-if="pagesTitle!='销售'" :xs="7" :sm="6" :md="5" :lg="4" :xl="3">
<span class="font-size-12" style="padding-right: 10px"
>引流人</span
>
<span class="font-size-12" style="padding-right: 10px">引流人</span>
<el-select size="mini" v-model="msg.LureEmpId" @change="handleCurrentChange(1)">
<el-option
v-for="(item, index) in EmployeeList"
:key="index"
:label="item.EmName"
:value="item.EmployeeId"
>
<el-option v-for="(item, index) in EmployeeList" :key="index" :label="item.EmName" :value="item.EmployeeId">
</el-option>
</el-select>
</el-col>
......@@ -124,96 +122,52 @@
@change="handleCurrentChange(1)" @keyup.enter.native="handleCurrentChange(1)"></el-input>
</el-col>
<el-col :xs="7" :sm="6" :md="5" :lg="4" :xl="3">
<span class="font-size-12" style="padding-right: 10px"
>订单类型</span
>
<span class="font-size-12" style="padding-right: 10px">订单类型</span>
<el-select size="mini" v-model="msg.OrderType" @change="handleCurrentChange(1)">
<el-option
v-for="(item, index) in OrderTypeList"
:key="index"
:label="item.Name"
:value="item.Id"
>
<el-option v-for="(item, index) in OrderTypeList" :key="index" :label="item.Name" :value="item.Id">
</el-option>
</el-select>
</el-col>
<el-col :xs="7" :sm="6" :md="5" :lg="4" :xl="3">
<span class="font-size-12" style="padding-right: 10px">订单状态</span>
<el-select size="mini" v-model="msg.OrderState" @change="handleCurrentChange(1)">
<el-option v-for="(item,index) in OrderStatusList"
:key="index"
:label="item.Name" :value="item.Id"> </el-option>
<el-option v-for="(item,index) in OrderStatusList" :key="index" :label="item.Name" :value="item.Id">
</el-option>
</el-select>
</el-col>
<el-col :xs="7" :sm="6" :md="5" :lg="4" :xl="3">
<span class="font-size-12" style="padding-right: 10px">收款状态</span>
<el-select size="mini" v-model="msg.Q_IsCollect" @change="handleCurrentChange(1)">
<el-option v-for="(item,index) in QIsCollectList"
:key="index"
:label="item.Name" :value="item.Id"> </el-option>
<el-option v-for="(item,index) in QIsCollectList" :key="index" :label="item.Name" :value="item.Id">
</el-option>
</el-select>
</el-col>
<el-col :xs="8" :sm="7" :md="6" :lg="4" :xl="3">
<span class="font-size-12" style="padding-right: 10px">报名开始</span>
<el-date-picker
v-model="msg.StartTime"
@change="handleCurrentChange(1)"
size="mini"
style="width: 100%;"
format="yyyy-MM-dd"
type="date"
value-format="yyyy-MM-dd"
placeholder="开始日期">
<el-date-picker v-model="msg.StartTime" @change="handleCurrentChange(1)" size="mini" style="width: 100%;"
format="yyyy-MM-dd" type="date" value-format="yyyy-MM-dd" placeholder="开始日期">
</el-date-picker>
</el-col>
<el-col :xs="8" :sm="7" :md="6" :lg="4" :xl="3">
<span class="font-size-12" style="padding-right: 10px">报名结束</span>
<el-date-picker
v-model="msg.EndTime"
@change="handleCurrentChange(1)"
size="mini"
style="width: 100%;"
format="yyyy-MM-dd"
type="date"
value-format="yyyy-MM-dd"
placeholder="结束日期">
<el-date-picker v-model="msg.EndTime" @change="handleCurrentChange(1)" size="mini" style="width: 100%;"
format="yyyy-MM-dd" type="date" value-format="yyyy-MM-dd" placeholder="结束日期">
</el-date-picker>
</el-col>
<el-col :xs="8" :sm="7" :md="6" :lg="4" :xl="3">
<span class="font-size-12" style="padding-right: 10px"
>出发开始</span
>
<el-date-picker
v-model="msg.DepartSTime"
@change="handleCurrentChange(1)"
size="mini"
style="width: 100%"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
type="date"
placeholder="出发开始"
>
<span class="font-size-12" style="padding-right: 10px">出发开始</span>
<el-date-picker v-model="msg.DepartSTime" @change="handleCurrentChange(1)" size="mini" style="width: 100%"
format="yyyy-MM-dd" value-format="yyyy-MM-dd" type="date" placeholder="出发开始">
</el-date-picker>
</el-col>
<el-col :xs="8" :sm="7" :md="6" :lg="4" :xl="3">
<span class="font-size-12" style="padding-right: 10px"
>出发结束</span
>
<el-date-picker
v-model="msg.DepartETime"
@change="handleCurrentChange(1)"
size="mini"
style="width: 100%"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
type="date"
placeholder="出发结束"
>
<span class="font-size-12" style="padding-right: 10px">出发结束</span>
<el-date-picker v-model="msg.DepartETime" @change="handleCurrentChange(1)" size="mini" style="width: 100%"
format="yyyy-MM-dd" value-format="yyyy-MM-dd" type="date" placeholder="出发结束">
</el-date-picker>
</el-col>
<el-col :xs="8" :sm="7" :md="6" :lg="4" :xl="3">
<el-button icon="iconfont iconshaixuan"
class="crm-btn query-btn crm-btn-mini margin-right0"
<el-button icon="iconfont iconshaixuan" class="crm-btn query-btn crm-btn-mini margin-right0"
@click="sceneShow= true">高级筛选</el-button>
</el-col>
</el-row>
......@@ -295,47 +249,27 @@
<el-col :xs="12" :sm="12" :md="12" :lg="8" :xl="8">
<span class="font-size-12" style="padding-right: 10px">线路</span>
<el-select size="mini" v-model="msg.LineId" @change="handleCurrentChange(1)">
<el-option v-for="(item,index) in LineList"
:key="index"
:label="item.LineName" :value="item.LineID"> </el-option>
<el-option v-for="(item,index) in LineList" :key="index" :label="item.LineName" :value="item.LineID">
</el-option>
</el-select>
</el-col>
<el-col :xs="12" :sm="12" :md="12" :lg="8" :xl="8">
<span class="font-size-12" style="padding-right: 10px">团队类型</span>
<el-select size="mini" v-model="msg.TravelType" @change="handleCurrentChange(1)">
<el-option v-for="(item,index) in TravelTypeList"
:key="index"
:label="item.Name" :value="item.Id"> </el-option>
<el-option v-for="(item,index) in TravelTypeList" :key="index" :label="item.Name" :value="item.Id">
</el-option>
</el-select>
</el-col>
<el-col :xs="12" :sm="12" :md="12" :lg="8" :xl="8">
<span class="font-size-12" style="padding-right: 10px"
>完结开始</span
>
<el-date-picker
v-model="msg.FinishSTime"
@change="handleCurrentChange(1)"
size="mini"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
type="date"
placeholder="机票完结开始"
>
<span class="font-size-12" style="padding-right: 10px">完结开始</span>
<el-date-picker v-model="msg.FinishSTime" @change="handleCurrentChange(1)" size="mini" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" type="date" placeholder="机票完结开始">
</el-date-picker>
</el-col>
<el-col :xs="12" :sm="12" :md="12" :lg="8" :xl="8">
<span class="font-size-12" style="padding-right: 10px"
>完结结束</span
>
<el-date-picker
v-model="msg.FinishETime"
@change="handleCurrentChange(1)"
size="mini"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
type="date"
placeholder="机票完结结束"
>
<span class="font-size-12" style="padding-right: 10px">完结结束</span>
<el-date-picker v-model="msg.FinishETime" @change="handleCurrentChange(1)" size="mini" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" type="date" placeholder="机票完结结束">
</el-date-picker>
</el-col>
......@@ -344,23 +278,31 @@
</el-dialog>
</div>
</template>
<script>
</template>
<script>
import orderList from "./orderList";
export default {
components: {
orderList
},
props:['pagesTitle'],
props: ['pagesTitle'],
data() {
return {
SummaryList: [],
sceneShow: false,
title: '',//op 销售
VisaList: [
{ Name: "不限", Id: "0" },
{ Name: "未出签", Id: "1" },
{ Name: "已出签", Id: "2" },
title: '', //op 销售
VisaList: [{
Name: "不限",
Id: "0"
},
{
Name: "未出签",
Id: "1"
},
{
Name: "已出签",
Id: "2"
},
],
MultipleChoiceList: [
//多选项目
......@@ -403,37 +345,62 @@
EnterId: '0', //业务员id
OrderState: 1, //订单状态
Q_IsCollect: "0", //收款状态
StartTime: "",//报名开始日期
EndTime: "",//报名结束日期
FinishSTime: "",//完结开始时间
FinishETime: "",//完结结束时间
DepartSTime: "",//出发开始
DepartETime: "",//出发结束
TCNUM: "",//团号
ProductName: "",//商品名称
CustomerName: "",//客户名称
LureEmpId: "0",//引流人员
LineId: "0",//线路
TravelType: 0,//跟团类型 1跟团 2当地游
OrderType: "0",//订单类型
IsSelectCRM: 1,//1来源crm
IsMyOrder: 1,//1我的订单
StartTime: "", //报名开始日期
EndTime: "", //报名结束日期
FinishSTime: "", //完结开始时间
FinishETime: "", //完结结束时间
DepartSTime: "", //出发开始
DepartETime: "", //出发结束
TCNUM: "", //团号
ProductName: "", //商品名称
CustomerName: "", //客户名称
LureEmpId: "0", //引流人员
LineId: "0", //线路
TravelType: 0, //跟团类型 1跟团 2当地游
OrderType: "0", //订单类型
IsSelectCRM: 1, //1来源crm
IsMyOrder: 1, //1我的订单
},
ticketingStatusList: [], // 出票状态
OrderStatusList: [
{Name: '不限',Id:0},
{Name: '正常',Id:1},
{Name: '取消',Id:2}],
OrderStatusList: [{
Name: '不限',
Id: 0
},
{
Name: '正常',
Id: 1
},
{
Name: '取消',
Id: 2
}
],
OrderTypeList: [],
TravelTypeList: [
{Name: '不限',Id:0},
{Name: '跟团',Id:1},
{Name: '当地游',Id:2}
TravelTypeList: [{
Name: '不限',
Id: 0
},
{
Name: '跟团',
Id: 1
},
{
Name: '当地游',
Id: 2
}
],
QIsCollectList: [
{ Name: "不限", Id: "0" },
{ Name: "已收齐", Id: "1" },
{ Name: "未收齐", Id: "2" },
QIsCollectList: [{
Name: "不限",
Id: "0"
},
{
Name: "已收齐",
Id: "1"
},
{
Name: "未收齐",
Id: "2"
},
],
EmployeeList: [], // 业务员数据
userInfo: {},
......@@ -444,9 +411,9 @@
pagesTitle: {
handler(val, oldVal) {
this.title = val
if(this.title!='OP'){
if (this.title != 'OP') {
this.msg.IsMyOrder = 1
}else{
} else {
this.msg.IsMyOrder = 0
}
},
......@@ -456,9 +423,9 @@
mounted() {
this.msg.StartTime = this.getBeforeDate(31, new Date())
this.msg.EndTime = this.formatDate(new Date(), "YYYY-MM-dd", 0)
if(this.title!='OP'){
if (this.title != 'OP') {
this.msg.IsMyOrder = 1
}else{
} else {
this.msg.IsMyOrder = 0
}
this.userInfo = this.getLocalStorage();
......@@ -468,15 +435,15 @@
let data = JSON.parse(this.$route.query.erpOrderObj);
this.msg.OrderId = data.OrderId;
}
this.getLineList();//线路
this.getLineList(); //线路
this.Employee(); //业务员
this.GetOrderTypeEnumList(); //订单状态枚举
let $this = this;
this.MsgBus.$on("closeGetList", function() {
this.MsgBus.$on("closeGetList", function () {
$this.getList();
});
$this.MsgBus.$on("closeBillMaking", function() {
$this.MsgBus.$on("closeBillMaking", function () {
for (let i = 0; i < $this.dataList.length; i++) {
$this.dataList[i].checkList = [];
$this.dataList[i].selectedType = "";
......@@ -534,8 +501,7 @@
EmployeeId: "0",
};
this.EmployeeList.unshift(data);
} else {
}
} else {}
},
(err) => {}
);
......@@ -594,7 +560,6 @@
let data = res.data.data.pageData;
this.dataList = data;
this.total = res.data.data.count;
// this.StatModel = res.data.data.StatModel;
this.loading = false;
} else {
this.$message.error(res.data.message);
......@@ -602,7 +567,7 @@
}
);
},
getSummaryData(){
getSummaryData() {
this.apipost2(
"CarSingle_post_GetGuestOrderStatistics",
this.msg,
......@@ -610,7 +575,6 @@
if (res.data.resultCode == 1) {
let data = res.data.data;
this.SummaryList = data
// console.log(data)
} else {
this.$message.error(res.data.message);
}
......@@ -627,5 +591,4 @@
},
},
};
</script>
\ No newline at end of file
</script>
\ No newline at end of file
import axios from 'axios'
import domainManager from './domainManager'
const getLocalStorage = function () {
......@@ -8,10 +7,9 @@ const getLocalStorage = function () {
} else {
return null;
}
}
//CRM接口
export default function(cmd,content, msg, successCall, faildCall) {
console.log('CRM接口', content)
}
//CRM接口
export default function (cmd, content, msg, successCall, faildCall) {
if (msg == null || msg == "") {
msg = {}
}
......@@ -51,5 +49,4 @@ const getLocalStorage = function () {
successCall(res)
}
}, faildCall)
}
\ No newline at end of file
}
\ No newline at end of file
......@@ -5,7 +5,7 @@ export default function() {
//CRM API
let domainUrl = "";
// domainUrl = "http://192.168.10.46:8500";
domainUrl = "http://192.168.10.226:5003";
domainUrl = "http://192.168.10.128:5003";
// domainUrl = "http://crm.oytour.com"
//domainUrl = "http://localhost:5003";
let locationName = window.location.hostname;
......
......@@ -135,7 +135,6 @@ export default {
if (msg == null || msg == "") {
msg = {}
}
console.log('CRM接口', this)
var apiurl = this.domainManager().PostUrl + cmd;
var timestamp = (new Date()).valueOf();
var token = "";
......
......@@ -246,7 +246,6 @@
//获取客户操作配置
const getConfig = () => {
customerSetService.getCustomerConfig({}).then(res => {
console.log('客户操作配置', res.data.Data)
data.data = res.data.Data
if (data.data.PublicGetDept == -1) {
data.PublicGetDeptState = false
......@@ -312,7 +311,6 @@
data.data.AbandonDept = ids
data.data.AbandonDeptList = dept
}
console.log('dpt', dept)
}
//以下部门允许领取公海客户
const ChangePublicGetDeptState = val => {
......@@ -324,7 +322,7 @@
watch(
() => data.data,
val => {
console.log('watch', val)
}, {
deep: true
}
......@@ -347,7 +345,6 @@
}
}
})
</script>
<style lang="scss" scoped>
.CustomerOperation {
......@@ -409,5 +406,4 @@
padding: 0 14px;
margin: 6px;
}
</style>
\ No newline at end of file
......@@ -13,20 +13,20 @@
<div style="height: 100%; width: 100%;padding: 16px">
<div class="rightrow" style="margin-top: 0px;">
<div class="leftwidth">字段名称:</div>
<el-input clearable outlined v-model="addMsg.Name" counter maxlength="8" placeholder="请输入字段名称"
:rules="[val => !!val || '请输入字段名称']" dense style="width: 400px;" />
<el-input clearable outlined v-model="addMsg.Name" counter maxlength="8"
placeholder="请输入字段名称" :rules="[val => !!val || '请输入字段名称']" dense
style="width: 400px;" />
</div>
<div class="rightrow" style="margin-top: 0px;">
<div class="leftwidth">部门选择:</div>
<div>
<el-radio v-model="departmentType" val="1" label="公司字段"
@input='addMsg.DeptId=0' />
<el-radio v-model="departmentType" val="2" label="部门字段"
@input='addMsg.DeptId=0' />
<el-radio v-model="departmentType" val="1" label="公司字段" @input='addMsg.DeptId=0' />
<el-radio v-model="departmentType" val="2" label="部门字段" @input='addMsg.DeptId=0' />
<div v-if="departmentType==2">
<el-tree :treeData='deptl' :defaultArray="returnString" nodeKey="DeptId" style="width: 300px;"
:multiple="false" labelKey="DeptName" childrenKey="ChildList"
tipText="选择部门" @getChild="getChild" classStr="col-6 q-pb-lg">
<el-tree :treeData='deptl' :defaultArray="returnString" nodeKey="DeptId"
style="width: 300px;" :multiple="false" labelKey="DeptName"
childrenKey="ChildList" tipText="选择部门" @getChild="getChild"
classStr="col-6 q-pb-lg">
</el-tree>
</div>
</div>
......@@ -36,8 +36,8 @@
<div class="rightrow" v-if='tab==1'>
<div class="leftwidth">字数限制:</div>
<el-input v-model.number="addMsg.WordNum" outlined dense type="number" :max='50' placeholder="请输入"
:min='0' maxlength="8" style="width: 400px" />
<el-input v-model.number="addMsg.WordNum" outlined dense type="number" :max='50'
placeholder="请输入" :min='0' maxlength="8" style="width: 400px" />
</div>
<div class="rightrow" v-if='tab==1'>
<div class="leftwidth">输入类型:</div>
......@@ -46,8 +46,8 @@
</div>
<div class="rightrow" v-if='tab==2'>
<div class="leftwidth">文字字数:</div>
<el-input v-model.number="addMsg.WordNum" outlined dense type="number" :max='2000' placeholder="请输入"
:min='0' maxlength="2000" style="width: 400px" />
<el-input v-model.number="addMsg.WordNum" outlined dense type="number" :max='2000'
placeholder="请输入" :min='0' maxlength="2000" style="width: 400px" />
</div>
<div class="rightrow" v-if='tab==3|| tab==4'>
<div class="leftwidth">列表选项:</div>
......@@ -56,8 +56,8 @@
<div style="display: flex;margin-bottom: 10px;">
<i class="iconfont icon-drag"
style="font-size: 26px;color: #777;margin-right: 10px;"></i>
<el-input v-model.number="element.Name" outlined dense clearable placeholder="请输入"
style="width: 250px" />
<el-input v-model.number="element.Name" outlined dense clearable
placeholder="请输入" style="width: 250px" />
<div
style="display: flex;align-items: center;margin-top: 8px;margin-left: 10px;height: 26px;">
<div style="width: 26px;height: 26px;margin-right: 10px;"
......@@ -78,15 +78,14 @@
</div>
<div class="rightrow" v-if='tab==7'>
<div class="leftwidth">小数位数:</div>
<el-select filled stack-label option-value="Id" option-label="Id"
style="width: 300px;" v-model="addMsg.Digits" ref="Id" :options="decimalslist"
dense map-options />
<el-select filled stack-label option-value="Id" option-label="Id" style="width: 300px;"
v-model="addMsg.Digits" ref="Id" :options="decimalslist" dense map-options />
</div>
<div class="rightrow">
<div class="leftwidth">属性设置:</div>
<div class="q-gutter-sm">
<el-switch v-model="addMsg.Required" :true-value="1"
:false-value="2"></el-switch>必填项
<el-switch v-model="addMsg.Required" :true-value="1" :false-value="2"></el-switch>
必填项
<el-switch v-model="addMsg.Enable" :true-value="1" :false-value="2"></el-switch>启用
</div>
</div>
......@@ -117,11 +116,15 @@
<script>
import draggable from "vuedraggable";
export default {
components: { draggable },
components: {
draggable
},
props: {
passobj: {
type: Object,
default: () => { return {} },
default: () => {
return {}
},
},
passdeptl: {
type: Array,
......@@ -145,7 +148,31 @@
let loading = ref(false)
let tabsList = ref(props.passtabsList)
let checkboxList = ref(props.passcheckboxList)
let decimalslist = ref([{ Id: 0 }, { Id: 1 }, { Id: 2 }, { Id: 3 }, { Id: 4 }, { Id: 5 }, { Id: 6 }, { Id: 7 }, { Id: 8 }, { Id: 9 }, { Id: 10 }, { Id: 11 },])
let decimalslist = ref([{
Id: 0
}, {
Id: 1
}, {
Id: 2
}, {
Id: 3
}, {
Id: 4
}, {
Id: 5
}, {
Id: 6
}, {
Id: 7
}, {
Id: 8
}, {
Id: 9
}, {
Id: 10
}, {
Id: 11
}, ])
let returnString = ref([])
if (addMsg.value.Id > 0) {
tab.value = addMsg.value.Type
......@@ -172,7 +199,7 @@
const getcancel = () => {
ctx.emit('getcancel', 1)
}
const savewb = () => {//数据保存
const savewb = () => { //数据保存
let submitobj = JSON.parse(JSON.stringify(addMsg.value))
submitobj.Type = tab.value //先类型赋值
if (submitobj.Name == '') {
......@@ -202,7 +229,7 @@
if (submitobj.Type == 3 || submitobj.Type == 4) {
for (let i = 0; i < submitobj.OptionsList.length; i++) {
let x = submitobj.OptionsList[i]
if (x.Name == ''|| x.Name == null) {
if (x.Name == '' || x.Name == null) {
this.$message.error({
type: 'negative',
message: `请填写列表选项值`,
......@@ -231,7 +258,6 @@
loading.value = true
Vue.prototype.apipost.setCustomerFiledInfo(submitobj).then((res) => {
if (res.data.Code == 1) {
console.log(res)
this.$message.error({
icon: 'iconfont icon-chenggong',
color: 'accent',
......@@ -241,7 +267,7 @@
})
loading.value = false
ctx.emit('getcancel', 2)
} else {//如果移动失败 重新获取列表
} else { //如果移动失败 重新获取列表
loading.value = false
}
})
......@@ -253,7 +279,7 @@
}
addMsg.value.DeptId = tempStr
}
const getdefault = () => {//切换模式的时候 初始化
const getdefault = () => { //切换模式的时候 初始化
addMsg.value = {
Id: 0,
Type: 1,
......@@ -271,8 +297,8 @@
};
}
return {
getcancel,//关闭弹窗
savewb,//保存数据
getcancel, //关闭弹窗
savewb, //保存数据
Isadd: ref(true),
addMsg,
deptl,
......
......@@ -11,7 +11,7 @@
</div>
</div>
<div class="box-businessModel" :class="{ 'checked-border': msg.type == 2 }" @click="chooseChange(2)">
<div >
<div>
<i class="iconfont icon-customer" style="font-size:38px"></i>
<span class="q-mx-md" style="font-size:28px">+</span>
<i class="iconfont icon-qiye" style="font-size:38px"></i>
......@@ -32,14 +32,12 @@
} from 'vue'
export default defineComponent({
setup() {
const msg = reactive({
type: 1
})
const chooseChange = (n) => {
msg.type = n;
console.log(msg)
}
return {
msg,
......@@ -47,7 +45,6 @@
}
}
})
</script>
<style lang="scss" scoped>
.businessModel {
......@@ -106,5 +103,4 @@
border: 2px solid #3470ff !important;
color: #3470ff;
}
</style>
\ No newline at end of file
......@@ -227,7 +227,6 @@
cancel: '取消',
ok: "确认"
}).onOk(() => {
console.log('>>>> OK', id)
let msg = {
RuleId: id,
Type: 2,
......@@ -237,10 +236,8 @@
}
const configChange = () => {
customerSetService.setCustomerClueRuleConfig(configMsg).then(res => {
console.log(228, res.data)
})
}
const setState = (msg) => {
customerSetService.setCustomerClueRuleState(msg).then(res => {
message.successMsg(res.data.Message)
......
......@@ -113,7 +113,6 @@
});
},
datadragEnd(e) {
// console.log('拖动结束',e)
let olddragId = 0
if (e.newIndex > 0) {
olddragId = data[e.newIndex - 1].Id
......@@ -127,7 +126,6 @@
}
this.apipost('/api/Scene/SetCustomerFiledState',msg,(res) => {
if (res.data.Code == 1) {
console.log(res)
} else {//如果移动失败 重新获取列表
this.changePage()
}
......
......@@ -2,28 +2,12 @@
<div class="customerPhase page-body">
<div style="display: flex;align-items: center;justify-content: space-between;">
<div style="display: flex;align-items: center;">
<q-btn
v-if="state.data.length < 20"
color="accent"
style="margin-bottom: 10px;"
class="q-mr-md"
label="创建阶段流程"
@click="jumpPage('/editor/createStageRange')"
size="sm"
></q-btn>
<span
style="margin-left: 20px;color: rgb(133, 133, 152);"
>已添加:{{ state.data.length }}/20</span>
<q-btn v-if="state.data.length < 20" color="accent" style="margin-bottom: 10px;" class="q-mr-md"
label="创建阶段流程" @click="jumpPage('/editor/createStageRange')" size="sm"></q-btn>
<span style="margin-left: 20px;color: rgb(133, 133, 152);">已添加:{{ state.data.length }}/20</span>
</div>
<q-btn
color="white"
text-color="black"
style="margin-bottom: 10px;"
class="q-mr-md"
label="阶段管理"
size="sm"
@click="jumpPage('/editor/manageStageRange')"
></q-btn>
<q-btn color="white" text-color="black" style="margin-bottom: 10px;" class="q-mr-md" label="阶段管理" size="sm"
@click="jumpPage('/editor/manageStageRange')"></q-btn>
</div>
<table class="payTable">
<thead>
......@@ -46,95 +30,64 @@
<td>
<div v-if="item.DeptEmpList && item.DeptEmpList.length > 0">
<span v-for="(x,y) in item.DeptEmpList" :key="y">
<q-chip
color="blue-1"
text-color="blue"
icon="folder"
size="sm"
v-if="x.Type == 1"
>{{ x.Name }}</q-chip>
<q-chip
color="green-1"
text-color="green"
icon="person"
size="sm"
v-if="x.Type == 2"
>{{ x.Name }}</q-chip>
<q-chip color="blue-1" text-color="blue" icon="folder" size="sm" v-if="x.Type == 1">
{{ x.Name }}</q-chip>
<q-chip color="green-1" text-color="green" icon="person" size="sm" v-if="x.Type == 2">
{{ x.Name }}</q-chip>
</span>
</div>
<span v-else>未适配其他规则的阶段</span>
</td>
<td>
<q-toggle
v-if="item.IsDefault == 1"
v-model="item.Enable"
:true-value="1"
:false-value="2"
icon="lock"
disable
/>
<q-toggle
v-else
v-model="item.Enable"
:true-value="1"
:false-value="2"
@update:model-value="setFiledState(item.Id, 1)"
/>
<q-toggle v-if="item.IsDefault == 1" v-model="item.Enable" :true-value="1" :false-value="2"
icon="lock" disable />
<q-toggle v-else v-model="item.Enable" :true-value="1" :false-value="2"
@update:model-value="setFiledState(item.Id, 1)" />
</td>
<td>
<span
v-for="(x,y) in item.StageList"
:key="y"
>{{ x }}{{ item.StageList.length != y + 1 ? '->' : '' }}</span>
<span v-for="(x,y) in item.StageList"
:key="y">{{ x }}{{ item.StageList.length != y + 1 ? '->' : '' }}</span>
</td>
<td>
<div>{{ item.UpdateByName }}</div>
<div>{{ item.UpdateTime }}</div>
</td>
<td>
<q-btn
v-if="item.IsDefault != 1"
flat
size="xs"
icon="edit"
style="font-weight:400;color: #3FC4FF"
class="q-mr-xs"
label="编辑"
@click="goedit(item.Id)"
/>
<q-btn
v-if="item.IsDefault != 1"
flat
size="xs"
icon="delete"
color="negative"
class="q-mr-xs"
label="删除"
@click="godelete(item.Id)"
/>
<q-btn v-if="item.IsDefault != 1" flat size="xs" icon="edit" style="font-weight:400;color: #3FC4FF"
class="q-mr-xs" label="编辑" @click="goedit(item.Id)" />
<q-btn v-if="item.IsDefault != 1" flat size="xs" icon="delete" color="negative" class="q-mr-xs"
label="删除" @click="godelete(item.Id)" />
</td>
</tr>
</table>
</div>
</template>
<script lang="ts">
import { defineComponent, onMounted, reactive } from 'vue'
import customerSetService from '@/api/customerSet'
import { useQuasar } from 'quasar'
import router from '@/router/index'
import {
defineComponent,
onMounted,
reactive
} from 'vue'
import customerSetService from '@/api/customerSet'
import {
useQuasar
} from 'quasar'
import router from '@/router/index'
export default defineComponent({
export default defineComponent({
setup() {
const $q = useQuasar()
const state = reactive({
data: [],
})
const getList = () => {
customerSetService.getCustomerStageFlowList({ Enable: 0 }).then((res) => {
customerSetService.getCustomerStageFlowList({
Enable: 0
}).then((res) => {
if (res.data.Code == 1) {
state.data = res.data.Data
} else {//如果移动失败 重新获取列表
} else { //如果移动失败 重新获取列表
}
})
......@@ -156,7 +109,6 @@ export default defineComponent({
});
}
const setFiledState = (Id: number, Type: number) => {
console.log(Id, Type)
let msg = {
Type: Type,
FlowId: Id,
......@@ -171,7 +123,7 @@ export default defineComponent({
position: 'top'
})
getList()
} else {//如果移动失败 重新获取列表
} else { //如果移动失败 重新获取列表
}
})
......@@ -188,7 +140,7 @@ export default defineComponent({
router.push({
path: '/editor/createStageRange',
query: {
FlowId:Id
FlowId: Id
}
})
}
......@@ -205,35 +157,34 @@ export default defineComponent({
goedit
}
}
})
})
</script>
<style>
.customerPhase .payTable {
.customerPhase .payTable {
width: 100%;
border-collapse: collapse;
}
.customerPhase .payTable tr th {
}
.customerPhase .payTable tr th {
background: #fff;
height: 40px;
font-size: 12px;
font-weight: bold;
color: #2d2d2d;
background: #f5f5fa;
}
}
.customerPhase .payTable tr {
.customerPhase .payTable tr {
background: #fff;
text-align: center;
height: 40px;
}
}
.customerPhase .payTable tr td {
.customerPhase .payTable tr td {
font-size: 13px;
text-align: center;
color: #2d2d2d;
padding: 10px 0;
font-weight: bold;
border-bottom: 1px solid #e5e5e5;
}
}
</style>
\ No newline at end of file
......@@ -101,7 +101,6 @@ export default defineComponent({
{Name:' 根据设置自动指定负责人 '},
])
const Addallocation = (url: string) => {//新增分配规则
console.log('新增匹配规则')
router.push({
path: url,
query: {
......@@ -109,9 +108,6 @@ export default defineComponent({
}
})
}
// onMounted(() => {
// })
return {
Addallocation,
icon:ref(false),
......
......@@ -12,29 +12,16 @@
<el-row :gutter="20">
<el-col :xs="14" :sm="12" :md="10" :lg="8" :xl="6">
<span class="font-size-12" style="padding-right: 10px;flex-shrink: 0;">日期:</span>
<el-date-picker
v-model="times"
size="small"
clearable
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期" @change="getTime">
<el-date-picker v-model="times" size="small" clearable type="daterange" value-format="yyyy-MM-dd"
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="getTime">
</el-date-picker>
</el-col>
</el-row>
</div>
<div style="padding: 0 0 30px 0;background: #ffffff;">
<!-- :style="{'height':screenHeight}" -->
<el-table
v-loading="loading"
:data="dataList"
style="width: 100%;"
:height="screenHeight+'px'"
border
:span-method="objectSpanMethod"
:default-sort = "{prop: 'date', order: 'descending'}">
<el-table v-loading="loading" :data="dataList" style="width: 100%;" :height="screenHeight+'px'" border
:span-method="objectSpanMethod" :default-sort="{prop: 'date', order: 'descending'}">
<el-table-column fixed prop="EmpName" label="姓名"></el-table-column>
<el-table-column prop="RankName" label="排名">
<template slot-scope="scope">
......@@ -44,10 +31,7 @@
</template>
</el-table-column>
<el-table-column :label="i.Name" align="center" v-for="i in PlatformTypeList">
<el-table-column
width="50"
v-for="(item,index) in ModuleTypeList" :key="index"
prop="province"
<el-table-column width="50" v-for="(item,index) in ModuleTypeList" :key="index" prop="province"
:label="item.Name">
<template slot-scope="scope">
<template v-if="i.Name=='小红书'">
......@@ -91,7 +75,8 @@
</el-table>
</div>
<el-dialog @closed="closedDialog" :modal="true" :visible.sync="dialogTableVisible" width="900px" :close-on-click-modal="false" class="addCustomer">
<el-dialog @closed="closedDialog" :modal="true" :visible.sync="dialogTableVisible" width="900px"
:close-on-click-modal="false" class="addCustomer">
<div class="add-tit" slot="title">
<p><span></span>{{title}}排名详情</p>
<span icon="el-icon-close"></span>
......@@ -124,146 +109,148 @@
</div>
</el-dialog>
</div>
</template>
</template>
<script>
<script>
export default {
data() {
return {
title:'',
detailsObj:null,
title: '',
detailsObj: null,
dialogTableVisible: false,
formEdit:{
Id:'',// :'',//明细ID(以小红书为蓝本) 是 [string] 查看
FansNum:'',// 粉丝数量 是 [string] 查看
AddFansNum:'',// 添加分数数量 是 [string] 查看
CollectNum:'',// 收藏数量 是 [string] 查看
VisitorNum:'',// 访客数量 是 [string] 查看
LookNum:'',// 观看数量 是 [string] 查看
InteractionNum:'',// 互动数量 是 [string] 查看
DiscussNum:'',// 评论数量 是 [string] 查看
SecondsNum:'',// 观看总时长 是 [string] 查看
NoteNum:'',// 笔记数量
formEdit: {
Id: '', // :'',//明细ID(以小红书为蓝本) 是 [string] 查看
FansNum: '', // 粉丝数量 是 [string] 查看
AddFansNum: '', // 添加分数数量 是 [string] 查看
CollectNum: '', // 收藏数量 是 [string] 查看
VisitorNum: '', // 访客数量 是 [string] 查看
LookNum: '', // 观看数量 是 [string] 查看
InteractionNum: '', // 互动数量 是 [string] 查看
DiscussNum: '', // 评论数量 是 [string] 查看
SecondsNum: '', // 观看总时长 是 [string] 查看
NoteNum: '', // 笔记数量
},
errText:'',
rankingTitle3:[
errText: '',
rankingTitle3: [
'排名项目',
'第一名',
'第二名',
],
rankingTitle:[
rankingTitle: [
'第一名',
'第二名',
'第三名',
],
activeList:[
{Name:'小红书',Id:1},
{Name:'微博',Id:2},
{Name:'抖音',Id:3},
],
ModuleTypeList:[],
PlatformTypeList:[],
dataList: [
activeList: [{
Name: '小红书',
Id: 1
},
{
name:'李四',
ranking:'第一名',
小红书:{
list:[
Name: '微博',
Id: 2
},
{
name:'机票',
num:'1次',
numList:[//次数详情
Name: '抖音',
Id: 3
},
],
ModuleTypeList: [],
PlatformTypeList: [],
dataList: [{
name: '李四',
ranking: '第一名',
小红书: {
list: [{
name: '机票',
num: '1次',
numList: [ //次数详情
]
},
{
name:'日语',
num:'2次',
numList:[//次数详情
name: '日语',
num: '2次',
numList: [ //次数详情
]
}
]
},
微博:{
list:[
{
name:'机票',
num:'1次',
numList:[//次数详情
微博: {
list: [{
name: '机票',
num: '1次',
numList: [ //次数详情
]
},
{
name:'日语',
num:'2次',
numList:[//次数详情
name: '日语',
num: '2次',
numList: [ //次数详情
]
}
]
},
抖音:{
list:[
{
name:'机票',
num:'1次',
numList:[//次数详情
抖音: {
list: [{
name: '机票',
num: '1次',
numList: [ //次数详情
]
},
{
name:'日语',
num:'2次',
numList:[//次数详情
name: '日语',
num: '2次',
numList: [ //次数详情
]
}
]
},
合计: 3
},
],
}, ],
loading: false,
msg: {
StartTime:'',
EndTime:''
StartTime: '',
EndTime: ''
},
times:[],
screenHeight:'',//获取显示器高度
times: [],
screenHeight: '', //获取显示器高度
};
},
mounted() {
const that = this;
that.screenHeight = (window.innerHeight-300)
// console.log(window.innerHeight);
that.screenHeight = (window.innerHeight - 300)
this.getEnumerate()
this.init();
},
methods: {
details(row,EmpName){
details(row, EmpName) {
this.dialogTableVisible = true
this.title = EmpName
this.detailsObj = row
},
closedDialog(){
closedDialog() {
this.dialogTableVisible = false
},
getTime(){
if(this.times){
getTime() {
if (this.times) {
this.msg.StartTime = this.times[0]
this.msg.EndTime = this.times[1]
}else{
} else {
this.msg.StartTime = ''
this.msg.EndTime = ''
}
this.init()
},
getEnumerate(){
getEnumerate() {
// 平台枚举
this.apipost(
"/api/IntroduceFlowStat/GetPlatformTypeEnumList",{},
"/api/IntroduceFlowStat/GetPlatformTypeEnumList", {},
(res) => {
this.PlatformTypeList = res.data.data
},
......@@ -273,7 +260,7 @@
);
// 板块枚举
this.apipost(
"/api/IntroduceFlowStat/GetModuleTypeEnumList",{},
"/api/IntroduceFlowStat/GetModuleTypeEnumList", {},
(res) => {
this.ModuleTypeList = res.data.data
},
......@@ -290,25 +277,7 @@
this.msg,
(res) => {
this.loading = false;
if(res.data.data){
// let List = JSON.parse(JSON.stringify(res.data.data))
// for(let j=0;j<List.length;j++){
// List[j].oneArr = []
// List[j].twoArr = []
// List[j].threeArr = []
// for(let i = 0;i<List[j].NumList.length;i++){
// if(i<5){
// List[j].oneArr.push(List[j].NumList[i])
// }
// if(i>4&&i<10){
// List[j].twoArr.push(List[j].NumList[i])
// }
// if(i>9&&i<15){
// List[j].threeArr.push(List[j].NumList[i])
// }
// }
// }
// this.dataList = List
if (res.data.data) {
this.dataList = res.data.data
}
},
......@@ -334,7 +303,12 @@
});
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
objectSpanMethod({
row,
column,
rowIndex,
columnIndex
}) {
if (columnIndex === 0) {
if (rowIndex % 3 === 0) {
return {
......@@ -351,9 +325,10 @@
}
},
};
</script>
<style>
</script>
<style>
@import "../../assets/css/customerManage.css";
/* .activeThree{
color: #B97234;
}
......@@ -363,20 +338,24 @@
.activeOne{
color: #F9AE0E;
} */
.activeNumB{
.activeNumB {
color: red;
}
.activeNum{
.activeNum {
color: #409EFF;
font-size: 16px;
cursor: pointer;
}
.customerManage.border .el-table--border td{
.customerManage.border .el-table--border td {
border-right: 1px solid #EBEEF5 !important;
}
.el-table__fixed-body-wrapper table {
padding-bottom: 8px !important;
}
.el-table .xiaoji-row {
background: #ffff00;
}
......@@ -384,12 +363,15 @@
.el-table .sum-row {
background: #00b0f0;
}
.el-table .warning-col {
background: red;
}
.diy-eltabs .el-tabs__content {
height: calc(100% - 40px);
}
.diy-eltabs .data-box-item {
position: absolute;
top: 0;
......@@ -397,5 +379,4 @@
left: 0;
right: 0;
}
</style>
\ No newline at end of file
</style>
\ No newline at end of file
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