功能更新

This commit is contained in:
jia 2024-01-06 17:57:30 +08:00
parent 3c39ed1223
commit 6722e55f54
8 changed files with 138 additions and 167 deletions

BIN
dist.zip Normal file

Binary file not shown.

View File

@ -1,16 +1,16 @@
<template>
<div>
<!-- <el-card class="!border-none" shadow="never">
<el-card class="!border-none" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="客户名称" prop="name">
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入客户名称" />
<el-form-item label="客户名称" prop="custom_name">
<el-input class="w-[280px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
<el-button @click="resetParams">重置</el-button>
</el-form-item>
</el-form>
</el-card> -->
</el-card>
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
<div class="mt-4">
<el-table :data="pager.lists" @cell-click="handleCurrentChange">
@ -45,7 +45,7 @@ import { defineEmits } from "vue"
//
const queryParams = reactive({
name: ''
custom_name: ''
});
//

View File

@ -2,8 +2,8 @@
<div>
<el-card class="!border-none" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="客户名称" prop="name">
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入客户名称" />
<el-form-item label="客户名称" prop="custom_name">
<el-input class="w-[280px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
@ -49,7 +49,7 @@ import { defineEmits } from "vue"
//
const queryParams = reactive({
name: ''
custom_name: ''
});
//

View File

@ -2,8 +2,8 @@
<div>
<el-card class="!border-none" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="查询" prop="name">
<el-input class="w-[280px]" v-model="queryParams.contract_no" clearable placeholder="请输入内容" />
<el-form-item label="项目名称" prop="project_name">
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
@ -50,11 +50,11 @@ import { timeFormat } from '@/utils/util'
//
const queryParams = reactive({
status: 1,
project_name: '',
});
//
const { dictData } = useDictData('tax_rate,pay_type,whether_status')
const { dictData } = useDictData('')
//
const emits = defineEmits(["customEvent"]);

View File

@ -4,17 +4,17 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="客户联系人详情" :async="true" width="40%" @confirm="handleSubmit" @close="handleClose">
<el-descriptions :column="1" label-class-name="my-label" class-name="my-content" border>
<el-descriptions-item label="客户名称" label-align="left" align="left">{{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="姓名" label-align="left" align="left"> {{ formData.name }}</el-descriptions-item>
<el-descriptions-item label="职位" label-align="left" align="left"> {{ formData.position }}</el-descriptions-item>
<el-descriptions-item label="手机" label-align="left" align="left">
<el-descriptions :column="1" border>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="姓名" label-align="left" align="left" label-class-name="my-label"> {{ formData.name }}</el-descriptions-item>
<el-descriptions-item label="职位" label-align="left" align="left" label-class-name="my-label"> {{ formData.position }}</el-descriptions-item>
<el-descriptions-item label="手机" label-align="left" align="left" label-class-name="my-label">
{{ formData.phone }}
</el-descriptions-item>
<el-descriptions-item label="电话" label-align="left" align="left"> {{ formData.telephone }}</el-descriptions-item>
<el-descriptions-item label="邮箱" label-align="left" align="left"> {{ formData.email }}</el-descriptions-item>
<el-descriptions-item label="备注" label-align="left" align="left"> {{ formData.notes }}</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left">
<el-descriptions-item label="电话" label-align="left" align="left" label-class-name="my-label"> {{ formData.telephone }}</el-descriptions-item>
<el-descriptions-item label="邮箱" label-align="left" align="left" label-class-name="my-label"> {{ formData.email }}</el-descriptions-item>
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{ formData.notes }}</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex && formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }} 查看</a>
@ -24,70 +24,14 @@
暂无文件
</div>
</el-descriptions-item>
<el-descriptions-item label="添加人" label-align="left" align="left"></el-descriptions-item>
<el-descriptions-item label="添加人" label-align="left" align="left" label-class-name="my-label"></el-descriptions-item>
<el-descriptions-item label="创建日期" label-align="left" align="left"></el-descriptions-item>
<el-descriptions-item label="更新人" label-align="left" align="left"></el-descriptions-item>
<el-descriptions-item label="更新日期" label-align="left" align="left"></el-descriptions-item>
<el-descriptions-item label="创建日期" label-align="left" align="left" label-class-name="my-label"></el-descriptions-item>
<el-descriptions-item label="更新人" label-align="left" align="left" label-class-name="my-label"></el-descriptions-item>
<el-descriptions-item label="更新日期" label-align="left" align="left" label-class-name="my-label"></el-descriptions-item>
</el-descriptions>
<!-- <el-form ref="formRef" :model="formData" label-width="90px">
<el-card class="mb-2">
<el-row>
<el-col :span="12">
<el-form-item label="客户名称" prop="custom_name">
{{ formData.custom_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="姓名" prop="name">
{{ formData.name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职位" prop="position">
{{ formData.position }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="手机" prop="phone">
{{ formData.phone }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="电话">
{{ formData.telephone }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="邮箱" prop="email">
{{ formData.email }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备注" prop="notes">
{{ formData.notes }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="附件" prop="notes">
<div v-if="formData.annex && formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }} 查看</a>
</div>
</div>
<div v-else>
暂无文件
</div>
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-form> -->
</popup>
</div>
</template>
@ -177,18 +121,12 @@ defineExpose({
})
</script>
<style lang="scss" scoped>
:deep(.my-label) {
width: 10px !important;
background: red !important;
}
:deep(.my-content) {
width: 120px !important;
background: rgb(55, 0, 255) !important;
}
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -2,69 +2,32 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="客户跟进记录详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px">
<el-card class="mb-2">
<el-row>
<el-col :span="12">
<el-form-item label="主题">
{{ formData.name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户名称" prop="notes">
{{ formData.custom_name
}}
</el-form-item>
<el-descriptions :column="2" border>
<el-descriptions-item label="主题" label-align="left" align="left" label-class-name="my-label">{{ formData.name }}</el-descriptions-item>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label"> {{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="联系人" label-align="left" align="left" label-class-name="my-label"> {{ formData.contacts }}</el-descriptions-item>
<el-descriptions-item label="日期" label-align="left" align="left" label-class-name="my-label">
{{ formData.date }}
</el-descriptions-item>
<el-descriptions-item label="类型" label-align="left" align="left" label-class-name="my-label"> <dict-value :options="dictData.follow_type" :value="formData.types" /></el-descriptions-item>
<el-descriptions-item label="执行人" label-align="left" align="left" label-class-name="my-label"> {{ formData.executor }}</el-descriptions-item>
<el-descriptions-item label="行动描述" label-align="left" align="left" label-class-name="my-label"> {{ formData.description }}</el-descriptions-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人">
{{ formData.contacts }}
<el-descriptions-item label="下次回访日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.next_follow_date }}</el-descriptions-item>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="日期">
{{ formData.date }}
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex && formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }} 查看</a>
</div>
</div>
<div v-else>
暂无文件
</div>
</el-descriptions-item>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="类型">
<dict-value :options="dictData.follow_type" :value="formData.types" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="执行人">
{{ formData.executor }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="行动描述" prop="email">
{{ formData.description }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="位置" prop="notes">
{{ formData.coordinate }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下次回访日期" prop="notes">
{{ formData.next_follow_date }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="下次回访日期" prop="notes">
<material-picker v-model="formData.annex" />
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-form>
</el-descriptions>
</popup>
</div>
</template>
@ -155,9 +118,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -2,7 +2,50 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="售后工单详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="auto">
<el-descriptions :column="2" title="基本信息" border>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label">{{ formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label"> {{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="合同号" label-align="left" align="left" label-class-name="my-label">
{{ formData.contract_code }}
</el-descriptions-item>
<el-descriptions-item label="联系人" label-align="left" align="left" label-class-name="my-label"> {{ formData.custom_master_name }}</el-descriptions-item>
<el-descriptions-item label="联系电话" label-align="left" align="left" label-class-name="my-label"> {{ formData.custom_master_phone }}</el-descriptions-item>
<el-descriptions-item label="日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.date }}</el-descriptions-item>
<el-descriptions-item label="分类" label-align="left" align="left" label-class-name="my-label"> {{ formData.classification_text }}</el-descriptions-item>
<el-descriptions-item label="紧急程度" label-align="left" align="left" label-class-name="my-label"> {{ formData.urgency_text }}</el-descriptions-item>
<el-descriptions-item label="处理结果" label-align="left" align="left" label-class-name="my-label"> {{ formData.processing_result_text }}</el-descriptions-item>
<el-descriptions-item label="接待人" label-align="left" align="left" label-class-name="my-label"> {{ formData.receiver }}</el-descriptions-item>
<el-descriptions-item label="指定处理人" label-align="left" align="left" label-class-name="my-label"> {{ formData.processed_user_name }}</el-descriptions-item>
<el-descriptions-item label="花费工时" label-align="left" align="left" label-class-name="my-label"> {{ formData.processing_hour }}</el-descriptions-item>
<el-descriptions-item label="完成日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.done_date }}</el-descriptions-item>
<el-descriptions-item label="投诉主题" label-align="left" align="left" label-class-name="my-label"> {{ formData.name }}</el-descriptions-item>
<el-descriptions-item label="问题描述" label-align="left" align="left" label-class-name="my-label"> {{ formData.description }}</el-descriptions-item>
<el-descriptions-item label="处理过程" label-align="left" align="left" label-class-name="my-label"> {{ formData.processing_process }}</el-descriptions-item>
<!-- <el-descriptions-item label="回访确认" label-align="left" align="left" label-class-name="my-label"> {{ formData.notes }}</el-descriptions-item> -->
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{ formData.notes }}</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex && formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }} 查看</a>
</div>
</div>
<div v-else>
暂无文件
</div>
</el-descriptions-item>
</el-descriptions>
<!-- <el-form ref="formRef" :model="formData" label-width="auto">
<el-card class="mb-2">
<el-row>
<el-col :span="8">
@ -152,7 +195,7 @@
</el-col>
</el-row>
</el-card>
</el-form>
</el-form> -->
</popup>
</div>
</template>
@ -233,9 +276,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -280,6 +280,7 @@ const userone = (e: any) => {
}
dialogVisible.value = true
}
//
const userclick = () => {
if (radiolist.value.length > 0) {
@ -287,27 +288,45 @@ const userclick = () => {
// leixin 1
formData.technician_ids = radiolist.value.map((item) => item.id).toString()
const newArray = radiolist.value.map((item) => item)
if (!technician.value.some(elem => newArray.some(newElem => JSON.stringify(elem) === JSON.stringify(newElem)))) {
// newElem cont
technician.value.push(...newArray);
}
// if (!technician.value.some(elem => newArray.some(newElem => elem === newElem.id))) {
// // newElem cont
// technician.value.push(...newArray);
// }
newArray.forEach(newElem => {
if (!technician.value.some(elem => elem.id === newElem.id)) {
// newElem newArray1
technician.value.push(newElem);
}
});
} else if (leixin.value === '2') {
// leixin 2
formData.business_people_ids = radiolist.value.map((item) => item.id).toString()
const newArray = radiolist.value.map((item) => item)
if (!business_people.value.some(elem => newArray.some(newElem => JSON.stringify(elem) === JSON.stringify(newElem)))) {
// newElem cont
business_people.value.push(...newArray);
}
newArray.forEach(newElem => {
if (!business_people.value.some(elem => elem.id === newElem.id)) {
// newElem newArray1
business_people.value.push(newElem);
}
});
// if (!business_people.value.some(elem => newArray.some(newElem => JSON.stringify(elem.id) === JSON.stringify(newElem.id)))) {
// // newElem cont
// business_people.value.push(...newArray);
// }
} else {
// leixin 1 2
formData.cross_departmental_personnel_ids = radiolist.value.map((item) => item.id).toString()
const newArray = radiolist.value.map((item) => item)
if (!cross_departmental_personnel.value.some(elem => newArray.some(newElem => JSON.stringify(elem) === JSON.stringify(newElem)))) {
// newElem cont
cross_departmental_personnel.value.push(...newArray);
}
newArray.forEach(newElem => {
if (!cross_departmental_personnel.value.some(elem => elem.id === newElem.id)) {
// newElem newArray1
cross_departmental_personnel.value.push(newElem);
}
});
// if (!cross_departmental_personnel.value.some(elem => newArray.some(newElem => JSON.stringify(elem.id) === JSON.stringify(newElem.id)))) {
// // newElem cont
// cross_departmental_personnel.value.push(...newArray);
// }
}
dialogVisible.value = false