Commit b873fef1 authored by 罗超's avatar 罗超

1

parent 724571e4
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
"ant-design-vue": "^2.2.8", "ant-design-vue": "^2.2.8",
"axios": "^0.21.1", "axios": "^0.21.1",
"core-js": "^3.6.5", "core-js": "^3.6.5",
"dayjs": "^1.10.7",
"element-plus": "^1.2.0-beta.3", "element-plus": "^1.2.0-beta.3",
"katex": "^0.13.18", "katex": "^0.13.18",
"lockr": "^0.9.0-beta.0", "lockr": "^0.9.0-beta.0",
......
import Axios from './axios' import Axios from './axios'
import { HttpResponse } from '@/@types' import { HttpResponse } from '@/@types'
interface ClueParams { interface ClueParams {
ClueState:number
PageIndex: number PageIndex: number
PageSize: number PageSize: number
pageCount: number pageCount: number
......
import { boot } from 'quasar/wrappers' import { boot } from 'quasar/wrappers'
import Antd from 'ant-design-vue' import Antd from 'ant-design-vue'
// import ElementPlus from 'element-plus' // import ElementPlus from 'element-plus'
// import 'element-plus/dist/index.css' import 'element-plus/dist/index.css'
import 'ant-design-vue/dist/antd.css' import 'ant-design-vue/dist/antd.css'
export default boot(({ app }) => { export default boot(({ app }) => {
// Set Antd instance on app // Set Antd instance on app
app.use(Antd) app.use(Antd)
// app.use(ElementPlus)
}) })
<template> <template>
<q-dialog <q-dialog
v-model="modelValue" v-model="show"
class="col-6" class="col-6"
persistent persistent
transition-show="scale" transition-show="scale"
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
</q-dialog> </q-dialog>
</template> </template>
<script lang="ts"> <script lang="ts">
import { ref } from 'vue' import { ref,watch } from 'vue'
interface parmas { interface parmas {
[key: string]: any [key: string]: any
...@@ -95,7 +95,8 @@ export default { ...@@ -95,7 +95,8 @@ export default {
props: { props: {
modelValue: { modelValue: {
type: Boolean, type: Boolean,
default: false default: false,
required: true
}, },
//树形结构列表 //树形结构列表
treeData: { treeData: {
...@@ -137,12 +138,16 @@ export default { ...@@ -137,12 +138,16 @@ export default {
default: 'strict' default: 'strict'
}, },
}, },
setup(props, ctx) { setup(props, ctx) {
let show=ref(false)
let tree = ref<any>(null); let tree = ref<any>(null);
let keys = ref<Array<string>>([]) let keys = ref<Array<string>>([])
let selectArray = ref<Array<SelectParams>>([]) let selectArray = ref<Array<SelectParams>>([])
let ticketArr = ref<Array<any>>([]) let ticketArr = ref<Array<any>>([])
watch(()=>props.modelValue,(val)=>{
show.value=val
})
let hideDialog = () => { let hideDialog = () => {
ctx.emit("update:modelValue", false) ctx.emit("update:modelValue", false)
} }
...@@ -161,7 +166,7 @@ export default { ...@@ -161,7 +166,7 @@ export default {
let initDefault = () => { let initDefault = () => {
selectArray.value = [] selectArray.value = []
if (props.defaultArray && props.defaultArray.length > 0&&flag) { if (props.defaultArray && props.defaultArray.length > 0&&flag) {
props.defaultArray.map((e, i) => { props.defaultArray.map((e) => {
if (e.slice(0, 1) == 1) { if (e.slice(0, 1) == 1) {
const node = tree.value.getNodeByKey(e) const node = tree.value.getNodeByKey(e)
if (node[props.childrenKey] && node[props.childrenKey].length > 0) { if (node[props.childrenKey] && node[props.childrenKey].length > 0) {
...@@ -253,6 +258,7 @@ export default { ...@@ -253,6 +258,7 @@ export default {
ctx.emit('select', selectArray.value) ctx.emit('select', selectArray.value)
} }
return { return {
show,
ticketArr, ticketArr,
myFilterMethod, myFilterMethod,
filter, filter,
......
...@@ -33,14 +33,12 @@ ...@@ -33,14 +33,12 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { import {
ref,
reactive, reactive,
onMounted
} from 'vue' } from 'vue'
import message from '@/utils/message' // import message from '@/utils/message'
import customer2 from '@/api/customer2' // import customer2 from '@/api/customer2'
export default { export default {
setup(props, ctx) { setup() {
interface dataParam { interface dataParam {
[key: string]: any [key: string]: any
} }
...@@ -71,9 +69,9 @@ ...@@ -71,9 +69,9 @@
// message.error(`${info.file.name} file upload failed.`); // message.error(`${info.file.name} file upload failed.`);
// } // }
}; };
onMounted(() => { // onMounted(() => {
}) // })
return { return {
data, data,
uploadImg uploadImg
......
...@@ -135,13 +135,14 @@ ...@@ -135,13 +135,14 @@
<div <div
v-if="(x.Type === 1 || x.Type === 2 || x.Type === 5 || x.Type == '') && x.Name !== '标签'" v-if="(x.Type === 1 || x.Type === 2 || x.Type === 5 || x.Type == '') && x.Name !== '标签'"
> >
<div v-if="x.isSelect"> <div v-if="x.labelType == 3">
<q-select <q-select
v-if="x.Name == '客户阶段' && (x.Direction == 1 || x.Direction == 2 || x.Direction == '')" v-if="x.Direction == 1 || x.Direction == 2 || x.Direction == ''"
outlined outlined
v-model="x.StartValue" v-model="x.StartValue"
:options="x.OptionsList" :options="x.OptionsList"
dense dense
:multiple="x.labelType == 4"
label="请选择" label="请选择"
class="my-special-class" class="my-special-class"
option-value="Id" option-value="Id"
...@@ -149,12 +150,15 @@ ...@@ -149,12 +150,15 @@
emit-value emit-value
map-options map-options
/> />
</div>
<div v-else-if="x.labelType == 4">
<q-select <q-select
v-if="x.Name !== '客户阶段'" v-if="x.Direction == 1 || x.Direction == 2 || x.Direction == 3 || x.Direction == ''"
outlined outlined
v-model="x.StartValue" v-model="x.StartValue"
:options="x.OptionsList" :options="x.OptionsList"
dense dense
:multiple="true"
label="请选择" label="请选择"
class="my-special-class" class="my-special-class"
option-value="Id" option-value="Id"
...@@ -163,8 +167,7 @@ ...@@ -163,8 +167,7 @@
map-options map-options
/> />
</div> </div>
<div v-else-if="x.labelType == 1 || x.labelType == 2 || x.labelType == 7">
<div v-if="!x.isSelect">
<q-input <q-input
v-if="x.Type == 1 && (x.Direction == 1 || x.Direction == 2 || x.Direction == 3 || x.Direction == '')" v-if="x.Type == 1 && (x.Direction == 1 || x.Direction == 2 || x.Direction == 3 || x.Direction == '')"
outlined outlined
...@@ -187,6 +190,9 @@ ...@@ -187,6 +190,9 @@
dense dense
/> />
</div> </div>
<div v-else>
<q-input outlined label="请输入" dense />
</div>
</div> </div>
<!-- 新增和删除 --> <!-- 新增和删除 -->
...@@ -245,13 +251,14 @@ import { ...@@ -245,13 +251,14 @@ import {
} from 'vue' } from 'vue'
import customerService from '@/api/customer' import customerService from '@/api/customer'
import labelgroup from './label-group.vue' import labelgroup from './label-group.vue'
import dayjs, { Dayjs } from 'dayjs' import dayjs from 'dayjs'
import locale from 'ant-design-vue/es/date-picker/locale/zh_CN'; import locale from 'ant-design-vue/es/date-picker/locale/zh_CN';
import { Notify } from 'quasar' import { Notify } from 'quasar'
interface params { interface params {
Name: number | string Name: number | string
IsCustom: number IsCustom: number
Type: number | string Type: number | string
labelType?: number | string
Id?: number | string Id?: number | string
Direction?: string | number Direction?: string | number
StartValue?: string | Array<any> StartValue?: string | Array<any>
...@@ -283,14 +290,13 @@ export default defineComponent({ ...@@ -283,14 +290,13 @@ export default defineComponent({
labelgroup, labelgroup,
}, },
setup(props, ctx) { setup(props, ctx) {
let rangeArr = ref<Dayjs[]>([])
let birthday = ref([])//只有一个 let birthday = ref([])//只有一个
let lableList = ref<Array<any>>([]) //标签的数组//只有一个
let filedList = ref<Array<params>>([]); //客户字段数组 let filedList = ref<Array<params>>([]); //客户字段数组
let addMsg = ref<Array<any>>([]) //筛选数组 let addMsg = ref<Array<any>>([]) //筛选数组
let isshowlabel = ref(false) //标签弹出显示 let isshowlabel = ref(false) //标签弹出显示
let selectindex = ref(0) //现在筛选数组 索引 let selectindex = ref(0) //现在筛选数组 索引
let lables = ref<Array<any>>([]) //标签的数组
let lableList = ref<Array<any>>([]) //标签的数组
//日期数组 //日期数组
let dateOptions = ref<Array<dateParams>>([]) let dateOptions = ref<Array<dateParams>>([])
let year: any = new Date().getFullYear() let year: any = new Date().getFullYear()
...@@ -358,10 +364,89 @@ export default defineComponent({ ...@@ -358,10 +364,89 @@ export default defineComponent({
Name: '小于等于' Name: '小于等于'
},] },]
const init = () => { const init = () => {
console.log('props.defaultData') console.log('init', props.defaultData)
console.log(1, props.defaultData) if (props.defaultData && props.defaultData.length > 0) {
if (props.defaultData.length > 0) { addMsg.value = []
// addMsg.value=props.defaultData props.defaultData.map((e: any) => {
let find: any = filedList.value.find((_e) => {
return _e.Id == e.Id
})
if (find && find.OptionsList) {
e.OptionsList = find.OptionsList
}
switch (find.Type) {
case 1: {//单行文本
e.labelType = 1
e.directionList = directionList2
break;
}
case 2: {//多行文本
e.labelType = 2
e.directionList = directionList2
break;
}
case 3: {//单选
e.labelType = 3
e.directionList = directionList2
e.StartValue = Number(e.StartValue)
if (find.OptionsList) {
e.OptionsList = find.OptionsList
}
break;
}
case 4: {//多选
e.labelType = 4
if (e.Id == "标签") {
e.StartValue=''
} else {
if (e.StartValue) {
e.StartValue = e.StartValue.split(',').map(e => Number(e))
} else {
e.StartValue = []
}
}
e.directionList = directionList1
if (find.OptionsList) {
e.OptionsList = find.OptionsList
}
break;
}
case 5: {//日期
e.labelType = 5
if (e.StartValue) {
birthday.value = e.StartValue.split('-')
} else {
birthday.value = []
}
console.log(5, e.StartValue)
break;
}
case 6: {//日期时间范围
e.labelType = 6
e.rangeArr = [e.StartValue, e.EndValue]
console.log(6, e.StartValue)
break;
}
case 7: {//数值
e.labelType = 7
e.directionList = directionList5
break;
}
}
addMsg.value.push(e)
})
} else {
addMsg.value = [{
Id: '标签',
Name: '标签',
Type: 1,
Direction: '',
StartValue: '',
EndValue: '',
IsCustom: 2,
directionList: directionList1
}]
} }
} }
let changeAddCondition = (val) => { let changeAddCondition = (val) => {
...@@ -396,19 +481,6 @@ export default defineComponent({ ...@@ -396,19 +481,6 @@ export default defineComponent({
IsCustom: 2 IsCustom: 2
} }
filedList.value.unshift(obj2) filedList.value.unshift(obj2)
if (props.defaultData.length === 0) {
addMsg.value.push({
Id: '标签',
Name: '标签',
Type: 1,
Direction: '',
StartValue: '',
EndValue: '',
IsCustom: 2,
directionList: directionList1
})
}
console.log("标签", filedList.value) console.log("标签", filedList.value)
}) })
} }
...@@ -430,10 +502,8 @@ export default defineComponent({ ...@@ -430,10 +502,8 @@ export default defineComponent({
} }
const showlabel = (x, y) => { const showlabel = (x, y) => {
console.log(x, y)
selectindex.value = y; selectindex.value = y;
isshowlabel.value = true isshowlabel.value = true
} }
const getlabel = (list) => { const getlabel = (list) => {
isshowlabel.value = false; isshowlabel.value = false;
...@@ -444,7 +514,7 @@ export default defineComponent({ ...@@ -444,7 +514,7 @@ export default defineComponent({
// 禁用标签 // 禁用标签
let changeLabel = () => { let changeLabel = () => {
let find: any = addMsg.value.find((e) => { let find: any = addMsg.value.find((e) => {
return e.Name == '标签' return e.Id == '标签'
}) })
if (find) { if (find) {
filedList.value.map((_e) => { filedList.value.map((_e) => {
...@@ -461,17 +531,18 @@ export default defineComponent({ ...@@ -461,17 +531,18 @@ export default defineComponent({
} }
//禁用生日 //禁用生日
let find2: any = addMsg.value.find((e) => { let find2: any = addMsg.value.find((e) => {
return e.Name == 26 return e.Id == 17
}) })
console.log('生日2', find2)
if (find2) { if (find2) {
filedList.value.map((_e) => { filedList.value.map((_e) => {
if (_e.Id == 26) { if (_e.Id == 17) {
_e.disable = true _e.disable = true
} }
}) })
} else { } else {
filedList.value.map((_e) => { filedList.value.map((_e) => {
if (_e.Id == 26) { if (_e.Id == 17) {
_e.disable = false _e.disable = false
} }
}) })
...@@ -503,51 +574,52 @@ export default defineComponent({ ...@@ -503,51 +574,52 @@ export default defineComponent({
addMsg.value[y].Name = find.Name addMsg.value[y].Name = find.Name
} }
switch (find.Type) { switch (find.Type) {
case 1: { case 1: {//单行文本
addMsg.value[y].labelType = 1
addMsg.value[y].directionList = directionList2 addMsg.value[y].directionList = directionList2
addMsg.value[y].Type = 2 addMsg.value[y].Type = 2
addMsg.value[y].isSelect = false
break; break;
} }
case 2: { case 2: {//多行文本
addMsg.value[y].labelType = 2
addMsg.value[y].directionList = directionList2 addMsg.value[y].directionList = directionList2
addMsg.value[y].Type = 2 addMsg.value[y].Type = 2
addMsg.value[y].isSelect = false
break; break;
} }
case 3: { case 3: {//多选
addMsg.value[y].labelType = 3
addMsg.value[y].directionList = directionList2 addMsg.value[y].directionList = directionList2
addMsg.value[y].Type = 2 addMsg.value[y].Type = 2
if (find.OptionsList) { if (find.OptionsList) {
addMsg.value[y].isSelect = true
addMsg.value[y].OptionsList = find.OptionsList addMsg.value[y].OptionsList = find.OptionsList
} }
break; break;
} }
case 4: { case 4: {//多选
addMsg.value[y].labelType = 4
addMsg.value[y].StartValue = []
addMsg.value[y].directionList = directionList1 addMsg.value[y].directionList = directionList1
addMsg.value[y].Type = 1 addMsg.value[y].Type = 1
if (find.OptionsList) { if (find.OptionsList) {
addMsg.value[y].isSelect = true
addMsg.value[y].OptionsList = find.OptionsList addMsg.value[y].OptionsList = find.OptionsList
} }
break; break;
} }
case 5: { case 5: {//日期
addMsg.value[y].labelType = 5
addMsg.value[y].Type = 3 addMsg.value[y].Type = 3
addMsg.value[y].isSelect = false
break; break;
} }
case 6: { case 6: {//日期时间范围
addMsg.value[y].labelType = 6
addMsg.value[y].Type = 4 addMsg.value[y].Type = 4
addMsg.value[y].isSelect = false
addMsg.value[y].rangeArr = [] addMsg.value[y].rangeArr = []
break; break;
} }
case 7: { case 7: {//数值
addMsg.value[y].labelType = 7
addMsg.value[y].directionList = directionList5 addMsg.value[y].directionList = directionList5
addMsg.value[y].Type = 5 addMsg.value[y].Type = 5
addMsg.value[y].isSelect = false
break; break;
} }
} }
...@@ -559,11 +631,11 @@ export default defineComponent({ ...@@ -559,11 +631,11 @@ export default defineComponent({
let changeRange = (val, y) => { let changeRange = (val, y) => {
let a = dayjs(val[0]._d).format(format) let a = dayjs(val[0]._d).format(format)
let b = dayjs(val[1]._d).format(format) let b = dayjs(val[1]._d).format(format)
console.log(a, b)
addMsg.value[y].StartValue = a addMsg.value[y].StartValue = a
addMsg.value[y].EndValue = b addMsg.value[y].EndValue = b
} }
const checkRule = (val: params[]) => { const checkRule = (val: Array<params>) => {
let flag = false let flag = false
flag = val.every(e => { flag = val.every(e => {
if (e.Type == 1) { if (e.Type == 1) {
...@@ -608,21 +680,24 @@ export default defineComponent({ ...@@ -608,21 +680,24 @@ export default defineComponent({
if (e.directionList) { if (e.directionList) {
delete item.directionList delete item.directionList
} }
if (e.Name == '标签' && Array.isArray(e.StartValue)) { if (item.labelType === 4 && Array.isArray(item.StartValue)) {
item.StartValue = e.StartValue.map(e => e.Id).toString() item.StartValue = item.StartValue.join(',')
} }
delete item.isSelect delete item.labelType
newVal.push(item) newVal.push(item)
}) })
console.log('change', newVal)
ctx.emit('change', newVal) ctx.emit('change', newVal)
}, { deep: true }) }, { deep: true })
onMounted(() => { //进入页面就调用 onMounted(() => { //进入页面就调用
setTimeout(() => {
init()
}, 2000)
getCustomerFiledList(); //获取客户字段 getCustomerFiledList(); //获取客户字段
init()
}) })
return { return {
birthday, birthday,
rangeArr,
dateOptions, dateOptions,
getCustomerFiledList, getCustomerFiledList,
filedList, filedList,
...@@ -631,7 +706,6 @@ export default defineComponent({ ...@@ -631,7 +706,6 @@ export default defineComponent({
addsList, addsList,
isshowlabel, isshowlabel,
selectindex, selectindex,
lables,
lableList, lableList,
showlabel, showlabel,
getlabel, getlabel,
......
import { ref, reactive } from 'vue' import { ref, reactive } from 'vue'
import clueService, { ClueParams } from '@/api/clue' import clueService, { ClueParams } from '@/api/clue'
import dayjs from 'dayjs'
const ClueModule = () => { const ClueModule = () => {
// 定义tab // 定义tab
...@@ -10,8 +11,28 @@ const ClueModule = () => { ...@@ -10,8 +11,28 @@ const ClueModule = () => {
} }
return [tab, setTab] return [tab, setTab]
} }
const TypeList = reactive([
const msg = reactive({ {
Name: '企业',
Id: 0
},
{
Name: '昵称',
Id: 1
},
{
Name: '电话',
Id: 2
}
])
const SeletObj = reactive({
selectVal: '',
selectWay: 0
})
const msg = reactive<ClueParams>({
ClueState: 1,
PageIndex: 1, PageIndex: 1,
PageSize: 10, PageSize: 10,
pageCount: 0, pageCount: 0,
...@@ -32,6 +53,16 @@ const ClueModule = () => { ...@@ -32,6 +53,16 @@ const ClueModule = () => {
OrderBy: 1, //排序 OrderBy: 1, //排序
AddCondition: 0 //查询条件 AddCondition: 0 //查询条件
}) })
const dateRange = ref([])
const format = 'YYYY/MM/DD'
const chooseDate = (val) => {
const a = dayjs(val[0]._d).format(format)
const b = dayjs(val[1]._d).format(format)
console.log(a, b)
msg.CreateSTime = a
msg.CreateETime = b
}
const data = reactive({ const data = reactive({
columns: [ columns: [
{ {
...@@ -58,33 +89,31 @@ const ClueModule = () => { ...@@ -58,33 +89,31 @@ const ClueModule = () => {
EmployeeList: [], EmployeeList: [],
rowsPerPage: 0 rowsPerPage: 0
}) })
const TypeList = reactive([ //选择方式
{ const getSelectWay = () => {
Name: '企业', msg.CorpName = ''
Id: 0 msg.WeChatName = ''
}, msg.CustomerMobile = ''
{ //1企业名称 2姓名 3备注名 4手机号
Name: '昵称', if (SeletObj.selectWay == 0) {
Id: 1 msg.CorpName = SeletObj.selectVal
}, }
{ if (SeletObj.selectWay == 1) {
Name: '备注名', msg.WeChatName = SeletObj.selectVal
Id: 2 }
}, if (SeletObj.selectWay == 2) {
{ msg.CustomerMobile = SeletObj.selectVal
Name: '电话', }
Id: 3 }
}
])
//获取线索列表 //获取线索列表
const getCluerList = (param: ClueParams) => { const getCluerList = () => {
clueService.getCustomerClueList(param).then(res => { clueService.getCustomerClueList(msg).then(res => {
console.log(res, '数据') console.log(res, '数据')
data.dataList = res.data.Data.PageData data.dataList = res.data.Data.PageData
msg.pageCount = res.data.Data.PageCount msg.pageCount = res.data.Data.PageCount
}) })
} }
return { useTab, msg, data, getCluerList, TypeList } return { useTab, msg, data, getCluerList, TypeList, SeletObj, getSelectWay, dateRange,format, chooseDate }
} }
export default ClueModule export default ClueModule
...@@ -7,9 +7,10 @@ interface dataParams { ...@@ -7,9 +7,10 @@ interface dataParams {
showDialog: boolean showDialog: boolean
shape: number shape: number
dataTree: Array<any> dataTree: Array<any>
// defaultArray: Array<number | string> defaultArray: Array<number | string>
defaultConditionList: Array<any>
editMsg: any editMsg: any
peopleNum:number peopleNum: number
} }
const msg = () => { const msg = () => {
...@@ -19,12 +20,13 @@ const msg = () => { ...@@ -19,12 +20,13 @@ const msg = () => {
} }
} }
const condition = ref<any>(null) const condition = ref<any>(null)
let defaultArray : Array<any>= []
const data = reactive<dataParams>({ const data = reactive<dataParams>({
showDialog: false, showDialog: false,
shape: 0, shape: 0,
dataTree: [], dataTree: [],
defaultArray: [],
defaultConditionList:[],
editMsg: { editMsg: {
Id: 0, Id: 0,
RuleSelectType: 1, //客户的查询类型 1并且 2或者 RuleSelectType: 1, //客户的查询类型 1并且 2或者
...@@ -33,18 +35,8 @@ const data = reactive<dataParams>({ ...@@ -33,18 +35,8 @@ const data = reactive<dataParams>({
RuleAllotWay: 1, //分配方式 1依次轮流 2随机分配 RuleAllotWay: 1, //分配方式 1依次轮流 2随机分配
ConditionList: [] //条件列表 ConditionList: [] //条件列表
}, },
peopleNum:0 peopleNum: 0
}) })
// watch(
// () =>data.defaultArray,
// (val) => {
// val.map(e => {
// console.log('valDefault', e)
// })
// }
// )
const jumpBeforePage = () => { const jumpBeforePage = () => {
router.push({ router.push({
path: '/customerSetup', path: '/customerSetup',
...@@ -81,31 +73,30 @@ const editRuleModule = () => { ...@@ -81,31 +73,30 @@ const editRuleModule = () => {
}) })
} }
}) })
console.log(val,'dpt') console.log(val, 'dpt')
} }
//获取已选人数 //获取已选人数
const getNum = (n) => { const getNum = n => {
data.peopleNum=n data.peopleNum = n
} }
//获取线索详情 //获取线索详情
const getDetail = () => { const getDetail = () => {
customerService.getCustomerClueRuleDetail(msg()).then(res => { customerService.getCustomerClueRuleDetail(msg()).then(res => {
defaultArray = []
const d = res.data.Data const d = res.data.Data
data.editMsg.DeptList = d.DeptList data.editMsg.DeptList = d.DeptList
data.editMsg.EmpList = d.EmpList data.editMsg.EmpList = d.EmpList
data.editMsg.ConditionList = d.ConditionList data.editMsg.ConditionList = d.ConditionList
data.defaultConditionList = d.ConditionList
data.editMsg.RuleAllotWay = d.RuleAllotWay data.editMsg.RuleAllotWay = d.RuleAllotWay
data.editMsg.RuleSelectType = d.RuleSelectType data.editMsg.RuleSelectType = d.RuleSelectType
const Dep= d.DeptList.map(e => { const Dep = d.DeptList.map(e => {
return '1-'+ e.DeptId return '1-' + e.DeptId
}) })
const Emp = d.EmpList.map(e => {
const Emp= d.EmpList.map(e => { return '2-' + e.Id
return '2-'+ e.Id
}) })
defaultArray = [...Dep, ...Emp] data.defaultArray = [...Dep, ...Emp]
console.log(defaultArray, 'ConditionList') console.log(d.ConditionList, 'ConditionList')
}) })
} }
//获取部门数据 //获取部门数据
...@@ -135,7 +126,7 @@ const editRuleModule = () => { ...@@ -135,7 +126,7 @@ const editRuleModule = () => {
const setCustomerClueRuleInfo = () => { const setCustomerClueRuleInfo = () => {
// console.log(data.editMsg.ConditionList) // console.log(data.editMsg.ConditionList)
// const flag = condition.value.checkRule(data.editMsg.ConditionList) // const flag = condition.value.checkRule(data.editMsg.ConditionList)
console.log(94, data.editMsg) // console.log(94, flag)
// if (!flag) return // if (!flag) return
customerService.setCustomerClueRuleInfo(data.editMsg).then(res => { customerService.setCustomerClueRuleInfo(data.editMsg).then(res => {
message.successMsg(res.data.Message) message.successMsg(res.data.Message)
...@@ -145,15 +136,13 @@ const editRuleModule = () => { ...@@ -145,15 +136,13 @@ const editRuleModule = () => {
query: { query: {
type: 'clue' type: 'clue'
} }
}) })
},2000) }, 2000)
}) })
} }
return { return {
msg, msg,
condition, condition,
defaultArray,
data, data,
getDetail, getDetail,
getEmployeeData, getEmployeeData,
......
...@@ -28,11 +28,11 @@ ...@@ -28,11 +28,11 @@
<thead> <thead>
<tr> <tr>
<th>排序</th> <th>排序</th>
<th>查询类型</th> <!-- <th>查询类型</th> -->
<th>规则</th>
<th>部门列表</th> <th>部门列表</th>
<th>人员列表</th> <th>人员列表</th>
<th>分配方式</th> <th>分配方式</th>
<th>条件描述</th>
<th width="10%">编辑</th> <th width="10%">编辑</th>
<th width="5%"></th> <th width="5%"></th>
</tr> </tr>
...@@ -43,24 +43,32 @@ ...@@ -43,24 +43,32 @@
<template v-if="defaultData.length > 0"> <template v-if="defaultData.length > 0">
<tr v-for="(item,index) in defaultData" :key="index"> <tr v-for="(item,index) in defaultData" :key="index">
<td></td> <td></td>
<td> <!-- <td>
<span v-if="item.RuleSelectType === 1">并且</span> <span v-if="item.RuleSelectType === 1">并且</span>
<span v-if="item.RuleSelectType === 2">或者</span> <span v-if="item.RuleSelectType === 2">或者</span>
</td>-->
<td>
<div v-if="item.ConditionStrList.length > 0">
<div v-for="(e,i) in item.ConditionStrList" :key="i">{{ e }}</div>
</div>
<div v-else>未匹配设定规则的客户</div>
</td> </td>
<td> <td>
<div v-for="(e) in item.DeptList" :key="e.DeptId">{{ e.DeptName }}</div> <div v-if="item.DeptList.length > 0">
<div v-for="(e) in item.DeptList" :key="e.DeptId">{{ e.DeptName }}</div>
</div>
<div v-else>-</div>
</td> </td>
<td> <td>
<div v-for="(e) in item.EmpList" :key="e.Id">{{ e.EmployeeName }}</div> <div v-if="item.EmpList.length > 0">
<div v-for="(e) in item.EmpList" :key="e.Id">{{ e.EmployeeName }}</div>
</div>
<div v-else>-</div>
</td> </td>
<td> <td>
<span v-if="item.RuleAllotWay === 1">依次轮流</span> <span v-if="item.RuleAllotWay === 1">依次轮流</span>
<span v-if="item.RuleAllotWay === 2">随机分配</span> <span v-if="item.RuleAllotWay === 2">随机分配</span>
</td> </td>
<td>
<span>未匹配设定规则的客户</span>
</td>
<td> <td>
<q-btn <q-btn
flat flat
...@@ -83,32 +91,45 @@ ...@@ -83,32 +91,45 @@
v-if="data.length > 0" v-if="data.length > 0"
:move="getDragId" :move="getDragId"
> >
<template #item="{ element }"> <template #item="{ element, index }">
<tr> <tr>
<td> <td>
<span style="color:#606266">{{ element.Sort + 1 }}</span> <span style="color:#606266">{{ index + 1 }}</span>
</td> </td>
<td> <!-- <td>
<span v-if="element.RuleSelectType === 1">并且</span> <span v-if="element.RuleSelectType === 1">并且</span>
<span v-if="element.RuleSelectType === 2">或者</span> <span v-if="element.RuleSelectType === 2">或者</span>
</td>-->
<td>
<div v-if="element.ConditionStrList.length > 0">
<div v-for="(e,i) in element.ConditionStrList" :key="i">{{ e }}</div>
</div>
<div v-else>未匹配设定规则的客户</div>
</td> </td>
<td> <td>
<div <div v-if="element.DeptList.length > 0">
v-for="(e) in element.DeptList" <div
:key="e.DeptId" v-for="(e) in element.DeptList"
>{{ e.DeptName }}</div> :key="e.DeptId"
>{{ e.DeptName }}</div>
</div>
<div v-else>-</div>
</td> </td>
<td> <td>
<div v-for="(e) in element.EmpList" :key="e.Id">{{ e.EmployeeName }}</div> <div v-if="element.EmpList.length > 0">
<div
v-for="(e) in element.EmpList"
:key="e.Id"
>{{ e.EmployeeName }}</div>
</div>
<div v-else>-</div>
</td> </td>
<td> <td>
<span v-if="element.RuleAllotWay === 1">依次轮流</span> <span v-if="element.RuleAllotWay === 1">依次轮流</span>
<span v-if="element.RuleAllotWay === 2">随机分配</span> <span v-if="element.RuleAllotWay === 2">随机分配</span>
</td> </td>
<td>
<span>{{ element.ConditionStrList.join(',') }}</span>
</td>
<td> <td>
<q-btn <q-btn
flat flat
...@@ -273,10 +294,10 @@ export default defineComponent({ ...@@ -273,10 +294,10 @@ export default defineComponent({
const setState = (msg) => { const setState = (msg) => {
customerService.setCustomerClueRuleState(msg).then(res => { customerService.setCustomerClueRuleState(msg).then(res => {
message.successMsg(res.data.Message) message.successMsg(res.data.Message)
if(msg.Type==2){ if (msg.Type == 2) {
getClueList() getClueList()
} }
}) })
} }
onMounted(() => { onMounted(() => {
...@@ -322,7 +343,8 @@ export default defineComponent({ ...@@ -322,7 +343,8 @@ export default defineComponent({
font-size: 13px; font-size: 13px;
text-align: center; text-align: center;
color: #2d2d2d; color: #2d2d2d;
padding: 10px 0; box-sizing: border-box;
padding: 10px;
font-weight: bold; font-weight: bold;
border-bottom: 1px solid #e5e5e5; border-bottom: 1px solid #e5e5e5;
} }
......
...@@ -18,32 +18,58 @@ ...@@ -18,32 +18,58 @@
<div class="page-search row items-center"> <div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md"> <div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3"> <div class="col-3">
<!-- <q-input filled v-model="SeletObj.selectVal" label='请输入'> <q-input
filled
v-model="selectVal"
clearable
@clear="getCluerList"
@update:model-value="getSelectWay(), getCluerList()"
label="请输入"
>
<template #before> <template #before>
<q-select filled style="width:120px;" @update:model-value="getSelectWay" option-value="Id" option-label="Name" v-model="SeletObj.selectWay" <q-select
:options="TypeList" emit-value map-options label="选择类型" /> filled
style="width:120px;"
@update:model-value="getSelectWay"
option-value="Id"
option-label="Name"
v-model="selectWay"
:options="TypeList"
emit-value
map-options
label="选择类型"
/>
</template> </template>
</q-input> --> </q-input>
</div> </div>
<div class="col-3"> <div class="col-3">
<!-- <q-select filled style="width:120px;" @update:model-value="getSelectTime" option-value="Id" option-label="Name" v-model="TimeObj.timeWay" <a-range-picker
:options="TimeList" emit-value map-options /> style="width:auto"
<q-date v-model="days" multiple /> --> v-model:value="dateRange"
</div> size="large"
<div class="col-3"> :locale="locale"
<a-date-picker v-model:value="value1" /> :format="format"
@change="chooseDate"
/>
</div> </div>
</div> </div>
</div> </div>
<div class="page-content"> <div class="page-content q-mt-lg">
<q-table :rows="data.dataList" <q-table
:rows="data.dataList"
:columns="data.columns" :columns="data.columns"
class="my-sticky-header-column-table" class="my-sticky-header-column-table"
row-key="name" row-key="name"
selection="multiple"> selection="multiple"
>
<template v-slot:bottom> <template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.PageIndex" color="primary" :max="msg.pageCount" <q-pagination
:input="true" /> class="full-width justify-end"
v-model="msg.PageIndex"
color="primary"
:max="msg.pageCount"
:input="true"
/>
</template> </template>
</q-table> </q-table>
</div> </div>
...@@ -51,31 +77,36 @@ ...@@ -51,31 +77,36 @@
</div> </div>
</template> </template>
<script lang='ts'> <script lang='ts'>
import {defineComponent,ref,onMounted} from 'vue' import { toRefs, defineComponent, onMounted } from 'vue'
import ClueModule from '@/module/customer/clueModule' import ClueModule from '@/module/customer/clueModule'
import locale from 'ant-design-vue/es/date-picker/locale/zh_CN';
export default defineComponent({
setup() {
let {
useTab, getCluerList, msg, data, TypeList, SeletObj, getSelectWay, dateRange, format, chooseDate
} = ClueModule()
let [tab, setTab] = useTab()
onMounted(() => {
getCluerList()
})
export default defineComponent({ return {
setup() { locale, tab, setTab, msg, getCluerList, data, TypeList, ...toRefs(SeletObj), getSelectWay, dateRange, format, chooseDate
let {
useTab, getCluerList,msg,data,TypeList
} = ClueModule()
let [ tab ,setTab]=useTab()
onMounted(()=>{
getCluerList(msg)
})
return {
tab,setTab,msg, getCluerList,data,TypeList,value1:ref("")
}
} }
}) }
})
</script> </script>
<style lang="scss"> <style lang="scss">
.customer .q-field__before{ .customer .q-field__before {
padding-right:0!important; padding-right: 0 !important;
} }
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .ant-cascader-picker {
</style> height: 100px;
border-radius: 4px;
background-color: rgba(0, 0, 0, 0.05);
overflow: hidden;
}
</style>
\ No newline at end of file
...@@ -5,13 +5,18 @@ ...@@ -5,13 +5,18 @@
<q-breadcrumbs-el label="返回" icon="navigate_before" @click="jumpBeforePage" /> <q-breadcrumbs-el label="返回" icon="navigate_before" @click="jumpBeforePage" />
<q-breadcrumbs-el label="编辑" /> <q-breadcrumbs-el label="编辑" />
</q-breadcrumbs> </q-breadcrumbs>
<q-btn color="primary" label="完成" @click="setCustomerClueRuleInfo"/> <q-btn color="primary" label="完成" @click="setCustomerClueRuleInfo" />
</div> </div>
<div class="container"> <div class="container">
<div class="content-block"> <div class="content-block">
<div class="fission-title">选择待分配客户</div> <div class="fission-title">选择待分配客户</div>
<div class="fission-subtitle">当待分配客户符合以下条件时</div> <div class="fission-subtitle">当待分配客户符合以下条件时</div>
<requestGroup v-model:addCondition="editMsg.RuleSelectType" :defaultData="editMsg.ConditionList" ref="condition" @change="getCondition"/> <requestGroup
v-model:addCondition="editMsg.RuleSelectType"
:defaultData="defaultConditionList"
ref="condition"
@change="getCondition"
/>
</div> </div>
<div class="content-block mt20"> <div class="content-block mt20">
<div class="fission-title">分配给以下部门/成员</div> <div class="fission-title">分配给以下部门/成员</div>
...@@ -19,14 +24,28 @@ ...@@ -19,14 +24,28 @@
<div class="departs flex-between-center"> <div class="departs flex-between-center">
<q-btn outline color="primary" label="选择部门/成员" @click="changeDialog" /> <q-btn outline color="primary" label="选择部门/成员" @click="changeDialog" />
<div class="flex align-center depart-title"> <div class="flex align-center depart-title">
<span>已选:{{peopleNum}}</span> <span>已选:{{ peopleNum }}</span>
<div class="per"></div> <div class="per"></div>
<span>有效账号数(已启用探马账号人数):0人</span> <span>有效账号数(已启用探马账号人数):0人</span>
</div> </div>
</div> </div>
<div class="staff-box mt20"> <div class="staff-box mt20">
<q-chip color="primary" v-for="(item,index) in editMsg.DeptList" :key='index' text-color="white" icon="work" :label="item.DeptName"></q-chip> <q-chip
<q-chip color="primary" v-for="(item,index) in editMsg.EmpList" :key='index' text-color="white" icon="person" :label="item.EmployeeName"></q-chip> color="primary"
v-for="(item,index) in editMsg.DeptList"
:key="index"
text-color="white"
icon="work"
:label="item.DeptName"
></q-chip>
<q-chip
color="primary"
v-for="(item,index) in editMsg.EmpList"
:key="index"
text-color="white"
icon="person"
:label="item.EmployeeName"
></q-chip>
</div> </div>
</div> </div>
<div class="content-block mt20"> <div class="content-block mt20">
...@@ -46,7 +65,7 @@ ...@@ -46,7 +65,7 @@
nodeKey="newId" nodeKey="newId"
labelKey="DeptName" labelKey="DeptName"
childrenKey="ChildList" childrenKey="ChildList"
strategy='leaf' strategy="leaf"
:treeData="dataTree" :treeData="dataTree"
@select="getdpt" @select="getdpt"
@getNum="getNum" @getNum="getNum"
...@@ -73,7 +92,6 @@ export default defineComponent({ ...@@ -73,7 +92,6 @@ export default defineComponent({
changeDialog, changeDialog,
msg, msg,
data, data,
defaultArray,
condition, condition,
getDetail, getDetail,
getEmployeeData, getEmployeeData,
...@@ -84,15 +102,15 @@ export default defineComponent({ ...@@ -84,15 +102,15 @@ export default defineComponent({
} = editRuleModule(); } = editRuleModule();
onMounted(() => { onMounted(() => {
if (msg().RuleId > 0) { if (msg().RuleId > 0) {
data.editMsg.Id=msg().RuleId data.editMsg.Id = msg().RuleId
getDetail() getDetail()
}else{ } else {
data.editMsg.DeptList=[] data.editMsg.DeptList = []
data.editMsg.EmpList=[] data.editMsg.EmpList = []
data.editMsg.ConditionList=[] data.editMsg.ConditionList = []
data.editMsg.RuleSelectType=1 data.editMsg.RuleSelectType = 1
data.editMsg.RuleAllotWay=1 data.editMsg.RuleAllotWay = 1
defaultArray=[] data.defaultArray = []
} }
getEmployeeData() getEmployeeData()
}) })
...@@ -101,7 +119,6 @@ export default defineComponent({ ...@@ -101,7 +119,6 @@ export default defineComponent({
changeDialog, changeDialog,
condition, condition,
...toRefs(data), ...toRefs(data),
defaultArray,
setCustomerClueRuleInfo, setCustomerClueRuleInfo,
getCondition, getCondition,
getdpt, getdpt,
......
This source diff could not be displayed because it is too large. You can view the blob instead.
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