|
@@ -1,37 +1,16 @@
|
|
|
<template>
|
|
|
<div class="tenant">
|
|
|
<div style="padding: 20px; background: #fff; margin-bottom: 20px">
|
|
|
- <el-button type="primary" style="margin-left: 10px" @click="openModal()"
|
|
|
- >添加客户</el-button
|
|
|
- >
|
|
|
+ <el-button type="primary" style="margin-left: 10px" @click="openModal()">添加客户</el-button>
|
|
|
</div>
|
|
|
|
|
|
- <byTable
|
|
|
- :source="sourceList.data"
|
|
|
- :pagination="sourceList.pagination"
|
|
|
- :config="config"
|
|
|
- :loading="loading"
|
|
|
- :statConfig="statConfig"
|
|
|
- :selectConfig="selectConfig"
|
|
|
- highlight-current-row
|
|
|
- @moreSearch="moreSearch"
|
|
|
- @get-list="getList"
|
|
|
- ref="table"
|
|
|
- >
|
|
|
+ <byTable :source="sourceList.data" :pagination="sourceList.pagination" :config="config" :loading="loading" :statConfig="statConfig"
|
|
|
+ :selectConfig="selectConfig" highlight-current-row @moreSearch="moreSearch" @get-list="getList" ref="table">
|
|
|
<template #isTop="{ item }">
|
|
|
<div>
|
|
|
- <img
|
|
|
- style="cursor: pointer; width: 20px; transform: translateY(5px)"
|
|
|
- :src="'/img/isTop.png'"
|
|
|
- @click="deleteTop(item)"
|
|
|
- v-if="item.isTop === 1"
|
|
|
- />
|
|
|
- <img
|
|
|
- style="cursor: pointer; width: 20px; transform: translateY(5px)"
|
|
|
- :src="'/img/noTop.png'"
|
|
|
- @click="addTop(item)"
|
|
|
- v-else
|
|
|
- />
|
|
|
+ <img style="cursor: pointer; width: 20px; transform: translateY(5px)" :src="'/img/isTop.png'" @click="deleteTop(item)"
|
|
|
+ v-if="item.isTop === 1" />
|
|
|
+ <img style="cursor: pointer; width: 20px; transform: translateY(5px)" :src="'/img/noTop.png'" @click="addTop(item)" v-else />
|
|
|
</div>
|
|
|
</template>
|
|
|
<template #address="{ item }">
|
|
@@ -40,50 +19,25 @@
|
|
|
<span v-if="item.cityName"> ,{{ item.cityName }}</span>
|
|
|
</template>
|
|
|
<template #name="{ item }">
|
|
|
- <div
|
|
|
- style="cursor: pointer; color: #409eff; word-break: break-all"
|
|
|
- @click="handleClickName(item)"
|
|
|
- >
|
|
|
+ <div style="cursor: pointer; color: #409eff; word-break: break-all" @click="handleClickName(item)">
|
|
|
{{ item.name }}
|
|
|
</div>
|
|
|
</template>
|
|
|
<template #tags="{ item }">
|
|
|
<div style="width: 100%">
|
|
|
- <el-tag
|
|
|
- style="margin-right: 8px"
|
|
|
- type="success"
|
|
|
- v-for="(tag, index) in item.tag"
|
|
|
- closable
|
|
|
- :key="index"
|
|
|
- @close="tagClose(tag, item)"
|
|
|
- >
|
|
|
+ <el-tag style="margin-right: 8px" type="success" v-for="(tag, index) in item.tag" closable :key="index" @close="tagClose(tag, item)">
|
|
|
{{ dictValueLabel(tag, customerTag) }}
|
|
|
</el-tag>
|
|
|
<template v-if="item.tag.length !== customerTag.length">
|
|
|
- <el-select
|
|
|
- v-if="item.addTagShow"
|
|
|
- v-model="addTag"
|
|
|
- style="width: 100%"
|
|
|
- @change="
|
|
|
+ <el-select v-if="item.addTagShow" v-model="addTag" style="width: 100%" @change="
|
|
|
(val) => {
|
|
|
return changeTag(val, item);
|
|
|
}
|
|
|
- "
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="tag in customerTag"
|
|
|
- :key="tag.value"
|
|
|
- :label="tag.label"
|
|
|
- :value="tag.value"
|
|
|
- :disabled="judgeTagSelect(item.tag, tag.value)"
|
|
|
- />
|
|
|
+ ">
|
|
|
+ <el-option v-for="tag in customerTag" :key="tag.value" :label="tag.label" :value="tag.value"
|
|
|
+ :disabled="judgeTagSelect(item.tag, tag.value)" />
|
|
|
</el-select>
|
|
|
- <el-tag
|
|
|
- style="cursor: pointer"
|
|
|
- type="success"
|
|
|
- @click="showSelect(item)"
|
|
|
- v-else
|
|
|
- >
|
|
|
+ <el-tag style="cursor: pointer" type="success" @click="showSelect(item)" v-else>
|
|
|
+
|
|
|
</el-tag>
|
|
|
</template>
|
|
@@ -92,37 +46,24 @@
|
|
|
<template #follow="{ item }">
|
|
|
<div :class="'getWidth' + item.id" style="width: 100%">
|
|
|
<div style="width: 100%; display: flex">
|
|
|
- <template
|
|
|
- v-if="
|
|
|
+ <template v-if="
|
|
|
item.customerFollowRecordsList &&
|
|
|
item.customerFollowRecordsList.length > 0
|
|
|
- "
|
|
|
- >
|
|
|
- <div
|
|
|
- :style="
|
|
|
+ ">
|
|
|
+ <div :style="
|
|
|
index > 2
|
|
|
? 'line-height: 32px; margin-right: 8px; padding: 0 8px; background-color: #eeeeee; border-radius: 4px; cursor: pointer; display: none'
|
|
|
: 'line-height: 32px; margin-right: 8px; padding: 0 8px; background-color: #eeeeee; border-radius: 4px; cursor: pointer'
|
|
|
- "
|
|
|
- v-for="(record, index) in item.customerFollowRecordsList"
|
|
|
- :key="record.id"
|
|
|
- >
|
|
|
- <el-popover
|
|
|
- placement="bottom"
|
|
|
- :width="300"
|
|
|
- trigger="hover"
|
|
|
- @show="recordShow(record)"
|
|
|
- >
|
|
|
+ " v-for="(record, index) in item.customerFollowRecordsList" :key="record.id">
|
|
|
+ <el-popover placement="bottom" :width="300" trigger="hover" @show="recordShow(record)">
|
|
|
<template #reference>
|
|
|
<div>
|
|
|
<span v-if="record.date">{{
|
|
|
record.date.substr(0, 10)
|
|
|
}}</span>
|
|
|
- <el-icon
|
|
|
- style="margin-left: 8px; transform: translateY(2px)"
|
|
|
- @click="deleteFollow(record)"
|
|
|
- ><DeleteFilled
|
|
|
- /></el-icon>
|
|
|
+ <el-icon style="margin-left: 8px; transform: translateY(2px)" @click="deleteFollow(record)">
|
|
|
+ <DeleteFilled />
|
|
|
+ </el-icon>
|
|
|
</div>
|
|
|
</template>
|
|
|
<template #default>
|
|
@@ -139,11 +80,7 @@
|
|
|
</div> -->
|
|
|
|
|
|
<div v-if="record.type == '30'">
|
|
|
- <div
|
|
|
- style="word-wrap: break-word; margin: 8px 0"
|
|
|
- v-html="getStyle(record.content)"
|
|
|
- v-if="record.content"
|
|
|
- ></div>
|
|
|
+ <div style="word-wrap: break-word; margin: 8px 0" v-html="getStyle(record.content)" v-if="record.content"></div>
|
|
|
<div v-else>跟进记录:</div>
|
|
|
</div>
|
|
|
<div v-else>
|
|
@@ -151,21 +88,11 @@
|
|
|
{{ getContent(record) }}
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div
|
|
|
- style="margin: 8px 0; display: flex"
|
|
|
- v-if="record.fileList && record.fileList.length > 0"
|
|
|
- >
|
|
|
+ <div style="margin: 8px 0; display: flex" v-if="record.fileList && record.fileList.length > 0">
|
|
|
<div style="width: 36px">附件:</div>
|
|
|
<div style="width: calc(100% - 36px)">
|
|
|
- <div
|
|
|
- v-for="(file, index) in record.fileList"
|
|
|
- :key="index"
|
|
|
- >
|
|
|
- <a
|
|
|
- style="color: #409eff; cursor: pointer"
|
|
|
- @click="openFile(file.fileUrl)"
|
|
|
- >{{ file.fileName }}</a
|
|
|
- >
|
|
|
+ <div v-for="(file, index) in record.fileList" :key="index">
|
|
|
+ <a style="color: #409eff; cursor: pointer" @click="openFile(file.fileUrl)">{{ file.fileName }}</a>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -173,18 +100,14 @@
|
|
|
</template>
|
|
|
</el-popover>
|
|
|
</div>
|
|
|
- <div
|
|
|
- style="
|
|
|
+ <div style="
|
|
|
line-height: 32px;
|
|
|
margin-right: 8px;
|
|
|
padding: 0 8px;
|
|
|
background-color: #eeeeee;
|
|
|
border-radius: 4px;
|
|
|
cursor: pointer;
|
|
|
- "
|
|
|
- @click="clickMore(item)"
|
|
|
- v-if="item.customerFollowRecordsList.length >= 3"
|
|
|
- >
|
|
|
+ " @click="clickMore(item)" v-if="item.customerFollowRecordsList.length >= 3">
|
|
|
更多
|
|
|
</div>
|
|
|
</template>
|
|
@@ -193,61 +116,28 @@
|
|
|
</template>
|
|
|
</byTable>
|
|
|
|
|
|
- <el-dialog
|
|
|
- :title="modalType == 'add' ? '新增' : '编辑'"
|
|
|
- v-if="dialogVisible"
|
|
|
- v-model="dialogVisible"
|
|
|
- width="800"
|
|
|
- v-loading="loadingOperation"
|
|
|
- >
|
|
|
- <byForm
|
|
|
- :formConfig="formConfig"
|
|
|
- :formOption="formOption"
|
|
|
- v-model="formData.data"
|
|
|
- :rules="rules"
|
|
|
- ref="submit"
|
|
|
- >
|
|
|
+ <el-dialog :title="modalType == 'add' ? '新增' : '编辑'" v-if="dialogVisible" v-model="dialogVisible" width="800" v-loading="loadingOperation">
|
|
|
+ <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="submit">
|
|
|
<template #allAddress>
|
|
|
<el-row style="width: 100%">
|
|
|
<el-col :span="8">
|
|
|
<el-form-item prop="countryId">
|
|
|
- <el-select
|
|
|
- v-model="formData.data.countryId"
|
|
|
- placeholder="国家"
|
|
|
- filterable
|
|
|
- @change="(val) => getCityData(val, '20', true)"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in countryData"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id"
|
|
|
- >
|
|
|
+ <el-select v-model="formData.data.countryId" placeholder="国家" filterable @change="(val) => getCityData(val, '20', true)">
|
|
|
+ <el-option v-for="item in countryData" :label="item.name" :value="item.id">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item prop="provinceName">
|
|
|
- <selectCity
|
|
|
- placeholder="省/洲"
|
|
|
- @change="(val) => getCityData(val, '30', true)"
|
|
|
- addressId="provinceId"
|
|
|
- addressName="provinceName"
|
|
|
- v-model="formData.data"
|
|
|
- :data="provinceData"
|
|
|
- >
|
|
|
+ <selectCity placeholder="省/洲" @change="(val) => getCityData(val, '30', true)" addressId="provinceId" addressName="provinceName"
|
|
|
+ v-model="formData.data" :data="provinceData">
|
|
|
</selectCity>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item prop="cityName">
|
|
|
- <selectCity
|
|
|
- placeholder="城市"
|
|
|
- addressId="cityId"
|
|
|
- addressName="cityName"
|
|
|
- v-model="formData.data"
|
|
|
- :data="cityData"
|
|
|
- ></selectCity>
|
|
|
+ <selectCity placeholder="城市" addressId="cityId" addressName="cityName" v-model="formData.data" :data="cityData"></selectCity>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -263,18 +153,11 @@
|
|
|
<template #person>
|
|
|
<div style="width: 100%">
|
|
|
<el-button type="primary" @click="clickAddPerson">添 加</el-button>
|
|
|
- <el-table
|
|
|
- :data="formData.data.customerUserList"
|
|
|
- style="width: 100%; margin-top: 16px"
|
|
|
- >
|
|
|
+ <el-table :data="formData.data.customerUserList" style="width: 100%; margin-top: 16px">
|
|
|
<el-table-column label="联系人" width="160">
|
|
|
<template #default="{ row, $index }">
|
|
|
<div style="width: 100%">
|
|
|
- <el-form-item
|
|
|
- :prop="'customerUserList.' + $index + '.name'"
|
|
|
- :rules="rules.name2"
|
|
|
- :inline-message="true"
|
|
|
- >
|
|
|
+ <el-form-item :prop="'customerUserList.' + $index + '.name'" :rules="rules.name2" :inline-message="true">
|
|
|
<el-input v-model="row.name" placeholder="请输入联系人" />
|
|
|
</el-form-item>
|
|
|
</div>
|
|
@@ -283,35 +166,16 @@
|
|
|
<el-table-column label="电子邮箱">
|
|
|
<template #default="{ row, $index }">
|
|
|
<div style="width: 100%">
|
|
|
- <el-form-item
|
|
|
- :prop="'customerUserList.' + $index + '.email'"
|
|
|
- :rules="rules.email"
|
|
|
- :inline-message="true"
|
|
|
- >
|
|
|
- <el-input
|
|
|
- v-model="row.email"
|
|
|
- placeholder="请输入电子邮箱"
|
|
|
- />
|
|
|
+ <el-form-item :prop="'customerUserList.' + $index + '.email'" :rules="rules.email" :inline-message="true">
|
|
|
+ <el-input v-model="row.email" placeholder="请输入电子邮箱" />
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column
|
|
|
- align="center"
|
|
|
- label="操作"
|
|
|
- width="120"
|
|
|
- fixed="right"
|
|
|
- >
|
|
|
+ <el-table-column align="center" label="操作" width="120" fixed="right">
|
|
|
<template #default="{ row, $index }">
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- link
|
|
|
- @click="clickInformationMore(row, $index)"
|
|
|
- >更多</el-button
|
|
|
- >
|
|
|
- <el-button type="primary" link @click="clickDelete($index)"
|
|
|
- >删除</el-button
|
|
|
- >
|
|
|
+ <el-button type="primary" link @click="clickInformationMore(row, $index)">更多</el-button>
|
|
|
+ <el-button type="primary" link @click="clickDelete($index)">删除</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -320,28 +184,12 @@
|
|
|
</byForm>
|
|
|
<template #footer>
|
|
|
<el-button @click="dialogVisible = false" size="large">取 消</el-button>
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- @click="submitForm()"
|
|
|
- size="large"
|
|
|
- :loading="submitLoading"
|
|
|
- >确 定</el-button
|
|
|
- >
|
|
|
+ <el-button type="primary" @click="submitForm()" size="large" :loading="submitLoading">确 定</el-button>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
|
|
|
- <el-dialog
|
|
|
- title="更多联系方式"
|
|
|
- v-if="openPerson"
|
|
|
- v-model="openPerson"
|
|
|
- width="700"
|
|
|
- >
|
|
|
- <el-form
|
|
|
- :label-position="'top'"
|
|
|
- :model="formPerson.data"
|
|
|
- :rules="rulesPerson"
|
|
|
- ref="person"
|
|
|
- >
|
|
|
+ <el-dialog title="更多联系方式" v-if="openPerson" v-model="openPerson" width="700">
|
|
|
+ <el-form :label-position="'top'" :model="formPerson.data" :rules="rulesPerson" ref="person">
|
|
|
<el-form-item label="联系人" prop="name">
|
|
|
<el-input v-model="formPerson.data.name" />
|
|
|
</el-form-item>
|
|
@@ -350,32 +198,14 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item label="更多联系方式">
|
|
|
<div style="width: 100%">
|
|
|
- <el-button type="primary" @click="clickAddMoreInformation"
|
|
|
- >添 加</el-button
|
|
|
- >
|
|
|
- <el-table
|
|
|
- :data="formPerson.data.contact"
|
|
|
- style="width: 100%; margin-top: 16px"
|
|
|
- >
|
|
|
+ <el-button type="primary" @click="clickAddMoreInformation">添 加</el-button>
|
|
|
+ <el-table :data="formPerson.data.contact" style="width: 100%; margin-top: 16px">
|
|
|
<el-table-column label="类型" width="180">
|
|
|
<template #default="{ row, $index }">
|
|
|
<div style="width: 100%">
|
|
|
- <el-form-item
|
|
|
- :prop="'contact.' + $index + '.type'"
|
|
|
- :rules="rulesPerson.type"
|
|
|
- :inline-message="true"
|
|
|
- >
|
|
|
- <el-select
|
|
|
- v-model="row.type"
|
|
|
- placeholder="请选择类型"
|
|
|
- style="width: 100%"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in contactType"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
+ <el-form-item :prop="'contact.' + $index + '.type'" :rules="rulesPerson.type" :inline-message="true">
|
|
|
+ <el-select v-model="row.type" placeholder="请选择类型" style="width: 100%">
|
|
|
+ <el-option v-for="item in contactType" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</div>
|
|
@@ -384,32 +214,15 @@
|
|
|
<el-table-column label="联系号码">
|
|
|
<template #default="{ row, $index }">
|
|
|
<div style="width: 100%">
|
|
|
- <el-form-item
|
|
|
- :prop="'contact.' + $index + '.contactNo'"
|
|
|
- :rules="rulesPerson.contactNo"
|
|
|
- :inline-message="true"
|
|
|
- >
|
|
|
- <el-input
|
|
|
- v-model="row.contactNo"
|
|
|
- placeholder="请输入联系号码"
|
|
|
- />
|
|
|
+ <el-form-item :prop="'contact.' + $index + '.contactNo'" :rules="rulesPerson.contactNo" :inline-message="true">
|
|
|
+ <el-input v-model="row.contactNo" placeholder="请输入联系号码" />
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column
|
|
|
- align="center"
|
|
|
- label="操作"
|
|
|
- width="120"
|
|
|
- fixed="right"
|
|
|
- >
|
|
|
+ <el-table-column align="center" label="操作" width="120" fixed="right">
|
|
|
<template #default="{ $index }">
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- link
|
|
|
- @click="clickInformationDelete($index)"
|
|
|
- >删除</el-button
|
|
|
- >
|
|
|
+ <el-button type="primary" link @click="clickInformationDelete($index)">删除</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -418,60 +231,25 @@
|
|
|
</el-form>
|
|
|
<template #footer>
|
|
|
<el-button @click="openPerson = false" size="large">取 消</el-button>
|
|
|
- <el-button type="primary" @click="submitPerson()" size="large"
|
|
|
- >确 定</el-button
|
|
|
- >
|
|
|
+ <el-button type="primary" @click="submitPerson()" size="large">确 定</el-button>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
|
|
|
- <el-dialog
|
|
|
- title="分配"
|
|
|
- v-if="openAllocation"
|
|
|
- v-model="openAllocation"
|
|
|
- width="300"
|
|
|
- >
|
|
|
- <byForm
|
|
|
- :formConfig="formConfigAllocation"
|
|
|
- :formOption="formOption"
|
|
|
- v-model="formAllocation.data"
|
|
|
- :rules="rulesAllocation"
|
|
|
- ref="allocation"
|
|
|
- >
|
|
|
+ <el-dialog title="分配" v-if="openAllocation" v-model="openAllocation" width="300">
|
|
|
+ <byForm :formConfig="formConfigAllocation" :formOption="formOption" v-model="formAllocation.data" :rules="rulesAllocation" ref="allocation">
|
|
|
</byForm>
|
|
|
<template #footer>
|
|
|
- <el-button @click="openAllocation = false" size="large"
|
|
|
- >取 消</el-button
|
|
|
- >
|
|
|
- <el-button type="primary" @click="submitAllocation()" size="large"
|
|
|
- >确 定</el-button
|
|
|
- >
|
|
|
+ <el-button @click="openAllocation = false" size="large">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="submitAllocation()" size="large">确 定</el-button>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
|
|
|
- <el-dialog
|
|
|
- title="添加跟进记录"
|
|
|
- v-if="openFollow"
|
|
|
- v-model="openFollow"
|
|
|
- width="500"
|
|
|
- destroy-on-close
|
|
|
- >
|
|
|
- <byForm
|
|
|
- :formConfig="formConfigAFollow"
|
|
|
- :formOption="formOption"
|
|
|
- v-model="formFollow.data"
|
|
|
- :rules="rulesFollow"
|
|
|
- ref="follow"
|
|
|
- >
|
|
|
+ <el-dialog title="添加跟进记录" v-if="openFollow" v-model="openFollow" width="500" destroy-on-close>
|
|
|
+ <byForm :formConfig="formConfigAFollow" :formOption="formOption" v-model="formFollow.data" :rules="rulesFollow" ref="follow">
|
|
|
<template #fileSlot>
|
|
|
<div style="width: 100%">
|
|
|
- <el-upload
|
|
|
- v-model:fileList="fileList"
|
|
|
- action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
|
|
|
- :data="uploadData"
|
|
|
- multiple
|
|
|
- :before-upload="uploadFile"
|
|
|
- :on-preview="onPreviewFile"
|
|
|
- >
|
|
|
+ <el-upload v-model:fileList="fileList" action="https://winfaster.obs.cn-south-1.myhuaweicloud.com" :data="uploadData" multiple
|
|
|
+ :before-upload="uploadFile" :on-preview="onPreviewFile">
|
|
|
<el-button type="primary">文件上传</el-button>
|
|
|
</el-upload>
|
|
|
</div>
|
|
@@ -479,57 +257,32 @@
|
|
|
</byForm>
|
|
|
<template #footer>
|
|
|
<el-button @click="openFollow = false" size="large">取 消</el-button>
|
|
|
- <el-button type="primary" @click="submitFollow()" size="large"
|
|
|
- >确 定</el-button
|
|
|
- >
|
|
|
+ <el-button type="primary" @click="submitFollow()" size="large">确 定</el-button>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
|
|
|
- <el-dialog
|
|
|
- title="跟进记录"
|
|
|
- v-if="openRecordMore"
|
|
|
- v-model="openRecordMore"
|
|
|
- width="800"
|
|
|
- destroy-on-close
|
|
|
- >
|
|
|
+ <el-dialog title="跟进记录" v-if="openRecordMore" v-model="openRecordMore" width="800" destroy-on-close>
|
|
|
<div>
|
|
|
<div style="padding: 8px 0">
|
|
|
- <el-button type="primary" @click="clickFollowUp(rowData)" plain
|
|
|
- >添加跟进记录</el-button
|
|
|
- >
|
|
|
+ <el-button type="primary" @click="clickFollowUp(rowData)" plain>添加跟进记录</el-button>
|
|
|
</div>
|
|
|
<div style="padding-top: 16px">
|
|
|
- <div
|
|
|
- v-infinite-scroll="infiniteScroll"
|
|
|
- class="infinite-scroll"
|
|
|
- :infinite-scroll-disabled="judgeTotal()"
|
|
|
- >
|
|
|
+ <div v-infinite-scroll="infiniteScroll" class="infinite-scroll" :infinite-scroll-disabled="judgeTotal()">
|
|
|
<el-timeline>
|
|
|
- <el-timeline-item
|
|
|
- v-for="(record, index) in recordList"
|
|
|
- :key="index"
|
|
|
- :timestamp="record.date"
|
|
|
- hide-timestamp
|
|
|
- >
|
|
|
+ <el-timeline-item v-for="(record, index) in recordList" :key="index" :timestamp="record.date" hide-timestamp>
|
|
|
<div>
|
|
|
- <div
|
|
|
- style="
|
|
|
+ <div style="
|
|
|
padding: 0 0 8px 0;
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
- "
|
|
|
- >
|
|
|
+ ">
|
|
|
<span>{{
|
|
|
dictValueLabel(record.createUser, userList)
|
|
|
}}</span>
|
|
|
<span>{{ record.date }}</span>
|
|
|
</div>
|
|
|
<div v-if="record.type == '30'">
|
|
|
- <div
|
|
|
- style="word-wrap: break-word; margin: 8px 0"
|
|
|
- v-html="getStyle(record.content)"
|
|
|
- v-if="record.content"
|
|
|
- ></div>
|
|
|
+ <div style="word-wrap: break-word; margin: 8px 0" v-html="getStyle(record.content)" v-if="record.content"></div>
|
|
|
<div v-else>跟进记录:</div>
|
|
|
</div>
|
|
|
<div v-else>
|
|
@@ -537,21 +290,11 @@
|
|
|
{{ getContent(record) }}
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div
|
|
|
- style="margin: 8px 0; display: flex"
|
|
|
- v-if="record.fileList && record.fileList.length > 0"
|
|
|
- >
|
|
|
+ <div style="margin: 8px 0; display: flex" v-if="record.fileList && record.fileList.length > 0">
|
|
|
<div style="width: 36px">附件:</div>
|
|
|
<div style="width: calc(100% - 36px)">
|
|
|
- <div
|
|
|
- v-for="(file, index) in record.fileList"
|
|
|
- :key="index"
|
|
|
- >
|
|
|
- <a
|
|
|
- style="color: #409eff; cursor: pointer"
|
|
|
- @click="openFile(file.fileUrl)"
|
|
|
- >{{ file.fileName }}</a
|
|
|
- >
|
|
|
+ <div v-for="(file, index) in record.fileList" :key="index">
|
|
|
+ <a style="color: #409eff; cursor: pointer" @click="openFile(file.fileUrl)">{{ file.fileName }}</a>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -562,107 +305,51 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<template #footer>
|
|
|
- <el-button @click="openRecordMore = false" size="large"
|
|
|
- >关 闭</el-button
|
|
|
- >
|
|
|
+ <el-button @click="openRecordMore = false" size="large">关 闭</el-button>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
|
|
|
- <el-dialog
|
|
|
- title="高级检索"
|
|
|
- v-if="openSearch"
|
|
|
- v-model="openSearch"
|
|
|
- width="600"
|
|
|
- :before-close="cancelSearch"
|
|
|
- >
|
|
|
- <byForm
|
|
|
- :formConfig="formSearchConfig"
|
|
|
- :formOption="formOption"
|
|
|
- v-model="sourceList.pagination"
|
|
|
- >
|
|
|
+ <el-dialog title="高级检索" v-if="openSearch" v-model="openSearch" width="600" :before-close="cancelSearch">
|
|
|
+ <byForm :formConfig="formSearchConfig" :formOption="formOption" v-model="sourceList.pagination">
|
|
|
<template #address>
|
|
|
<el-row style="width: 100%">
|
|
|
<el-col :span="8">
|
|
|
<el-form-item prop="countryId">
|
|
|
- <el-select
|
|
|
- v-model="sourceList.pagination.countryId"
|
|
|
- placeholder="国家"
|
|
|
- clearable
|
|
|
- filterable
|
|
|
- @change="(val) => getCitySearchData(val, '20', true)"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in countrySearchData"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id"
|
|
|
- >
|
|
|
+ <el-select v-model="sourceList.pagination.countryId" placeholder="国家" clearable filterable
|
|
|
+ @change="(val) => getCitySearchData(val, '20', true)">
|
|
|
+ <el-option v-for="item in countrySearchData" :label="item.name" :value="item.id">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item prop="provinceName">
|
|
|
- <selectCity
|
|
|
- placeholder="省/洲"
|
|
|
- @change="(val) => getCitySearchData(val, '30', true)"
|
|
|
- addressId="provinceId"
|
|
|
- addressName="provinceName"
|
|
|
- v-model="sourceList.pagination"
|
|
|
- :data="provinceSearchData"
|
|
|
- >
|
|
|
+ <selectCity placeholder="省/洲" @change="(val) => getCitySearchData(val, '30', true)" addressId="provinceId" addressName="provinceName"
|
|
|
+ v-model="sourceList.pagination" :data="provinceSearchData">
|
|
|
</selectCity>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item prop="cityName">
|
|
|
- <selectCity
|
|
|
- placeholder="城市"
|
|
|
- addressId="cityId"
|
|
|
- addressName="cityName"
|
|
|
- v-model="sourceList.pagination"
|
|
|
- :data="citySearchData"
|
|
|
- ></selectCity>
|
|
|
+ <selectCity placeholder="城市" addressId="cityId" addressName="cityName" v-model="sourceList.pagination" :data="citySearchData">
|
|
|
+ </selectCity>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</template>
|
|
|
<template #tags>
|
|
|
<div style="width: 100%">
|
|
|
- <el-tag
|
|
|
- style="margin-right: 8px"
|
|
|
- type="info"
|
|
|
- v-for="(tag, index) in sourceList.pagination.tags"
|
|
|
- closable
|
|
|
- :key="index"
|
|
|
- @close="tagSearchClose(tag)"
|
|
|
- >
|
|
|
+ <el-tag style="margin-right: 8px" type="info" v-for="(tag, index) in sourceList.pagination.tags" closable :key="index"
|
|
|
+ @close="tagSearchClose(tag)">
|
|
|
{{ dictValueLabel(tag, customerTag) }}
|
|
|
</el-tag>
|
|
|
- <template
|
|
|
- v-if="sourceList.pagination.tags.length !== customerTag.length"
|
|
|
- >
|
|
|
- <el-select
|
|
|
- v-if="addTagSearchShow"
|
|
|
- v-model="addSearchTag"
|
|
|
- style="margin-top: 8px"
|
|
|
- @change="changeSearchTag"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="tag in customerTag"
|
|
|
- :key="tag.value"
|
|
|
- :label="tag.label"
|
|
|
- :value="tag.value"
|
|
|
- :disabled="
|
|
|
+ <template v-if="sourceList.pagination.tags.length !== customerTag.length">
|
|
|
+ <el-select v-if="addTagSearchShow" v-model="addSearchTag" style="margin-top: 8px" @change="changeSearchTag">
|
|
|
+ <el-option v-for="tag in customerTag" :key="tag.value" :label="tag.label" :value="tag.value" :disabled="
|
|
|
judgeTagSelect(sourceList.pagination.tags, tag.value)
|
|
|
- "
|
|
|
- />
|
|
|
+ " />
|
|
|
</el-select>
|
|
|
- <el-tag
|
|
|
- style="cursor: pointer"
|
|
|
- type="info"
|
|
|
- @click="addTagSearchShow = true"
|
|
|
- v-else
|
|
|
- >
|
|
|
+ <el-tag style="cursor: pointer" type="info" @click="addTagSearchShow = true" v-else>
|
|
|
+
|
|
|
</el-tag>
|
|
|
</template>
|
|
@@ -671,9 +358,7 @@
|
|
|
</byForm>
|
|
|
<template #footer>
|
|
|
<el-button @click="cancelSearch()" size="large">取 消</el-button>
|
|
|
- <el-button type="primary" @click="submitSearch()" size="large"
|
|
|
- >确 定</el-button
|
|
|
- >
|
|
|
+ <el-button type="primary" @click="submitSearch()" size="large">确 定</el-button>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
@@ -1746,7 +1431,7 @@ const formSearchConfig = computed(() => {
|
|
|
});
|
|
|
const addSearchTag = ref("");
|
|
|
const addTagSearchShow = ref(false);
|
|
|
-let copySearch = ref({});
|
|
|
+// let copySearch = ref({});
|
|
|
const moreSearch = () => {
|
|
|
if (sourceList.value.pagination.tag) {
|
|
|
sourceList.value.pagination.tags =
|
|
@@ -1755,11 +1440,11 @@ const moreSearch = () => {
|
|
|
sourceList.value.pagination.tags = [];
|
|
|
}
|
|
|
addTagSearchShow.value = false;
|
|
|
- copySearch.value = proxy.deepClone(sourceList.value.pagination);
|
|
|
+ // copySearch.value = proxy.deepClone(sourceList.value.pagination);
|
|
|
openSearch.value = true;
|
|
|
};
|
|
|
const cancelSearch = () => {
|
|
|
- sourceList.value.pagination = copySearch.value;
|
|
|
+ // sourceList.value.pagination = copySearch.value;
|
|
|
openSearch.value = false;
|
|
|
};
|
|
|
const submitSearch = () => {
|