Browse Source

no message

master
xpz2018 9 months ago
parent
commit
22df4c496e
13 changed files with 101 additions and 138 deletions
  1. 10
      src/enums/customerEnum.ts
  2. 1
      src/views/clue/clueList/index.vue
  3. 19
      src/views/clue/cluePool/index.vue
  4. 16
      src/views/clue/customer/data.ts
  5. 19
      src/views/clue/followlist/index.vue
  6. 17
      src/views/clue/poolist/index.vue
  7. 42
      src/views/components/Profile.vue
  8. 21
      src/views/invite/index/index.vue
  9. 17
      src/views/invite/list/index.vue
  10. 21
      src/views/invite/myList/index.vue
  11. 21
      src/views/invite/seasList/index.vue
  12. 25
      src/views/staff/staff/data.ts
  13. 10
      src/views/staff/staff/modal.vue

10
src/enums/customerEnum.ts

@ -67,4 +67,14 @@ export const followStageList = [
{ label: '未到店', value: 5, color: 'gray' },
{ label: '已到店,未成单', value: 6, color: 'gray' },
{ label: '已成单', value: 7, color: 'gray' },
]
export const incomeList = [
{ label: '3000以下', value: 0 },
{ label: '3001~5000', value: 1 },
{ label: '5001~8000', value: 2 },
{ label: '8001~12000', value: 3 },
{ label: '12001~20000', value: 4 },
{ label: '20001~50000', value: 5 },
{ label: '50000以上', value: 5 },
]

1
src/views/clue/clueList/index.vue

@ -68,6 +68,7 @@
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { getClueList } from '/@/api/clue'
import Timeline from '../../components/Timeline.vue'
import Profile from '../../components/Profile.vue'
import { educationList, maritalList, genderList, followStageList } from '/@/enums/customerEnum'
const [registerTable, { reload, setPagination }] = useTable({

19
src/views/clue/cluePool/index.vue

@ -32,21 +32,7 @@
</div>
</template>
<template #userinfo="{ text, record }">
<div class="flex-row-center-start" style="padding-left: 12px;">
<Avatar :src="record.profilePhoto || 'https://dating-agency-prod.oss-cn-shenzhen.aliyuncs.com/827036501B11.png'" :size="64" />
<div class="flex-col" style="margin-left: 12px;">
<div class="flex-row">
<span class="single-line" style="font-size: 14px;color: #333;font-weight: bold;max-width: 160px;">{{record.nickName}}</span>
<!-- <span class="single-line" style="font-size: 13px;color: #666;margin: 0 12px;">(ID{{record.id}})</span> -->
</div>
<div class="flex-row">
<span style="font-size: 13px;color: #666;" v-if="record.age">{{record.age}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{educationList.find((find) => find.value === record.educationCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{maritalList.find((find) => find.value === record.maritalStatusCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;" v-if="record.occupation">{{record.occupation}}</span>
</div>
</div>
</div>
<Profile :info="record" />
</template>
<template #recordInfo="{ text, record }">
<div class="flex-col">
@ -99,9 +85,10 @@
import { useModal } from '/@/components/Modal'
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import ClueModal from '../components/modal.vue'
import Profile from '../../components/Profile.vue'
import { getCluePage, allocateCluing, deleteCluingList } from '/@/api/clue'
import { pageOrganizationMember } from '/@/api/staff/staff'
import { educationList, maritalList } from '/@/enums/customerEnum'
import { educationList, maritalList, incomeList } from '/@/enums/customerEnum'
const radioVal = ref<any>('')
const verifier = ref<any>('')

16
src/views/clue/customer/data.ts

@ -333,14 +333,14 @@ export const modalFormSchema: FormSchema[] = [
options: followStageList,
},
},
{
label: '下次跟进时间',
component: 'DatePicker',
field: 'nextFollowTime',
componentProps: {
...dateComProps,
},
},
// {
// label: '下次跟进时间',
// component: 'DatePicker',
// field: 'nextFollowTime',
// componentProps: {
// ...dateComProps,
// },
// },
{
field: 'remark',
label: '备注',

19
src/views/clue/followlist/index.vue

@ -16,23 +16,7 @@
</div>
</template> -->
<template #userinfo="{ text, record }">
<div class="flex-row-center-start" style="padding-left: 12px;">
<Avatar :src="record.profilePhoto || 'https://dating-agency-prod.oss-cn-shenzhen.aliyuncs.com/827036501B11.png'" :size="64" />
<div class="flex-col" style="margin-left: 8px;">
<div class="flex-row">
<span class="single-line" style="font-size: 14px;color: #333;font-weight: bold;max-width: 160px;">{{record.nickName}}</span>
<!-- <span class="single-line" style="font-size: 13px;color: #666;margin: 0 12px;">(ID{{record.id}})</span> -->
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{genderList.find((find) => find.value === record.genderCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;" v-if="record.phone">{{record.phone}}</span>
</div>
<div class="flex-row">
<span style="font-size: 13px;color: #666;">{{record.age}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{educationList.find((find) => find.value === record.educationCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{maritalList.find((find) => find.value === record.maritalStatusCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;" v-if="record.occupation">{{record.occupation}}</span>
</div>
</div>
</div>
<Profile :info="record" />
</template>
<template #allocateInfo="{ text, record }">
<Timeline :list="record.datingClueFollowRecordList"/>
@ -68,6 +52,7 @@
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { getClueFollow } from '/@/api/clue'
import Timeline from '../../components/Timeline.vue'
import Profile from '../../components/Profile.vue'
import { educationList, maritalList, genderList, followStageList } from '/@/enums/customerEnum'
const [registerTable, { reload, setPagination }] = useTable({

17
src/views/clue/poolist/index.vue

@ -32,21 +32,7 @@
</div>
</template>
<template #userinfo="{ text, record }">
<div class="flex-row-center-start" style="padding-left: 12px;">
<Avatar :src="record.profilePhoto || 'https://dating-agency-prod.oss-cn-shenzhen.aliyuncs.com/827036501B11.png'" :size="64" />
<div class="flex-col" style="margin-left: 12px;">
<div class="flex-row">
<span class="single-line" style="font-size: 14px;color: #333;font-weight: bold;max-width: 160px;">{{record.nickName}}</span>
<!-- <span class="single-line" style="font-size: 13px;color: #666;margin: 0 12px;">(ID{{record.id}})</span> -->
</div>
<div class="flex-row">
<span style="font-size: 13px;color: #666;" v-if="record.age">{{record.age}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{educationList.find((find) => find.value === record.educationCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{maritalList.find((find) => find.value === record.maritalStatusCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;" v-if="record.occupation">{{record.occupation}}</span>
</div>
</div>
</div>
<Profile :info="record" />
</template>
<template #recordInfo="{ text, record }">
<div class="flex-col">
@ -99,6 +85,7 @@
import { useModal } from '/@/components/Modal'
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import ClueModal from '../components/modal.vue'
import Profile from '../../components/Profile.vue'
import { getCluePool, allocateCluing, deleteCluingList } from '/@/api/clue'
import { pageOrganizationMember } from '/@/api/staff/staff'
import { educationList, maritalList } from '/@/enums/customerEnum'

42
src/views/components/Profile.vue

@ -0,0 +1,42 @@
<template>
<div class="flex-row-center-start" style="padding-left: 12px;">
<Avatar :src="info.profilePhoto || 'https://dating-agency-prod.oss-cn-shenzhen.aliyuncs.com/827036501B11.png'" :size="64" />
<div class="flex-col" style="margin-left: 12px;">
<div class="flex-row">
<span class="single-line" style="font-size: 14px;color: #333;font-weight: bold;max-width: 160px;">{{info.nickName}}</span>
<!-- <span class="single-line" style="font-size: 13px;color: #666;margin: 0 12px;">(ID{{info.id}})</span> -->
</div>
<div class="flex-row">
<span style="font-size: 13px;color: #666;" v-if="info.age">{{info.age}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{educationList.find((find) => find.value === info.educationCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{maritalList.find((find) => find.value === info.maritalStatusCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;" v-if="info.occupation">{{info.occupation}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;" v-if="info.incomeCode">月收入{{incomeList.find((find) => find.value === info.incomeCode)?.label}}</span>
</div>
</div>
</div>
</template>
<script>
import { educationList, maritalList, incomeList } from '/@/enums/customerEnum'
import { Avatar } from 'ant-design-vue'
export default {
components: { Avatar },
name: 'Timeline',
props: {
info: { //
type: Object,
default: () => {
return {}
}
},
},
data() {
return {
educationList,
maritalList,
incomeList
};
},
}
</script>

21
src/views/invite/index/index.vue

@ -29,21 +29,7 @@
</div>
</template>
<template #userinfo="{ text, record }">
<div class="flex-row">
<Image style="width: 40px;height: 40px;" :src="record.profilePhoto || 'https://dating-agency-prod.oss-cn-shenzhen.aliyuncs.com/827036501B11.png'" />
<div class="flex-col" style="margin-left: 8px;">
<div class="flex-row">
<span class="single-line" style="font-size: 14px;color: #333;font-weight: bold;max-width: 160px;">{{record.nickName}}</span>
<!-- <span class="single-line" style="font-size: 13px;color: #666;margin: 0 12px;">(ID{{record.id}})</span> -->
</div>
<div class="flex-row">
<span style="font-size: 13px;color: #666;" v-if="record.age">{{record.age}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{educationList.find((find) => find.value === record.educationCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{maritalList.find((find) => find.value === record.maritalStatusCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;" v-if="record.occupation">{{record.occupation}}</span>
</div>
</div>
</div>
<Profile :info="record" />
</template>
<template #action="{ record }">
<div class="flex-row-center-start">
@ -83,6 +69,7 @@
import { tableColumns, tableFormSchema } from './data'
import { useModal } from '/@/components/Modal'
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import Profile from '../../components/Profile.vue'
import { getInvitationPage, allocateCluing } from '/@/api/clue'
import { pageOrganizationMember } from '/@/api/staff/staff'
import { educationList, maritalList } from '/@/enums/customerEnum'
@ -110,10 +97,10 @@
})
const [registerTable, { reload, setPagination, getSelectRowKeys, clearSelectedRowKeys }] = useTable({
bordered: true,
bordered: false,
useSearchForm: true,
columns: tableColumns,
showIndexColumn: true,
showIndexColumn: false,
showTableSetting: false,
api: getInvitationPage,
rowKey: 'id',

17
src/views/invite/list/index.vue

@ -31,21 +31,7 @@
</div>
</template> -->
<template #userinfo="{ text, record }">
<div class="flex-row-center-start">
<Avatar :src="record.profilePhoto || 'https://dating-agency-prod.oss-cn-shenzhen.aliyuncs.com/827036501B11.png'" :size="64" />
<div class="flex-col" style="margin-left: 12px;">
<div class="flex-row">
<span class="single-line" style="font-size: 14px;color: #333;font-weight: bold;max-width: 160px;">{{record.nickName}}</span>
<!-- <span class="single-line" style="font-size: 13px;color: #666;margin: 0 12px;">(ID{{record.id}})</span> -->
</div>
<div class="flex-row">
<span style="font-size: 13px;color: #666;" v-if="record.age">{{record.age}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{educationList.find((find) => find.value === record.educationCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{maritalList.find((find) => find.value === record.maritalStatusCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;" v-if="record.occupation">{{record.occupation}}</span>
</div>
</div>
</div>
<Profile :info="record" />
</template>
<template #allocateInfo="{ text, record }">
<Timeline :list="record.datingClueFollowRecordList"/>
@ -90,6 +76,7 @@
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { getInvitationList, allocateCluing } from '/@/api/clue'
import Timeline from '../../components/Timeline.vue'
import Profile from '../../components/Profile.vue'
import { pageOrganizationMember } from '/@/api/staff/staff'
import { educationList, maritalList, followStageList } from '/@/enums/customerEnum'

21
src/views/invite/myList/index.vue

@ -16,23 +16,7 @@
</div>
</template>
<template #userinfo="{ text, record }">
<div class="flex-row-center-start" style="padding-left: 12px;">
<Avatar :src="record.profilePhoto || 'https://dating-agency-prod.oss-cn-shenzhen.aliyuncs.com/827036501B11.png'" :size="64" />
<div class="flex-col" style="margin-left: 12px;">
<div class="flex-row">
<span class="single-line" style="font-size: 14px;color: #333;font-weight: bold;max-width: 160px;">{{record.nickName}}</span>
<!-- <span class="single-line" style="font-size: 13px;color: #666;margin: 0 12px;">(ID{{record.id}})</span> -->
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{genderList.find((find) => find.value === record.genderCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;" v-if="record.phone">{{record.phone}}</span>
</div>
<div class="flex-row">
<span style="font-size: 13px;color: #666;">{{record.age}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{educationList.find((find) => find.value === record.educationCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{maritalList.find((find) => find.value === record.maritalStatusCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;" v-if="record.occupation">{{record.occupation}}</span>
</div>
</div>
</div>
<Profile :info="record" />
</template>
<template #allocateInfo="{ text, record }">
<Timeline :list="record.datingClueFollowRecordList"/>
@ -67,13 +51,14 @@
<script setup lang="ts">
import moment from 'moment/moment'
import { computed, ref, reactive } from 'vue'
import { Avatar, Card, Image, InputNumber, Timeline, TimelineItem, Result } from 'ant-design-vue'
import { Avatar, Card, Image, InputNumber, Result } from 'ant-design-vue'
import { useRouter } from 'vue-router'
import { tableColumns, tableFormSchema } from './data'
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { useModal } from '/@/components/Modal'
import FollowModal from '../components/modal.vue'
import Timeline from '../../components/Timeline.vue'
import Profile from '../../components/Profile.vue'
import { getMyInvitationList } from '/@/api/clue'
import { educationList, maritalList, genderList, followStageList } from '/@/enums/customerEnum'

21
src/views/invite/seasList/index.vue

@ -16,23 +16,7 @@
</div>
</template> -->
<template #userinfo="{ text, record }">
<div class="flex-row-canter-start" style="padding-left: 12px;">
<Avatar :src="record.profilePhoto || 'https://dating-agency-prod.oss-cn-shenzhen.aliyuncs.com/827036501B11.png'" :size="64" />
<div class="flex-col" style="margin-left: 12px;">
<div class="flex-row">
<span class="single-line" style="font-size: 14px;color: #333;font-weight: bold;max-width: 160px;">{{record.nickName}}</span>
<!-- <span class="single-line" style="font-size: 13px;color: #666;margin: 0 12px;">(ID{{record.id}})</span> -->
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{genderList.find((find) => find.value === record.genderCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;" v-if="record.phone">{{record.phone}}</span>
</div>
<div class="flex-row">
<span style="font-size: 13px;color: #666;">{{record.age}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{educationList.find((find) => find.value === record.educationCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;">{{maritalList.find((find) => find.value === record.maritalStatusCode)?.label}}</span>
<span style="font-size: 13px;color: #666;margin-left: 12px;" v-if="record.occupation">{{record.occupation}}</span>
</div>
</div>
</div>
<Profile :info="record" />
</template>
<template #allocateInfo="{ text, record }">
<Timeline :list="record.datingClueFollowRecordList"/>
@ -66,12 +50,13 @@
<script setup lang="ts">
import moment from 'moment/moment'
import { computed, ref, reactive } from 'vue'
import { Avatar, Card, Image, InputNumber, Timeline, TimelineItem, Result } from 'ant-design-vue'
import { Avatar, Card, Image, InputNumber, Result } from 'ant-design-vue'
import { useRouter } from 'vue-router'
import { tableColumns, tableFormSchema } from './data'
import { useMessage } from '/@/hooks/web/useMessage'
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import Timeline from '../../components/Timeline.vue'
import Profile from '../../components/Profile.vue'
import { getSeasList, receiveCluing } from '/@/api/clue'
import { educationList, maritalList, genderList, followStageList } from '/@/enums/customerEnum'

25
src/views/staff/staff/data.ts

@ -16,17 +16,17 @@ export const tableFormSchema: FormSchema[] = [
{ field: 'phone', label: '手机号', component: 'Input', colProps: { span: 6 } },
]
export const roleList = ref<any>([])
getRoleListByPage({pageSize: 100, pageNum: 1}).then((res) => {
const list = (res.items || []).map((item) => {
const { name, id } = item
return {
value: id,
label: name,
}
})
roleList.value.push(...list)
})
// export const roleList = ref<any>([])
// getRoleListByPage({pageSize: 100, pageNum: 1}).then((res) => {
// const list = (res.items || []).map((item) => {
// const { name, id } = item
// return {
// value: id,
// label: name,
// }
// })
// roleList.value.push(...list)
// })
export const modalFormSchema: FormSchema[] = [
{
@ -56,9 +56,6 @@ export const modalFormSchema: FormSchema[] = [
required: true,
field: 'orgRoleIdList',
component: 'CheckboxGroup',
componentProps: {
options: roleList,
},
},
]

10
src/views/staff/staff/modal.vue

@ -12,6 +12,7 @@
import { BasicModal, useModalInner } from '/@/components/Modal'
import { createOrganizationMember, editOrganizationMember } from '/@/api/staff/staff'
import { getOrganizationDepartment } from '/@/api/staff/department'
import { getRoleListByPage } from '/@/api/sys/menu';
const [registerForm, { resetFields, setFieldsValue, validate, updateSchema }] = useForm({
labelWidth: 100,
@ -43,8 +44,17 @@
const departmentList = ref<any>([])
departmentList.value.push(...list)
const result2 = await getRoleListByPage({pageSize: 100, pageNum: 1})
const list2 = (result2.items || []).map((item) => {
const { name, id } = item
return { value: id, label: name }
})
var roleList = ref<any>([])
roleList.value.push(...list2)
await updateSchema({ field: 'phone', componentProps: { disabled: !!ifUpdate.value } })
await updateSchema({ field: 'orgDepartmentId', componentProps: { options: departmentList } })
await updateSchema({ field: 'orgRoleIdList', componentProps: { options: roleList } })
if (!!ifUpdate.value) {
await setFieldsValue({ ...record })
}

Loading…
Cancel
Save