123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954 |
- <template>
- <div class="p-2 adweb-enquiry-list">
- <div class="search-form">
- <a-row class="r1 search-form-container" :gutter="8">
- <a-col :xl="6" :xxl="5">
- <div class="choose-site">
- <span class="t1">站点:</span>
- <select-site ref="selectSiteRef" @set-site-info="getSiteList" select-width="100%" />
- </div>
- </a-col>
- <a-col :xl="7" :xxl="5">
- <div class="choose-site">
- <span class="t1">询盘时间:</span>
- <a-range-picker @change="onChangeDatePciker" :disabledDate="disabledDate" :value="rangeDate" style="width: 70%" />
- </div>
- </a-col>
- <a-col :xl="8" :xxl="10">
- <a-button :class="queryParam.dateType == '' ? 'active' : ''" @click="setTime('')">全部时间 </a-button>
- <a-button :class="queryParam.dateType == 'thirtyDay' ? 'active' : ''" @click="setTime('thirtyDay')">近30天 </a-button>
- <a-button :class="queryParam.dateType == 'sevenDay' ? 'active' : ''" @click="setTime('sevenDay')">近一周 </a-button>
- <a-button :class="queryParam.dateType == 'yesterday' ? 'active' : ''" @click="setTime('yesterday')">昨日 </a-button>
- <a-button :class="queryParam.dateType == 'today' ? 'active' : ''" @click="setTime('today')"> 今日 </a-button>
- </a-col>
- <a-col :xl="3" :xxl="4" v-if="isSuperAdmin">
- <a-button type="primary" preIcon="ant-design:plus-outlined" @click="handleAdd">新增询盘</a-button>
- </a-col>
- </a-row>
- </div>
- <a-row class="r2">
- <a-col :span="6">
- <p class="t1"><img :src="toEffect" />有效询盘</p>
- <p class="t2" @click="getList('product')">{{ enquiryNums.product }}</p>
- </a-col>
- <a-col :span="6">
- <p class="t1"><img :src="toReadImg" />待阅读询盘</p>
- <p class="t2" @click="getList('noRead')">{{ enquiryNums.noRead }}</p>
- </a-col>
- <a-col :span="6">
- <p class="t1"><img :src="toClassified" />待分类询盘</p>
- <p class="t2" @click="getList('wait')">{{ enquiryNums.wait }}</p>
- </a-col>
- <a-col :span="6">
- <p class="t1"><img :src="toTotal" />累计询盘</p>
- <p class="t2" @click="getList('all')">{{ enquiryNums.all }}</p>
- </a-col>
- </a-row>
- <a-row class="r3" type="flex" :gutter="8">
- <a-col flex="2">
- <a-input placeholder="邮箱/姓名/国家" v-model:value="queryParam.searchText" />
- </a-col>
- <a-col flex="2">
- <a-input placeholder="询盘内容" v-model:value="queryParam.searchContent" />
- </a-col>
- <a-col flex="2">
- <a-select :allowClear="true" placeholder="全部分类" style="width: 100%" @change="filterCategory">
- <a-select-option :key="2" :value="2">待分类</a-select-option>
- <a-select-option :key="1" :value="1">有效询盘</a-select-option>
- </a-select>
- </a-col>
- <a-col flex="2">
- <a-select v-model="queryParam.readStatus" :allowClear="true" placeholder="全部阅读状态" style="width: 100%" @change="filterStatus">
- <a-select-option value="0"> 未读 </a-select-option>
- <a-select-option value="1"> 已读 </a-select-option>
- </a-select>
- </a-col>
- <a-col v-if="haveSubAccount" flex="2">
- <a-select placeholder="全部跟进人" v-model="queryParam.principalUid" showSearch allowClear style="width: 100%" :filterOption="filterOption">
- <a-select-option key="ALL" value="ALL">所有人</a-select-option>
- <a-select-option v-for="principal in subAccountOptions" :key="principal.id" :value="principal.id">
- {{ principal.username }}
- </a-select-option>
- </a-select>
- </a-col>
- <a-col flex="500px" style="text-align: right">
- <a-button type="primary" @click="searchQuery">查询</a-button>
- <a-button ghost type="primary" @click="searchReset" style="margin-left: 8px">重置</a-button>
- <a-button ghost type="primary" @click="handleExportXlsLU()" style="margin-left: 8px" :loading="excelLoading">导出Excel </a-button>
- <a-button ghost type="primary" @click="recycleBinVisible" style="margin-left: 8px">回收站 </a-button>
- <a-button ghost type="primary" @click="showBlackList" style="margin-left: 8px">黑名单 </a-button>
- </a-col>
- </a-row>
- <!--引用表格-->
- <BasicTable @register="registerTable" :rowSelection="rowSelection" :columns="enquiryColumns">
- <template #alertAfter>
- <a-divider type="vertical" />
- <a @click="enquiryReady">标为已读</a>
- <template v-if="isForwardSite">
- <a-divider type="vertical" />
- <a @click="forwardDetailAll"> 转发 </a>
- </template>
- <a-divider type="vertical" />
- <a @click="batchHandleDelete">删除</a>
- </template>
- <!--插槽:table标题-->
- <template #tableTitle>
- <!-- TODO 高级查询 -->
- <!-- <super-query :config="superQueryConfig" @search="handleSuperQuery" />-->
- </template>
- <!--操作栏-->
- <!-- <template #action="{ record }">-->
- <!-- <TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />-->
- <!-- </template>-->
- <!-- 操作动作 -->
- <template #action="{ record }">
- <div style="padding: 5px 8px; display: flex; justify-content: left">
- <a-tag v-if="isForwardSite" color="blue" @click="forwardDetail(record)" style="cursor: pointer"> 转发 </a-tag>
- <a-tag color="purple" @click="showEnquiryDetail(record)" style="cursor: pointer"> 详情 </a-tag>
- <a-popconfirm
- title="确认拒收后,该用户会归入【黑名单】,后期不再接收该用户的询盘信息~"
- ok-text="是"
- cancel-text="否"
- placement="topRight"
- @confirm="enquiryAddBlackList(record)"
- >
- <a-tag color="orange" style="cursor: pointer"> 拒收 </a-tag>
- </a-popconfirm>
- <a-tag color="green" @click="showEnquiryTrackRecord(record)" style="cursor: pointer"> 跟踪 </a-tag>
- <a-tag
- color="blue"
- v-if="record.visitId !== null && record.visitId !== '' && record.visitId !== undefined"
- style="cursor: pointer"
- @click="showEnquiryTrack(record)"
- >
- 访问记录
- </a-tag>
- </div>
- </template>
- <template #bodyCell="{ column, record, text }">
- <!-- 自定义显示字段 -->
- <template v-if="column.key == 'principalUid'">
- <template v-if="haveSubAccount">
- <a-select
- placeholder="请选择跟进人"
- v-model:value="record.principalUid"
- style="width: 180px"
- showSearch
- :filterOption="filterOption"
- @change="selectPrincipal(record)"
- :disabled="
- userRole.indexOf('admin') > -1 ||
- userRole.indexOf('adweb_admin') > -1 ||
- userRole.indexOf('adweb_seo_manager') > -1 ||
- userRole.indexOf('adweb_site_manager') > -1
- "
- >
- <a-select-option key="ALL" value="ALL">所有人</a-select-option>
- <a-select-option v-for="principal in subAccountOptions" :key="principal.id" :value="principal.id">
- {{ principal.username }}
- </a-select-option>
- </a-select>
- </template>
- <template v-else>{{ record.principalName }}</template>
- </template>
- <!-- 询盘状态 -->
- <template v-if="column.key == 'userEffective'">
- <a class="theme-color" v-if="text === 2" @click="showEnquiryDetail(record)">{{ record.userEffectiveStr }}</a>
- <span v-else-if="text == 0" style="color: #fa8c16">{{ record.userEffectiveStr }}</span>
- <span v-else>{{ record.userEffectiveStr }}</span>
- </template>
- <!-- 阅读状态 -->
- <template v-if="column.key == 'readStatus'">
- <a v-if="text == 0" class="theme-color" @click="showEnquiryDetail(record)">未读</a>
- <span v-else>已读</span>
- </template>
- <!-- 询盘详情 -->
- <div v-if="column.key == 'details'">
- <a @click="showEnquiryDetail(record)" style="margin: 0 10px 0 10px"> {{ record.context ? record.context.substr(0, 50) : '--' }}</a>
- </div>
- <!-- 来源页面 -->
- <template v-if="column.key == 'fromPage'">
- <template v-if="!text">-</template>
- <template v-else-if="text.indexOf('http') < 0">-</template>
- <template v-else-if="text.indexOf('http') === 0">
- <template v-if="text.lastIndexOf('/') <= 7">
- <a :href="text" target="_blank" style="text-decoration: underline">Home</a>
- </template>
- <template v-else>
- <a :href="text" target="_blank" style="text-decoration: underline">{{
- text.substring(text.lastIndexOf('/') + 1).slice(0, 45) + (text.substring(text.lastIndexOf('/') + 1).length > 45 ? '...' : '')
- }}</a>
- </template>
- </template>
- <template v-else-if="text.indexOf('http') > 0">
- <a :href="text.substring(text.indexOf('http'))" target="_blank" style="text-decoration: underline">{{
- text.substring(0, text.indexOf('http')).slice(0, 45) + (text.substring(0, text.indexOf('http')).length > 45 ? '...' : '')
- }}</a>
- </template>
- <template v-else>-</template>
- </template>
- <!-- 邮箱 -->
- <div v-if="column.key == 'fromEmail'">
- <a-popover>
- <template #content>
- {{ text }}
- </template>
- <a @click.prevent="copyEmailFunction(text)" :href="'mailto:' + text" v-if="text">{{
- text.slice(0, 30) + (text.length > 30 ? '...' : '')
- }}</a>
- <div v-else>--</div>
- </a-popover>
- </div>
- <!-- 审核进度条-->
- <div v-if="column.dataIndex == 'verifyProgress'">
- <a @click="handleProcess(record, 'enquiry')">
- <a-progress :size="10" :showInfo="true" :percent="text" />
- </a>
- </div>
- </template>
- </BasicTable>
- <!-- 表单区域 -->
- <AdwebEnquiryModal ref="registerModal" @success="handleSuccess" />
- <!--回收站-->
- <xp-recycle-bin-modal ref="XpRecycleBinModalRef" @ok="getTableAndNum" />
- <!--询盘详情 reload用于子组件删除询盘功能刷新父组件table showDelBtn用于展示删除按钮-->
- <enquiry-detail
- :userEffectiveOption="userEffectiveOption"
- :showDelBtn="true"
- @reload="getTableAndNum()"
- @ok="getTableAndNum"
- ref="enquiryDetailRef"
- />
- <!-- 转发询盘 -->
- <a-modal title="转发" v-model:open="forwardVisible" @ok="editForward" @cancel="cancelEditForward" :confirm-loading="forwardLoading">
- <a-radio-group v-model:value="selectedUserId">
- <a-radio v-for="item in subAccountOptions" style="display: block; height: 30px; lineheight: 30px" :value="item.id">
- {{ item.username }}
- </a-radio>
- </a-radio-group>
- </a-modal>
- <!--黑名单-->
- <black-list ref="blackListRef" @ok="getTableAndNum" />
- <!--跟踪记录-->
- <enquiry-track-record ref="enquiryTrackRecordRef" />
- <!--站点访问记录-->
- <enquiry-track ref="enquiryTrackRef" />
- <enquiry-verify-process ref="enquiryVerifyProcessRef" @reload="reload" />
- </div>
- </template>
- <script lang="ts" name="adweb-adwebEnquiry" setup>
- import toEffect from '/@/assets/enquiry/enquiryListTop1.svg';
- import toReadImg from '/@/assets/enquiry/enquiryListTop3.svg';
- import toClassified from '/@/assets/enquiry/enquiryListTop2.svg';
- import toTotal from '/@/assets/enquiry/enquiryListTop4.svg';
- import selectSite from '/@/components/Adweb/selectSite.vue';
- import { computed, nextTick, onBeforeMount, onMounted, reactive, ref } from 'vue';
- import { BasicTable } from '/@/components/Table';
- import { useListPage } from '/@/hooks/system/useListPage';
- import { columns } from './AdwebEnquiry.data';
- import { batchDelete, getExportUrl, getImportUrl, list } from './AdwebEnquiry.api';
- import AdwebEnquiryModal from './components/AdwebEnquiryModal.vue';
- import { useUserStore } from '/@/store/modules/user';
- import { getAction, postAction } from '@/api/manage/manage';
- import { useMessage } from '@/hooks/web/useMessage';
- import { filterOption } from 'ant-design-vue/es/vc-mentions/src/util';
- import enquiryDetail from '@/views/adweb/enquiry/modules/enquiryDetail.vue';
- import XpRecycleBinModal from '@/views/adweb/system/modules/XpRecycleBinModal.vue';
- import blackList from '@/views/adweb/enquiry/modules/blackList.vue';
- import enquiryTrackRecord from '@/views/adweb/enquiry/modules/enquiryTrackRecord.vue';
- import { RoleEnum } from '@/enums/roleEnum';
- import dayjs, { Dayjs } from 'dayjs';
- import EnquiryTrack from '@/views/adweb/enquiry/modules/enquiryTrack.vue';
- import EnquiryVerifyProcess from '@/views/adweb/enquiry/modules/enquiryVerifyProcess.vue';
- import { getSubscribePlan } from '@/views/adweb/site/AdwebSite.api';
- const dateFormat = 'YYYY-MM-DD';
- type RangeValue = [Dayjs, Dayjs];
- // 过滤日期范围
- let rangeDate = ref<RangeValue>();
- const userStore = useUserStore();
- const queryParam = reactive<any>({});
- console.log(userStore.getRoleList, '当前用户所属角色');
- const isSuperAdmin = computed(() => {
- return userStore.getRoleList.includes(RoleEnum.ADMIN) || userStore.getRoleList.includes(RoleEnum.ADWEB_CHANNEL_ADMIN);
- });
- const registerModal = ref();
- const selectSiteRef = ref(null);
- const { createMessage } = useMessage();
- // 询盘数量
- const enquiryNums = ref({
- all: 0,
- noRead: 0,
- product: 0,
- wait: 0,
- });
- const enquiryVerifyProcessRef = ref();
- // 子账号列表
- let subAccountOptions = ref([{ id: '', username: '' }]);
- // 是否有子账户
- let haveSubAccount = ref(false);
- // 导出excel进度
- let excelLoading = ref<boolean>(false);
- // 编辑转发进度
- let forwardLoading = ref<boolean>(false);
- // 选中跟进人
- let selectedUserId = ref<any>(undefined);
- let userEffectiveOption = ref([]);
- // 当前用户角色
- const userRole = ref('');
- // 已经选择的站点code
- const siteCode = ref<any>('');
- const isForwardSite = ref<boolean>(false);
- //转发的询盘id
- const forwardEnquiryDetail = ref<any>(undefined);
- //转发是否可见
- const forwardVisible = ref(false);
- // 询盘详情子组件
- const enquiryDetailRef = ref(null);
- // 回收站子组件
- const XpRecycleBinModalRef = ref(null);
- // 黑名单子组件
- const blackListRef = ref(null);
- // 跟踪记录
- const enquiryTrackRecordRef = ref(null);
- // 访问记录
- const enquiryTrackRef = ref();
- const isSpecialSubscribePlan = ref(false);
- const enquiryColumns = ref<any>(columns);
- //注册table数据
- const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
- tableProps: {
- title: '询盘信息',
- api: list,
- canResize: false,
- useSearchForm: false,
- actionColumn: {
- width: 180,
- maxWidth: 220,
- minWidth: 180,
- fixed: 'right',
- },
- striped: true,
- bordered: false,
- immediate: false, // 不直接触发,通过reload事件触发接口
- beforeFetch: (params) => {
- // 如果查询条件中没有设置状态,则默认查出所有状态数据
- if (queryParam.userEffective == undefined) {
- queryParam.userEffective = '1,2';
- }
- return Object.assign(params, queryParam);
- },
- },
- exportConfig: {
- name: '询盘列表',
- url: getExportUrl,
- params: queryParam,
- },
- importConfig: {
- url: getImportUrl,
- success: handleSuccess,
- },
- });
- const [
- registerTable,
- { reload, clearSelectedRowKeys, updateTableDataRecord, findTableDataRecord, getDataSource },
- { rowSelection, selectedRowKeys },
- ] = tableContext;
- onBeforeMount(() => {
- siteCode.value = localStorage.getItem('siteCode');
- getTurnInquiryCode();
- getSubAccountOptions();
- });
- onMounted(async () => {
- userRole.value = useUserStore().userInfo?.roles.join(',');
- // console.log(useUserStore().userInfo?.roles.join(','), 'useUserStore().roleList');
- // getEffectiveList();
- });
- function getSiteList(selectedSiteInfo: any) {
- queryParam.siteId = selectedSiteInfo.id;
- // 判断当前站点是否属于苏豪通全托管套餐,如果是,则显示审核进度列,否则不显示
- getSubscribePlan().then((res) => {
- // 根据接口返回结果判断是否隐藏敏感信息列
- if (res.planName !== '苏豪通全托管') {
- enquiryColumns.value = enquiryColumns.value.filter((col) => col.dataIndex !== 'verifyProgress');
- } else {
- // 显示敏感信息列
- enquiryColumns.value = columns;
- isSpecialSubscribePlan.value = true;
- }
- getEffectiveList();
- });
- getTableAndNum(true);
- }
- // 单个产品,点击下拉框直接修改
- function selectPrincipal(record) {
- console.log(record);
- let params = {
- productId: record.id,
- uid: record.principalUid === undefined ? 'ALL' : record.principalUid,
- };
- getAction('/adweb/adwebEnquiry/setPrincipal', params).then((res) => {
- if (res.code == 200) {
- createMessage.success('操作成功!');
- } else {
- if (res.code == 403 || res.code == 500) {
- createMessage.warning(res.message);
- reload();
- } else {
- createMessage.success('操作失败!');
- }
- }
- });
- }
- function filterCategory(value: string) {
- queryParam.userEffective = value;
- }
- function filterStatus(value: number) {
- queryParam.readStatus = value;
- }
- //重新刷新页面数据及获取询盘数量
- function getTableAndNum(clearParam: boolean = false) {
- getEnquiryNums();
- if (clearParam) {
- if (queryParam.readStatus) {
- delete queryParam.readStatus;
- }
- if (queryParam.searchText) {
- delete queryParam.searchText;
- }
- if (queryParam.searchContent) {
- delete queryParam.searchContent;
- }
- if (queryParam.userEffective) {
- delete queryParam.userEffective;
- }
- if (queryParam.principalUid) {
- delete queryParam.principalUid;
- }
- }
- loadData();
- }
- //搜索条件部分的逻辑
- function onChangeDatePciker(date, dateString) {
- if (dateString.length > 0) {
- rangeDate.value = date;
- queryParam.start = dateString[0];
- queryParam.end = dateString[1];
- queryParam.dateType = undefined;
- getTableAndNum();
- }
- }
- //日期选择只能今天之前
- function disabledDate(current) {
- return current && current > dayjs().endOf('day');
- }
- //设置列表的时间查询条件
- function setTime(time) {
- queryParam.dateType = time;
- queryParam.start = '';
- queryParam.end = '';
- // sevenDay thirtyDay today yesterday
- if (time == '') {
- rangeDate.value = undefined;
- } else if (time == 'sevenDay') {
- rangeDate.value = [dayjs().subtract(6, 'days'), dayjs()];
- } else if (time == 'thirtyDay') {
- rangeDate.value = [dayjs().subtract(29, 'days'), dayjs()];
- } else if (time == 'today') {
- rangeDate.value = [dayjs(), dayjs()];
- } else if (time == 'yesterday') {
- rangeDate.value = [dayjs().subtract(1, 'days'), dayjs().subtract(1, 'days')];
- }
- if (rangeDate.value != undefined) {
- queryParam.start = rangeDate.value[0].format(dateFormat);
- queryParam.end = rangeDate.value[1].format(dateFormat);
- }
- getTableAndNum();
- }
- //获取不同状态询盘的数量
- function getEnquiryNums() {
- let siteId = '';
- if (queryParam.siteId && queryParam.siteId != '') {
- siteId = queryParam.siteId;
- } else {
- siteId = '';
- }
- let d = {
- siteId: siteId,
- dateType: queryParam.dateType,
- start: queryParam.start,
- end: queryParam.end,
- };
- getAction('/adweb/adwebEnquiry/getEnquiryNums', d).then((res) => {
- if (res.code == 200) {
- enquiryNums.value.all = res.result.all;
- enquiryNums.value.noRead = res.result.noRead;
- enquiryNums.value.product = res.result.product;
- enquiryNums.value.wait = res.result.wait;
- } else {
- enquiryNums.value.all = 0;
- enquiryNums.value.noRead = 0;
- enquiryNums.value.product = 0;
- enquiryNums.value.wait = 0;
- }
- });
- }
- // 获取子账户的下拉框选项
- function getSubAccountOptions() {
- getAction('/usercountry/subAccounts/options?siteCode=' + siteCode.value, null).then((res) => {
- if (res.code === 200) {
- subAccountOptions.value = res.result;
- haveSubAccount.value = res.result !== null && res.result !== undefined && res.result.length > 0;
- }
- });
- }
- function getList(type: String) {
- //清空查询条件
- queryParam.principalUid = undefined;
- queryParam.searchText = undefined;
- queryParam.searchContent = undefined;
- if (type == 'noRead') {
- queryParam.readStatus = '0';
- queryParam.userEffective = undefined;
- }
- if (type == 'product') {
- queryParam.userEffective = 1;
- console.log('1', queryParam);
- queryParam.readStatus = undefined;
- console.log('2', queryParam);
- }
- if (type == 'wait') {
- queryParam.userEffective = 2;
- queryParam.readStatus = undefined;
- }
- if (type == 'all') {
- queryParam.userEffective = undefined;
- queryParam.readStatus = undefined;
- }
- loadData(1);
- }
- //批量设为已读
- function enquiryReady() {
- console.log(selectedRowKeys.value.length, 'selectedRowKeysselectedRowKeysselectedRowKeys');
- if (selectedRowKeys.value.length <= 0) {
- createMessage.warning('请选择至少一条记录!');
- return;
- }
- getAction('/adweb/adwebEnquiry/read', { id: selectedRowKeys.value.toString() }).then((res) => {
- if (res.success) {
- createMessage.success('批量设置已读成功!');
- getTableAndNum();
- clearSelectedRowKeys();
- } else {
- if (res.code == 403) {
- createMessage.warning(res.message);
- } else {
- createMessage.error('设置失败!');
- }
- }
- });
- }
- // 加载table列表数据
- function loadData(page: number = 1) {
- nextTick().then(() => {
- reload({ page: page });
- });
- }
- // 导出excel
- function handleExportXlsLU() {
- excelLoading.value = true;
- delete queryParam.userEffective;
- onExportXls().then(() => {
- excelLoading.value = false;
- });
- }
- //询盘详情
- async function showEnquiryDetail(record) {
- if (record.readStatus == 0) {
- getAction('/adweb/adwebEnquiry/read?id=' + record.id, null).then(() => {
- getTableAndNum();
- });
- }
- await nextTick();
- if (enquiryDetailRef.value && enquiryDetailRef.value.init) {
- enquiryDetailRef.value.init(record);
- }
- }
- //获取询盘分类列表
- function getEffectiveList() {
- getAction('/adweb/adwebEnquiry/getEnquiryCatalog', null)
- .then(function (res) {
- if (res.code == 200) {
- userEffectiveOption.value = JSON.parse(res.result);
- // 针对苏豪全托管套餐,隐藏直接设置有效询盘
- if (isSpecialSubscribePlan.value) {
- userEffectiveOption.value = userEffectiveOption.value.filter((item) => item.value !== '1');
- }
- } else {
- createMessage.error('获取询盘分类失败!');
- }
- })
- .catch(function (err) {
- console.log(err);
- });
- }
- //复制email到剪切板
- function copyEmailFunction(text) {
- //复制email到剪切板
- if (!navigator.clipboard) {
- console.log('浏览器不支持navigator');
- let copy = (e) => {
- e.preventDefault();
- e.clipboardData.setData('text/plain', text);
- createMessage.success('复制成功');
- document.removeEventListener('copy', copy);
- };
- document.addEventListener('copy', copy);
- document.execCommand('Copy');
- return;
- }
- navigator.clipboard.writeText(text).then(
- function () {
- createMessage.success('复制成功');
- },
- function (err) {
- createMessage.error('复制失败', err);
- }
- );
- }
- //获取需要轮流询盘的站点code,判断哪个站点的询盘需要开启转发功能
- function getTurnInquiryCode() {
- // 站点code
- let dictSiteCode = [{ label: '', value: '' }];
- getAction('/adweb/adwebEnquiry/getTurnInquiryCode', null).then((res) => {
- if (res.code === 200) {
- Object.assign(dictSiteCode, res.result);
- for (let it in dictSiteCode) {
- if (dictSiteCode[it].value === siteCode.value) {
- isForwardSite.value = true;
- }
- }
- }
- });
- }
- //转发询盘
- function forwardDetail(record) {
- forwardEnquiryDetail.value = record.id;
- forwardVisible.value = true;
- }
- //拒收
- function enquiryAddBlackList(record) {
- delete record.wasteEnquiry;
- postAction('/enquiry/blacklist/addBlacklist', record, null).then((res) => {
- if (res.success) {
- createMessage.success(`拒收成功!`);
- this.getTableAndNum();
- } else {
- if (res.code == 403 || res.code == 500) {
- createMessage.warning(res.message);
- } else {
- createMessage.error('拒收失败!');
- }
- }
- });
- }
- // 编辑转发
- function editForward() {
- if (forwardEnquiryDetail.value === undefined) {
- createMessage.warning('请选择询盘信息!');
- return;
- }
- if (!selectedUserId.value) {
- createMessage.warning('请选择跟进人!');
- return;
- }
- forwardLoading.value = true;
- let param = {
- ids: forwardEnquiryDetail.value,
- uid: selectedUserId.value,
- code: siteCode.value,
- };
- getAction('/adweb/adwebEnquiry/setForward', param)
- .then((res) => {
- if (res.success) {
- createMessage.success(res.message);
- loadData();
- cancelEditForward();
- getEnquiryNums();
- clearSelectedRowKeys();
- } else {
- createMessage.warning(res.message);
- }
- })
- .finally(() => {
- forwardLoading.value = false;
- });
- }
- // 取消转发的编辑
- function cancelEditForward() {
- selectedUserId.value = undefined;
- forwardEnquiryDetail.value = undefined;
- forwardVisible.value = false;
- }
- //回收箱
- async function recycleBinVisible() {
- await nextTick();
- if (XpRecycleBinModalRef.value && XpRecycleBinModalRef.value.init) {
- XpRecycleBinModalRef.value.init(queryParam.siteId, '1,2');
- }
- }
- //黑名单
- async function showBlackList() {
- await nextTick();
- if (blackListRef.value && blackListRef.value.init) {
- blackListRef.value.init(queryParam.siteId);
- }
- }
- //跟踪记录
- async function showEnquiryTrackRecord(record) {
- await nextTick();
- if (enquiryTrackRecordRef.value && enquiryTrackRecordRef.value.init) {
- enquiryTrackRecordRef.value.init(record);
- }
- }
- async function showEnquiryTrack(record) {
- await nextTick();
- if (enquiryTrackRef.value && enquiryTrackRef.value.init) {
- enquiryTrackRef.value.init(record);
- }
- }
- /**
- * 新增事件
- */
- function handleAdd() {
- registerModal.value.disableSubmit = false;
- registerModal.value.add();
- }
- /**
- * 批量删除事件
- */
- async function batchHandleDelete() {
- await batchDelete({ id: selectedRowKeys.value.join(',') }, handleSuccess);
- }
- /**
- * 成功回调
- */
- function handleSuccess() {
- (selectedRowKeys.value = []) && reload();
- }
- function handleProcess(record, type) {
- if (record.userEffective == 1 && record.verifyNum == null) {
- createMessage.warning('该询盘是历史有效询盘!');
- return;
- } else {
- enquiryVerifyProcessRef.value.init(record, type);
- }
- }
- /**
- * 查询
- */
- function searchQuery() {
- reload();
- }
- /**
- * 重置
- */
- function searchReset() {
- selectedRowKeys.value = [];
- //刷新数据
- getTableAndNum(true);
- }
- </script>
- <style lang="less" scoped>
- .ant-form-item {
- flex: 1;
- }
- .jeecg-basic-table-form-container {
- padding: 0;
- .table-page-search-submitButtons {
- display: block;
- margin-bottom: 24px;
- white-space: nowrap;
- }
- .query-group-cust {
- min-width: 100px !important;
- }
- .query-group-split-cust {
- width: 30px;
- display: inline-block;
- text-align: center;
- }
- .ant-form-item:not(.ant-form-item-with-help) {
- margin-bottom: 16px;
- height: 32px;
- }
- :deep(.ant-picker),
- :deep(.ant-input-number) {
- width: 100%;
- }
- }
- .theme-color {
- color: @primary-color;
- }
- .r1 {
- .choose-site {
- display: flex;
- }
- .t1 {
- font-size: 18px;
- }
- .ant-calendar-picker {
- margin-right: 20px;
- }
- }
- .r2 {
- background: #fff;
- border-radius: 10px;
- padding: 30px 20px;
- .ant-col:not(:last-child) {
- border-right: 1px solid #e6e6e6;
- }
- p {
- margin: 0;
- text-align: center;
- &.t1 {
- color: #333;
- margin-bottom: 15px;
- img {
- margin-right: 10px;
- width: 15px;
- margin-top: -5px;
- }
- }
- &.t2 {
- color: @primary-color;
- font-size: 30px;
- font-weight: 500;
- line-height: 1;
- text-decoration: underline;
- cursor: pointer;
- padding-left: 25px;
- }
- }
- }
- .r3 {
- margin-top: 20px;
- }
- </style>
|