修改
This commit is contained in:
@@ -12,12 +12,12 @@
|
||||
</el-row>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button plain @click="(visible=false)">取消</el-button>
|
||||
<el-button plain @click="(visible = false)">取消</el-button>
|
||||
<el-button v-jclick type="primary" :disabled="!canSubmit" @click="dialogFormSubmit()">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
<script>
|
||||
import { batchUpdate } from '@/api/zs/clue'; export default {
|
||||
name: 'BatchUpdateDialog',
|
||||
props: {
|
||||
@@ -44,7 +44,6 @@ import { batchUpdate } from '@/api/zs/clue'; export default {
|
||||
},
|
||||
methods: {
|
||||
init(info = undefined) {
|
||||
// debugger
|
||||
this.visible = true;
|
||||
this.$nextTick(() => {
|
||||
this.resetDialogForm();
|
||||
@@ -86,5 +85,5 @@ import { batchUpdate } from '@/api/zs/clue'; export default {
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog title="公海" :close-on-click-modal="false" append-to-body :visible.sync="visible" width="1000px" height="500" @close="closeDialog">
|
||||
<el-dialog title="公海" :close-on-click-modal="false" append-to-body :visible.sync="visible" width="1000px" height="500">
|
||||
<div>
|
||||
<el-button type="text" icon="el-icon-refresh" style="margin-bottom: 10px" @click="_getTableList">刷新</el-button>
|
||||
<el-table v-loading="loading" :data="publicList" border :row-class-name="tableRowClassName">
|
||||
@@ -54,10 +54,6 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
closeDialog() {
|
||||
this.$emit('update:dialog.publicVisible', false);
|
||||
},
|
||||
handlePickup(item) {
|
||||
pickupClue(item).then((resp) => {
|
||||
if (resp && resp.code === 200) {
|
||||
@@ -72,8 +68,8 @@ export default {
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@@ -22,7 +22,10 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="创建时间">
|
||||
<el-date-picker v-model="dateRange" style="width: 240px" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" @change="pickDateChange" />
|
||||
<el-date-picker v-model="createDateRange" style="width: 240px" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" @change="pickDateChange" />
|
||||
</el-form-item>
|
||||
<el-form-item label="下次跟进日期">
|
||||
<el-date-picker v-model="nextDateRange" style="width: 240px" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" @change="nextDateChange" />
|
||||
</el-form-item>
|
||||
<el-form-item label-width="0">
|
||||
<el-button type="primary" icon="el-icon-search" @click="$emit('search')">搜索</el-button>
|
||||
@@ -41,16 +44,20 @@ export default {
|
||||
props: {
|
||||
userOptions: {
|
||||
type: Array,
|
||||
default: []
|
||||
default: () => ([])
|
||||
},
|
||||
sourceOptions: {
|
||||
type: Array,
|
||||
default: []
|
||||
default: () => ([])
|
||||
},
|
||||
form: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
searchForm: {},
|
||||
searchForm: { ...this.form },
|
||||
quickList: [
|
||||
{ value: 1, label: '我创建的' },
|
||||
{ value: 2, label: '我的有效' },
|
||||
@@ -62,27 +69,34 @@ export default {
|
||||
{ value: 8, label: '撞单线索' }
|
||||
],
|
||||
intentionOptions: [],
|
||||
dateRange: []
|
||||
createDateRange: [],
|
||||
nextDateRange: []
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
searchForm: {
|
||||
handler(val) {
|
||||
this.$emit('update:form', val);
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
|
||||
},
|
||||
created() {
|
||||
// 意向状态
|
||||
this.getDicts('dm_intention_state').then((response) => {
|
||||
let list = response.data
|
||||
this.intentionOptions = []
|
||||
const list = response.data;
|
||||
this.intentionOptions = [];
|
||||
list.map(item => {
|
||||
this.intentionOptions.push({
|
||||
value: item.dictValue,
|
||||
label: item.dictLabel
|
||||
})
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
resetQuery() {
|
||||
this.searchForm = {
|
||||
createTime: [],
|
||||
name: undefined,
|
||||
intentionState: undefined,
|
||||
followUser2: undefined,
|
||||
@@ -90,12 +104,28 @@ export default {
|
||||
quickSearch: undefined,
|
||||
total: 0
|
||||
};
|
||||
this.dateRange = []
|
||||
this.createDateRange = [];
|
||||
this.nextDateRange = [];
|
||||
},
|
||||
pickDateChange() {
|
||||
this.addDateRange(this.searchForm, this.dateRange)
|
||||
if (this.createDateRange.length) {
|
||||
this.searchForm.createDateStart = this.createDateRange[0];
|
||||
this.searchForm.createDateEnd = this.createDateRange[1];
|
||||
} else {
|
||||
this.searchForm.createDateStart = undefined;
|
||||
this.searchForm.createDateEnd = undefined;
|
||||
}
|
||||
},
|
||||
nextDateChange() {
|
||||
if (this.nextDateRange.length) {
|
||||
this.searchForm.nextDateStart = this.nextDateRange[0];
|
||||
this.searchForm.nextDateEnd = this.nextDateRange[1];
|
||||
} else {
|
||||
this.searchForm.nextDateStart = undefined;
|
||||
this.searchForm.nextDateEnd = undefined;
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog :title="title" :close-on-click-modal="false" append-to-body :visible.sync="visible" width="400px" @close="closeDialog">
|
||||
<el-dialog :title="title" :close-on-click-modal="false" append-to-body :visible.sync="visible" width="400px">
|
||||
<el-upload ref="upload" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url + '?ydtData=' + ydtData" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
|
||||
<i class="el-icon-upload" />
|
||||
<div class="el-upload__text">
|
||||
@@ -13,12 +13,12 @@
|
||||
</el-upload>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitFileForm">确 定</el-button>
|
||||
<el-button @click="closeDialog">取 消</el-button>
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import { getToken } from '@/utils/auth'
|
||||
import { getToken } from '@/utils/auth';
|
||||
|
||||
export default {
|
||||
name: 'UploadDialog',
|
||||
@@ -35,8 +35,8 @@ export default {
|
||||
// 设置上传的请求头部
|
||||
headers: { Authorization: 'Bearer ' + getToken() },
|
||||
// 上传的地址
|
||||
url: process.env.VUE_APP_BASE_API + '/zs/clue/importData',
|
||||
},
|
||||
url: process.env.VUE_APP_BASE_API + '/zs/clue/importData'
|
||||
}
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
@@ -46,7 +46,7 @@ export default {
|
||||
this.$nextTick(() => {
|
||||
if (info) {
|
||||
this.ydtData = info;
|
||||
this.title = "一点通-" + this.title;
|
||||
this.title = '一点通-' + this.title;
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -66,18 +66,13 @@ export default {
|
||||
this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + '</div>', '导入结果', {
|
||||
dangerouslyUseHTMLString: true
|
||||
});
|
||||
this.$emit('update:dialog.batchUpdateVisible', false);
|
||||
this.$emit('refreshDataList');
|
||||
},
|
||||
// 提交上传文件
|
||||
submitFileForm() {
|
||||
this.$refs.upload.submit();
|
||||
},
|
||||
closeDialog() {
|
||||
this.$emit('update:dialog.batchUpdateVisible', false);
|
||||
},
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
274
src/views/zs/clue/index-bak.vue
Normal file
274
src/views/zs/clue/index-bak.vue
Normal file
@@ -0,0 +1,274 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 搜索插件 -->
|
||||
<SearchForm v-show="showSearch" ref="SearchForm" :user-options="userOptions" :source-options="sourceOptions" @search="_getTableList" />
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['zs:clue:add']" icon="el-icon-plus" type="primary" @click="handleAddandUpdate(undefined)">新增</el-button>
|
||||
<el-button v-hasPermi="['zs:clue:import']" icon="el-icon-upload" type="warning" @click="handleImport(false)">导入</el-button>
|
||||
<el-button v-hasPermi="['zs:clue:import']" icon="el-icon-upload" type="warning" @click="handleImport(true)">一点通导入</el-button>
|
||||
<el-button v-hasPermi="['zs:clue:export']" icon="el-icon-download" type="warning" @click="handleExport">导出</el-button>
|
||||
<el-button v-hasPermi="['zs:clue:edit']" icon="el-icon-edit" type="primary" :disabled="multiple" @click="handleBatChUpdate()">批量修改</el-button>
|
||||
<el-button type="primary" @click="handlePublicClue">公海</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :show-search.sync="showSearch" :columns="columns" @queryTable="_getTableList" />
|
||||
</el-row>
|
||||
<!-- 表格数据 -->
|
||||
<el-table v-loading="loading" :data="tableList" @select="handleSelectionChange">
|
||||
<el-table-column type="selection" width="50" align="center" />
|
||||
<template v-for="item in columns">
|
||||
<el-table-column v-if="item.visible" :key="item.prop" :label="item.label" align="center" :width="item.width" :prop="item.prop" :show-overflow-tooltip="item.overflow" />
|
||||
</template>
|
||||
<el-table-column label="意向状态" prop="intentionState" sortable fixed="right" min-width="100">
|
||||
<template slot-scope="{ row }">
|
||||
<el-tag effect="dark" style="border: none" :color="tagColorMap[row.intentionState]">{{ row.intentionState }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" align="center" min-width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-hasPermi="['zs:clue:edit']" type="text" @click.native.stop="handleAddandUpdate(scope.row)">编辑</el-button>
|
||||
<el-button v-if="scope.row.state" v-hasPermi="['zs:clue:sign']" type="text" style="color: #26a69a" @click.native.stop="handleSign(scope.row)">已登记</el-button>
|
||||
<el-button v-if="!scope.row.state" v-hasPermi="['zs:clue:sign']" type="text" @click.native.stop="handleSign(scope.row)">未登记</el-button>
|
||||
<el-button v-hasPermi="['zs:clue:remove']" type="text" icon="el-icon-delete" @click.native.stop="handleDelete(scope.row)">删除</el-button>
|
||||
<el-button v-if="!scope.row.state" v-hasPermi="['zs:clue:discard']" type="text" icon="el-icon-delete" @click.native.stop="handleDiscard(scope.row)">释放</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination :total="total" :page.sync="searchForm.pageNum" :limit.sync="searchForm.pageSize" :page-sizes="[10, 20, 30, 50, 100]" @pagination="_getTableList" />
|
||||
|
||||
<!-- 新增、修改 -->
|
||||
<!-- <ClueForm v-if="dialog.addAndUpdateVisible" ref="addAndUpdateForm" :dialog-visible="dialog.addAndUpdateVisible" :options="options" @refreshDataList="_getTableList" /> -->
|
||||
<!-- 批量修改 -->
|
||||
<BatchUpdateDialog v-if="dialog.batchUpdateVisible" ref="batchUpdateDialogForm" :dialog-visible="dialog.batchUpdateVisible" :options="options" @refreshDataList="_getTableList" />
|
||||
<!-- 公海 -->
|
||||
<PublicDialog v-if="dialog.publicVisible" ref="publicDialogForm" :dialog-visible="dialog.publicVisible" @refreshDataList="_getTableList" />
|
||||
<!-- 上传 -->
|
||||
<UploadDialog v-if="dialog.uploadVisible" ref="uploadDialogForm" :dialog-visible="dialog.uploadVisible" @refreshDataList="_getTableList" />
|
||||
<!-- 登记弹框 -->
|
||||
<SignFormDialog ref="signDialogForm" :clue-info="clueInfo" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import SearchForm from './components/SearchForm.vue';
|
||||
import BatchUpdateDialog from './components/BatchUpdateDialog.vue';
|
||||
import PublicDialog from './components/PublicDialog.vue';
|
||||
import UploadDialog from './components/UploadDialog.vue';
|
||||
import SignFormDialog from '../sign/components/SignFormDialog.vue';
|
||||
|
||||
import { defaultColumns } from './columns.js';
|
||||
import { getClueList, deleteClue, getClueCountBadge, discardClue, getSign } from '@/api/zs/clue';
|
||||
import empApi from '@/api/system/employee';
|
||||
|
||||
export default {
|
||||
name: 'Clue',
|
||||
components: {
|
||||
SearchForm, BatchUpdateDialog, PublicDialog, UploadDialog, SignFormDialog
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: false,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
searchForm: {
|
||||
pageNum: 1,
|
||||
pageSize: 10
|
||||
},
|
||||
tableList: [],
|
||||
total: 0,
|
||||
columns: [],
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
expireCount: 0,
|
||||
|
||||
dialog: {
|
||||
batchUpdateVisible: false,
|
||||
publicVisible: false,
|
||||
uploadVisible: false,
|
||||
addAndUpdateVisible: false,
|
||||
signVisible: false
|
||||
},
|
||||
userOptions2: [],
|
||||
userOptions: [],
|
||||
sourceOptions: [],
|
||||
tagColorMap: {
|
||||
A高意向: '#ff7043',
|
||||
B中意向: '#26a69a',
|
||||
C无意向: '#5c6bc0',
|
||||
D未知意向: '#ef5350',
|
||||
报名成功: '#ffa726',
|
||||
报名他校: '#afaeb0',
|
||||
无效线索: '#afaeb0'
|
||||
},
|
||||
options: undefined,
|
||||
clueInfo: undefined
|
||||
};
|
||||
},
|
||||
created() {
|
||||
const str = localStorage.getItem(`${this.$route.name}-table-columns`);
|
||||
this.columns = str ? JSON.parse(str) : defaultColumns;
|
||||
this._getClueCountBadge();
|
||||
this.getEmployee();
|
||||
// 线索来源
|
||||
this.getDicts('dm_source').then((response) => {
|
||||
this.sourceOptions = response.data;
|
||||
});
|
||||
// 意向状态
|
||||
this.getDicts('dm_intention_state').then((response) => {
|
||||
this.intentionOptions = response.data;
|
||||
});
|
||||
this._getTableList();
|
||||
},
|
||||
methods: {
|
||||
// 分页查询表格数据
|
||||
_getTableList() {
|
||||
this.loading = true;
|
||||
const params = { ...this.searchForm };
|
||||
getClueList(params).then((response) => {
|
||||
this.tableList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 获取已过期线索数
|
||||
async _getClueCountBadge() {
|
||||
const resp = await getClueCountBadge();
|
||||
if (resp.code === 200) {
|
||||
this.expireCount = resp.data;
|
||||
}
|
||||
},
|
||||
// 新增或修改
|
||||
handleAddandUpdate(info) {
|
||||
this.$router.push('/zs/clue-form/index/' + (info ? info.clueId : 0));
|
||||
},
|
||||
// 批量修改
|
||||
handleBatChUpdate() {
|
||||
this.options = {
|
||||
userOptions: this.userOptions
|
||||
};
|
||||
this.getEmployee2();
|
||||
this.dialog.batchUpdateVisible = true;
|
||||
const item = {
|
||||
clueIds: this.ids
|
||||
};
|
||||
this.$nextTick(() => {
|
||||
this.$refs.batchUpdateDialogForm.init(item);
|
||||
});
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map((item) => item.clueId);
|
||||
this.single = selection.length !== 1;
|
||||
this.multiple = !selection.length;
|
||||
},
|
||||
// 释放线索操作
|
||||
handleDiscard(item) {
|
||||
discardClue(item).then((resp) => {
|
||||
if (resp && resp.code === 200) {
|
||||
this.$message.success('释放成功');
|
||||
this._getTableList();
|
||||
}
|
||||
});
|
||||
},
|
||||
// 删除
|
||||
handleDelete(item) {
|
||||
this.$confirm('是否确认删除该条线索(“' + item.name + '/' + item.phone + '”)?', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then((res) => {
|
||||
deleteClue({ clueId: item.clueId }).then((resp) => {
|
||||
if (resp.code === 200) {
|
||||
this.$message.success('删除成功');
|
||||
this._getTableList();
|
||||
}
|
||||
});
|
||||
})
|
||||
.catch(function () { });
|
||||
},
|
||||
// 登记
|
||||
// 导入
|
||||
handleImport(ydtData) {
|
||||
this.dialog.uploadVisible = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.uploadDialogForm.init(ydtData);
|
||||
});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.$confirm('是否确认导出所有学员信息项?', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
const tempForm = this.$refs.SearchForm?.searchForm || {};
|
||||
this.download('zs/clue/export', tempForm, `线索信息_${new Date().getTime()}.xlsx`);
|
||||
});
|
||||
},
|
||||
// 公海按钮点击时间
|
||||
handlePublicClue() {
|
||||
this.dialog.publicVisible = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.publicDialogForm.init();
|
||||
});
|
||||
},
|
||||
getEmployee() {
|
||||
empApi.getEmployee().then((resp) => {
|
||||
if (resp.code === 200) {
|
||||
this.userOptions = resp.data;
|
||||
}
|
||||
});
|
||||
},
|
||||
// 查询不能接收线索的员工
|
||||
getEmployee2() {
|
||||
empApi.getEmployee().then((resp) => {
|
||||
if (resp.code === 200) {
|
||||
this.userOptions2 = resp.data;
|
||||
this.userOptions2 = this.userOptions2.filter((item) => {
|
||||
return item.accept;
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 登记成交
|
||||
async handleSign(item) {
|
||||
// 根据clueId查询登记信息
|
||||
let signInfo = {};
|
||||
this.clueInfo = item;
|
||||
const resp = await getSign({ clueId: item.clueId });
|
||||
if (resp.code == 200) {
|
||||
signInfo = { ...resp.data };
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
this.$refs.signDialogForm.init(signInfo);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<style scoped>
|
||||
.drawer-form__footer {
|
||||
border-top: 1px solid rgba(69, 74, 91, 0.1);
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
z-index: 2;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.footer_button {
|
||||
width: 49%;
|
||||
margin: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 搜索插件 -->
|
||||
<SearchForm v-show="showSearch" ref="SearchForm" @search="_getTableList" :userOptions="userOptions" :sourceOptions="sourceOptions" />
|
||||
<SearchForm v-show="showSearch" ref="SearchForm" :form.sync="searchForm" :user-options="userOptions" :source-options="sourceOptions" @search="_getTableList" />
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button icon="el-icon-plus" type="primary" @click="handleAddandUpdate(undefined)">新增</el-button>
|
||||
<el-button icon="el-icon-upload" type="warning" @click="handleImport(false)">导入</el-button>
|
||||
<el-button icon="el-icon-upload" type="warning" @click="handleImport(true)">一点通导入</el-button>
|
||||
<el-button icon="el-icon-download" type="warning" @click="handleExport">导出</el-button>
|
||||
<el-button icon="el-icon-edit" type="primary" :disabled="multiple" @click="handleBatChUpdate()">批量修改</el-button>
|
||||
<el-button v-hasPermi="['zs:clue:add']" icon="el-icon-plus" type="primary" @click="handleAddandUpdate(undefined)">新增</el-button>
|
||||
<el-button v-hasPermi="['zs:clue:import']" icon="el-icon-upload" type="warning" @click="handleImport(false)">导入</el-button>
|
||||
<el-button v-hasPermi="['zs:clue:import']" icon="el-icon-upload" type="warning" @click="handleImport(true)">一点通导入</el-button>
|
||||
<el-button v-hasPermi="['zs:clue:export']" icon="el-icon-download" type="warning" @click="handleExport">导出</el-button>
|
||||
<el-button v-hasPermi="['zs:clue:edit']" icon="el-icon-edit" type="primary" :disabled="multiple" @click="handleBatChUpdate()">批量修改</el-button>
|
||||
<el-button type="primary" @click="handlePublicClue">公海</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :show-search.sync="showSearch" :columns="columns" @queryTable="_getTableList" />
|
||||
</el-row>
|
||||
<!-- 表格数据 -->
|
||||
<el-table v-loading="loading" :data="tableList" @select="handleSelectionChange">
|
||||
<el-table v-loading="loading" :data="tableList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="50" align="center" />
|
||||
<template v-for="item in columns">
|
||||
<el-table-column v-if="item.visible" :key="item.prop" :label="item.label" align="center" :width="item.width" :prop="item.prop" :show-overflow-tooltip="item.overflow" />
|
||||
@@ -24,30 +22,28 @@
|
||||
<el-tag effect="dark" style="border: none" :color="tagColorMap[row.intentionState]">{{ row.intentionState }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" align="center" min-width="200">
|
||||
<el-table-column label="操作" fixed="right" align="left" min-width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" icon="el-icon-edit" @click.native.stop="handleAddandUpdate(scope.row)">编辑</el-button>
|
||||
<el-button v-if="scope.row.state" type="text" icon="el-icon-edit" style="color: #26a69a" @click.native.stop="handleSign(scope.row)">已登记</el-button>
|
||||
<el-button v-if="!scope.row.state" type="text" icon="el-icon-edit" @click.native.stop="handleSign(scope.row)">未登记</el-button>
|
||||
<el-button type="text" icon="el-icon-delete" @click.native.stop="handleDelete(scope.row)">删除</el-button>
|
||||
<el-button type="text" v-if="!scope.row.state" icon="el-icon-delete" @click.native.stop="handleDiscard(scope.row)">释放</el-button>
|
||||
<el-button v-hasPermi="['zs:clue:edit']" type="text" @click.native.stop="handleAddandUpdate(scope.row)">编辑</el-button>
|
||||
<el-button v-if="scope.row.state" v-hasPermi="['zs:clue:sign']" type="text" style="color: #26a69a" @click.native.stop="handleSign(scope.row)">已登记</el-button>
|
||||
<el-button v-if="!scope.row.state" v-hasPermi="['zs:clue:sign']" type="text" @click.native.stop="handleSign(scope.row)">未登记</el-button>
|
||||
<el-button v-hasPermi="['zs:clue:remove']" type="text" @click.native.stop="handleDelete(scope.row)">删除</el-button>
|
||||
<el-button v-if="!scope.row.state" v-hasPermi="['zs:clue:discard']" type="text" @click.native.stop="handleDiscard(scope.row)">释放</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination :total="total" :page.sync="searchForm.pageNum" :limit.sync="searchForm.pageSize" :page-sizes="[10, 20, 30, 50, 100]" @pagination="_getTableList" />
|
||||
|
||||
<!-- 新增、修改 -->
|
||||
<!-- <ClueForm v-if="dialog.addAndUpdateVisible" ref="addAndUpdateForm" :dialog-visible="dialog.addAndUpdateVisible" :options="options" @refreshDataList="_getTableList" /> -->
|
||||
<!-- 批量修改 -->
|
||||
<BatchUpdateDialog v-if="dialog.batchUpdateVisible" ref="batchUpdateDialogForm" :dialog-visible="dialog.batchUpdateVisible" :options="options" @refreshDataList="_getTableList" />
|
||||
<BatchUpdateDialog ref="batchUpdateDialogForm" :options="options" @refreshDataList="_getTableList" />
|
||||
<!-- 公海 -->
|
||||
<PublicDialog v-if="dialog.publicVisible" ref="publicDialogForm" :dialog-visible="dialog.publicVisible" @refreshDataList="_getTableList" />
|
||||
<PublicDialog ref="publicDialogForm" @refreshDataList="_getTableList" />
|
||||
<!-- 上传 -->
|
||||
<UploadDialog v-if="dialog.uploadVisible" ref="uploadDialogForm" :dialog-visible="dialog.uploadVisible" @refreshDataList="_getTableList" />
|
||||
<UploadDialog ref="uploadDialogForm" @refreshDataList="_getTableList" />
|
||||
<!-- 登记弹框 -->
|
||||
<SignFormDialog v-if="dialog.signVisible" ref="signDialogForm" :dialog-visible="dialog.signVisible" :clueInfo="clueInfo" />
|
||||
<SignFormDialog ref="signDialogForm" :clue-info="clueInfo" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import SearchForm from './components/SearchForm.vue';
|
||||
import BatchUpdateDialog from './components/BatchUpdateDialog.vue';
|
||||
@@ -56,19 +52,14 @@ import UploadDialog from './components/UploadDialog.vue';
|
||||
import SignFormDialog from '../sign/components/SignFormDialog.vue';
|
||||
|
||||
import { defaultColumns } from './columns.js';
|
||||
import { getClueList, exportData, deleteClue, getClueCountBadge, discardClue, getSign } from '@/api/zs/clue';
|
||||
import empApi from '@/api/system/employee'
|
||||
|
||||
import { getClueList, deleteClue, getClueCountBadge, discardClue, getSign } from '@/api/zs/clue';
|
||||
import empApi from '@/api/system/employee';
|
||||
export default {
|
||||
components: {
|
||||
SearchForm, BatchUpdateDialog, PublicDialog, UploadDialog, SignFormDialog
|
||||
},
|
||||
name: 'Clue',
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: false,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
searchForm: {
|
||||
pageNum: 1,
|
||||
@@ -83,15 +74,6 @@ export default {
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
expireCount: 0,
|
||||
|
||||
dialog: {
|
||||
batchUpdateVisible: false,
|
||||
publicVisible: false,
|
||||
uploadVisible: false,
|
||||
addAndUpdateVisible: false,
|
||||
signVisible: false
|
||||
},
|
||||
userOptions2: [],
|
||||
userOptions: [],
|
||||
sourceOptions: [],
|
||||
tagColorMap: {
|
||||
@@ -105,7 +87,7 @@ export default {
|
||||
},
|
||||
options: undefined,
|
||||
clueInfo: undefined
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
const str = localStorage.getItem(`${this.$route.name}-table-columns`);
|
||||
@@ -133,7 +115,6 @@ export default {
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
|
||||
},
|
||||
// 获取已过期线索数
|
||||
async _getClueCountBadge() {
|
||||
@@ -144,24 +125,11 @@ export default {
|
||||
},
|
||||
// 新增或修改
|
||||
handleAddandUpdate(info) {
|
||||
this.$router.push("/zs/clue-form/index/" + (info ? info.clueId : 0));
|
||||
},
|
||||
// 批量修改
|
||||
handleBatChUpdate() {
|
||||
this.options = {
|
||||
userOptions: this.userOptions
|
||||
}
|
||||
this.getEmployee2();
|
||||
this.dialog.batchUpdateVisible = true;
|
||||
let item = {
|
||||
clueIds: this.ids
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
this.$refs.batchUpdateDialogForm.init(item);
|
||||
});
|
||||
this.$router.push('/zs/clue-form/index/' + (info ? info.clueId : 0));
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
console.log(selection);
|
||||
this.ids = selection.map((item) => item.clueId);
|
||||
this.single = selection.length !== 1;
|
||||
this.multiple = !selection.length;
|
||||
@@ -192,10 +160,8 @@ export default {
|
||||
})
|
||||
.catch(function () { });
|
||||
},
|
||||
// 登记
|
||||
// 导入
|
||||
handleImport(ydtData) {
|
||||
this.dialog.uploadVisible = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.uploadDialogForm.init(ydtData);
|
||||
});
|
||||
@@ -213,7 +179,6 @@ export default {
|
||||
},
|
||||
// 公海按钮点击时间
|
||||
handlePublicClue() {
|
||||
this.dialog.publicVisible = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.publicDialogForm.init();
|
||||
});
|
||||
@@ -225,53 +190,32 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
// 查询不能接收线索的员工
|
||||
getEmployee2() {
|
||||
empApi.getEmployee().then((resp) => {
|
||||
if (resp.code === 200) {
|
||||
this.userOptions2 = resp.data;
|
||||
this.userOptions2 = this.userOptions2.filter((item) => {
|
||||
return item.accept;
|
||||
});
|
||||
}
|
||||
// 批量修改
|
||||
handleBatChUpdate() {
|
||||
this.options = {
|
||||
userOptions: this.userOptions
|
||||
};
|
||||
this.$nextTick(() => {
|
||||
this.$refs.batchUpdateDialogForm.init({
|
||||
clueIds: this.ids
|
||||
});
|
||||
});
|
||||
},
|
||||
//登记成交
|
||||
// 登记成交
|
||||
async handleSign(item) {
|
||||
//根据clueId查询登记信息
|
||||
// 根据clueId查询登记信息
|
||||
let signInfo = {};
|
||||
this.clueInfo = item;
|
||||
const resp = await getSign({ clueId: item.clueId })
|
||||
const resp = await getSign({ clueId: item.clueId });
|
||||
if (resp.code == 200) {
|
||||
signInfo = { ...resp.data }
|
||||
signInfo = { ...resp.data };
|
||||
}
|
||||
this.dialog.signVisible = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.signDialogForm.init(signInfo);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
.drawer-form__footer {
|
||||
border-top: 1px solid rgba(69, 74, 91, 0.1);
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
z-index: 2;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.footer_button {
|
||||
width: 49%;
|
||||
margin: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
|
||||
Reference in New Issue
Block a user