qsh 3 months ago
parent 3bbb2e5ecd
commit 93a1390eb9
  1. 9
      src/api/clue/index.js
  2. 4
      src/config/axios/service.ts
  3. 10
      src/router/modules/remaining.ts
  4. 142
      src/views/Clue/Pool/ClueAdd.vue
  5. 10
      vite.config.js

@ -62,3 +62,12 @@ export const getFollowUserList = async (params) => {
export const batchUpdateFollowUser = async (data) => { export const batchUpdateFollowUser = async (data) => {
return await request.put({ url: '/admin-api/crm/sch-clue/batchUpdateFollowUser', data }) return await request.put({ url: '/admin-api/crm/sch-clue/batchUpdateFollowUser', data })
} }
// 自动分配线索新增
export const clueInput = async (data) => {
return await request.post({
url: '/out-api/out/clue/importClue/',
data,
isSubmitForm: true
})
}

@ -49,6 +49,10 @@ const service: AxiosInstance = axios.create({
// request拦截器 // request拦截器
service.interceptors.request.use( service.interceptors.request.use(
(config: InternalAxiosRequestConfig) => { (config: InternalAxiosRequestConfig) => {
if (config.url?.startsWith('/out-api')) {
debugger
config.baseURL = ''
}
// 是否需要设置 token // 是否需要设置 token
let isToken = (config!.headers || {}).isToken === false let isToken = (config!.headers || {}).isToken === false
whiteList.some((v) => { whiteList.some((v) => {

@ -164,6 +164,16 @@ const remainingRouter: AppRouteRecordRaw[] = [
// } // }
// ] // ]
// }, // },
{
path: '/clue-add',
name: 'ClueAdd',
component: () => import('@/views/Clue/Pool/ClueAdd.vue'),
meta: {
title: '线索录入',
hidden: true,
noTagsView: true
}
},
{ {
path: '/receive-input/:id', path: '/receive-input/:id',
name: 'ReceiveInput', name: 'ReceiveInput',

@ -0,0 +1,142 @@
<template>
<div class="p-10px">
<el-form :model="form" ref="formRef" :rules="rules" label-width="80px">
<el-form-item label="学员姓名" prop="stuName">
<el-input v-model="form.stuName" placeholder="请输入" />
</el-form-item>
<el-form-item label="手机号" prop="stuMobile">
<el-input v-model="form.stuMobile" placeholder="请输入" />
</el-form-item>
<el-form-item label="线索来源" prop="source">
<el-cascader
:options="sourceOptions"
v-model="form.source"
clearable
filterable
:props="defaultProps"
style="width: 100%"
/>
</el-form-item>
<el-form-item label="咨询日期" prop="stuConsultTime">
<el-date-picker
v-model="form.stuConsultTime"
type="date"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
placeholder="请选择"
style="width: 100%"
/>
</el-form-item>
<el-form-item label="咨询车型" prop="stuConsultCartype">
<el-select v-model="form.stuConsultCartype" placeholder="请选择" clearable filterable>
<el-option
v-for="item in cartypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="学员诉求" prop="requirement">
<el-input
v-model="form.requirement"
type="textarea"
:autosize="{ minRows: 3 }"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="form.remark"
type="textarea"
:autosize="{ minRows: 3 }"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label-width="0">
<el-button type="primary" @click="onSubmit" size="large" style="width: 100%"
> </el-button
>
</el-form-item>
</el-form>
</div>
</template>
<script setup>
import { getStrDictOptions } from '@/utils/dict'
import { getSimpleSourceList } from '@/api/clue/source'
import { handleTree } from '@/utils/tree'
import { formatDate } from '@/utils/formatTime'
// import * as authUtil from '@/utils/auth'
import { clueInput } from '@/api/clue'
onMounted(() => {
getOptions()
})
const form = ref({
stuName: '测试',
stuMobile: '189895456214',
source: '',
stuConsultTime: formatDate(new Date()),
stuConsultCartype: 'C1',
requirement: '123',
remark: '321',
instanceId: '1014'
})
const defaultProps = {
expandTrigger: 'hover',
checkStrictly: false,
label: 'sourceName',
value: 'sourceId'
}
const rules = {
stuName: [{ required: true, message: '请输入学员姓名', trigger: 'blur' }],
stuMobile: [{ required: true, message: '请输入手机号', trigger: 'blur' }],
source: [{ required: true, message: '请选择线索来源', trigger: 'change' }],
stuConsultTime: [{ required: true, message: '请选择咨询日期', trigger: 'change' }],
stuConsultCartype: [{ required: true, message: '请选择咨询车型', trigger: 'change' }]
}
const sourceOptions = ref([])
const cartypeOptions = getStrDictOptions('license_type')
function getOptions() {
getSimpleSourceList().then((data) => {
sourceOptions.value = handleTree(data, 'sourceId')
})
}
const formRef = ref(null)
function onSubmit() {
formRef.value.validate((valid) => {
if (valid) {
//
const params = {
...form.value,
source: form.value.source ? form.value.source[form.value.source.length - 1] : null
}
clueInput(params).then(() => {
message.success('线索录入成功')
form.value = {
stuName: '',
stuMobile: '',
source: '',
stuConsultTime: formatDate(new Date()),
stuConsultCartype: '',
requirement: '',
remark: ''
}
})
} else {
console.log('表单验证失败')
return false
}
})
}
</script>
<style lang="scss" scoped></style>

@ -40,11 +40,11 @@ export default ({ command, mode }) => {
changeOrigin: true, changeOrigin: true,
rewrite: (path) => path.replace(new RegExp(`^/call-api`), '') rewrite: (path) => path.replace(new RegExp(`^/call-api`), '')
}, },
['/crm-api']: { ['/crm-api/']: {
target: env.VITE_BASE_URL, target: env.VITE_BASE_URL,
ws: false, ws: false,
changeOrigin: true, changeOrigin: true,
rewrite: (path) => path.replace(new RegExp(`^/crm-api`), '') rewrite: (path) => path.replace(new RegExp(`^/crm-api/`), '')
}, },
['/applet-api']: { ['/applet-api']: {
target: env.VITE_APPLET_URL, target: env.VITE_APPLET_URL,
@ -57,6 +57,12 @@ export default ({ command, mode }) => {
ws: false, ws: false,
changeOrigin: true, changeOrigin: true,
rewrite: (path) => path.replace(new RegExp(`^/tiku-api`), '') rewrite: (path) => path.replace(new RegExp(`^/tiku-api`), '')
},
['/out-api']: {
target: 'http://cloud.ahfkbg.com',
ws: false,
changeOrigin: true,
rewrite: (path) => path.replace(new RegExp(`^/out-api`), '')
} }
} }
}, },

Loading…
Cancel
Save