pull/5/head
parent
553cdd3657
commit
c7a6210195
@ -0,0 +1,85 @@ |
||||
@charset "UTF-8"; |
||||
.el-breadcrumb__inner, |
||||
.el-breadcrumb__inner a { |
||||
font-weight: 400 !important; |
||||
} |
||||
|
||||
.el-upload input[type="file"] { |
||||
display: none !important; |
||||
} |
||||
|
||||
.el-upload__input { |
||||
display: none; |
||||
} |
||||
|
||||
.cell .el-tag { |
||||
margin-right: 0px; |
||||
} |
||||
|
||||
.small-padding .cell { |
||||
padding-left: 5px; |
||||
padding-right: 5px; |
||||
} |
||||
|
||||
.fixed-width .el-button--mini { |
||||
padding: 7px 10px; |
||||
width: 60px; |
||||
} |
||||
|
||||
.status-col .cell { |
||||
padding: 0 10px; |
||||
text-align: center; |
||||
} |
||||
|
||||
.status-col .cell .el-tag { |
||||
margin-right: 0px; |
||||
} |
||||
|
||||
.el-dialog { |
||||
transform: none; |
||||
left: 0; |
||||
position: relative; |
||||
margin: 0 auto; |
||||
} |
||||
|
||||
.upload-container .el-upload { |
||||
width: 100%; |
||||
} |
||||
|
||||
.upload-container .el-upload .el-upload-dragger { |
||||
width: 100%; |
||||
height: 200px; |
||||
} |
||||
|
||||
.el-dropdown-menu a { |
||||
display: block; |
||||
} |
||||
|
||||
.el-textarea__inner { |
||||
font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif; |
||||
} |
||||
|
||||
.el-range-editor.el-input__inner { |
||||
display: inline-flex !important; |
||||
} |
||||
|
||||
.el-range-separator { |
||||
box-sizing: content-box; |
||||
} |
||||
|
||||
.el-menu--collapse |
||||
> div |
||||
> .el-submenu |
||||
> .el-submenu__title |
||||
.el-submenu__icon-arrow { |
||||
display: none; |
||||
} |
||||
|
||||
.el-card { |
||||
border-radius: 0; |
||||
border: none; |
||||
} |
||||
|
||||
.el-form-item--mini.el-form-item { |
||||
margin-bottom: 10px; |
||||
} |
@ -0,0 +1 @@ |
||||
.el-breadcrumb__inner,.el-breadcrumb__inner a{font-weight:400 !important}.el-upload input[type="file"]{display:none !important}.el-upload__input{display:none}.cell .el-tag{margin-right:0px}.small-padding .cell{padding-left:5px;padding-right:5px}.fixed-width .el-button--mini{padding:7px 10px;width:60px}.status-col .cell{padding:0 10px;text-align:center}.status-col .cell .el-tag{margin-right:0px}.el-dialog{transform:none;left:0;position:relative;margin:0 auto}.upload-container .el-upload{width:100%}.upload-container .el-upload .el-upload-dragger{width:100%;height:200px}.el-dropdown-menu a{display:block}.el-textarea__inner{font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif}.el-range-editor.el-input__inner{display:inline-flex !important}.el-range-separator{box-sizing:content-box}.el-menu--collapse>div>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-card{border-radius:0;border:none}.el-form-item--mini.el-form-item{margin-bottom:10px} |
@ -0,0 +1,16 @@ |
||||
export const defaultColumns = [ |
||||
{ key: 0, prop: 'state', label: `全款状态`, visible: true }, |
||||
{ key: 1, prop: 'followUserName', label: `归属人员`, visible: true }, |
||||
{ key: 2, prop: 'area', label: `所属区域`, visible: true }, |
||||
{ key: 3, prop: 'offlineReceiverName', label: `线下接待人员`, visible: true }, |
||||
{ key: 4, prop: 'dealDate', label: `成交时间`, visible: true }, |
||||
{ key: 5, prop: 'name', label: `学员姓名`, visible: true }, |
||||
{ key: 6, prop: 'phone', label: `联系方式`, visible: true }, |
||||
{ key: 7, prop: 'source', label: `线索来源`, visible: true }, |
||||
{ key: 8, prop: 'signPrice', label: `报名价格`, visible: true }, |
||||
{ key: 9, prop: 'schoolName', label: `报名驾校`, visible: true }, |
||||
{ key: 10, prop: 'placeName', label: `报名场地`, visible: true }, |
||||
{ key: 11, prop: 'className', label: `报名班型`, visible: true }, |
||||
{ key: 12, prop: 'schoolPeople', label: `对接人`, visible: true }, |
||||
{ key: 13, prop: 'schoolPay', label: `驾校支付`, visible: true } |
||||
]; |
@ -0,0 +1,106 @@ |
||||
<template> |
||||
<el-form ref="searchForm" :model="searchForm" inline label-width="80px"> |
||||
<el-row> |
||||
<el-form-item label="审核状态:" label-width="90px"> |
||||
<DMRadio v-model="searchForm.checkState" :list="auditStatusOptions" all-text="全部" /> |
||||
</el-form-item> |
||||
</el-row> |
||||
<el-row> |
||||
<el-form-item label="是否全款:" label-width="90px"> |
||||
<DMRadio v-model="searchForm.state" :list="stateOptions" all-text="全部" /> |
||||
</el-form-item> |
||||
</el-row> |
||||
<el-row> |
||||
<el-form-item label="回款状态:" label-width="90px"> |
||||
<DMRadio v-model="searchForm.moneyState" :list="moneyStateOptions" label="dictLabel" name="dictCode" all-text="全部" /> |
||||
</el-form-item> |
||||
</el-row> |
||||
<el-form-item label="快速查询"> |
||||
<el-input v-model="searchForm.name" placeholder="姓名/联系方式" clearable @keyup.enter.native="handleQuery" /> |
||||
</el-form-item> |
||||
<el-form-item label="成交时间"> |
||||
<el-date-picker v-model="searchForm.dealDate" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" /> |
||||
</el-form-item> |
||||
<el-form-item label="驾校"> |
||||
<el-select v-model="searchForm.signSchool" placeholder="请选择" clearable> |
||||
<el-option v-for="dict in schoolOptions" :key="dict.dictValue" :label="dict.dictLabel" :value="dict.dictValue" /> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="跟进人员"> |
||||
<el-select v-model="searchForm.followUser2" placeholder="请选择" clearable> |
||||
<el-option v-for="dict in userOptions" :key="dict.id" :label="dict.name" :value="dict.id" /> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label-width="0"> |
||||
<el-button type="primary" icon="el-icon-search" @click="$emit('search')">搜索</el-button> |
||||
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button> |
||||
</el-form-item> |
||||
</el-form> |
||||
</template> |
||||
|
||||
<script> |
||||
import DMRadio from '@/components/DMRadio'; |
||||
export default { |
||||
components: { |
||||
DMRadio |
||||
}, |
||||
data() { |
||||
return { |
||||
searchForm: { |
||||
checkState: undefined, |
||||
state: undefined, |
||||
moneyState: undefined, |
||||
name: undefined, |
||||
dealDate: [], |
||||
signSchool: undefined, |
||||
followUser2: undefined |
||||
}, |
||||
auditStatusOptions: [ |
||||
{ label: '待审核', value: 1 }, |
||||
{ label: '已审核', value: 2 }, |
||||
{ label: '驳回', value: 3 } |
||||
], |
||||
stateOptions: [ |
||||
{ label: '全款', value: true }, |
||||
{ label: '非全款', value: false } |
||||
], |
||||
moneyStateOptions: [], |
||||
schoolOptions: [], |
||||
userOptions: [] |
||||
}; |
||||
}, |
||||
created() { |
||||
this.getDicts('dm_money_state').then((response) => { |
||||
this.moneyStateOptions = response.data; |
||||
}); |
||||
}, |
||||
methods: { |
||||
resetQuery() { |
||||
this.searchForm = { |
||||
checkState: undefined, |
||||
state: undefined, |
||||
moneyState: undefined, |
||||
name: undefined, |
||||
dealDate: [], |
||||
signSchool: undefined, |
||||
followUser2: undefined |
||||
}; |
||||
}, |
||||
getEmployee() { |
||||
// getEmployee({ coach: false }).then((resp) => { |
||||
// if (resp.code == 200) { |
||||
// this.userOptions = resp.data |
||||
// } |
||||
// }) |
||||
}, |
||||
getSchools() { |
||||
// getSchools().then((resp) => { |
||||
// this.schoolOptions = resp.data |
||||
// }) |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
</style> |
@ -0,0 +1,90 @@ |
||||
<!-- 成交登记 --> |
||||
<template> |
||||
<div class="p20"> |
||||
<SearchForm v-show="showSearch" ref="SearchForm" @search="_getTableList" /> |
||||
<el-row :gutter="10" class="mb8"> |
||||
<el-col :span="1.5"> |
||||
<el-button type="primary" plain icon="el-icon-plus" @click="handleAdd">新增</el-button> |
||||
<el-button type="warning" icon="el-icon-download" @click="handleExport">导出</el-button> |
||||
</el-col> |
||||
<right-toolbar :show-search.sync="showSearch" :columns="columns" @queryTable="_getTableList" /> |
||||
</el-row> |
||||
<el-table v-loading="loading" :data="tableList"> |
||||
<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" min-width="100" :prop="item.prop" /> |
||||
</template> |
||||
<el-table-column label="操作" fixed="right" align="center" width="160"> |
||||
<template slot-scope="scope"> |
||||
<el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">修改</el-button> |
||||
<el-button type="text" @click="handleCheck(scope.row)">审核</el-button> |
||||
<el-button type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
|
||||
<pagination :total="total" :page.sync="searchForm.pageNum" :limit.sync="searchForm.pageSize" @pagination="_getTableList" /> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import SearchForm from './components/SearchForm.vue'; |
||||
import { defaultColumns } from './columns.js'; |
||||
export default { |
||||
components: { |
||||
SearchForm |
||||
}, |
||||
data() { |
||||
return { |
||||
// 遮罩层 |
||||
loading: false, |
||||
// 显示搜索条件 |
||||
showSearch: true, |
||||
searchForm: { |
||||
pageNum: 1, |
||||
pageSize: 20 |
||||
}, |
||||
tableList: [], |
||||
total: 0, |
||||
columns: [] |
||||
}; |
||||
}, |
||||
created() { |
||||
const str = localStorage.getItem(`${this.$route.name}-table-columns`); |
||||
this.columns = str ? JSON.parse(str) : defaultColumns; |
||||
// this._getTableList(); |
||||
}, |
||||
methods: { |
||||
async _getTableList() { |
||||
const tempForm = this.$refs.SearchForm?.searchForm || {}; |
||||
const params = { ...this.searchForm, ...tempForm }; |
||||
console.log(params); |
||||
// api.list(params) |
||||
this.tableList = []; |
||||
for (let i = 0; i < 20; i++) { |
||||
this.tableList.push({ name: `数据${i + 1}` }); |
||||
} |
||||
}, |
||||
handleExport() { |
||||
const tempForm = this.$refs.SearchForm?.searchForm || {}; |
||||
const params = { ...this.searchForm, ...tempForm }; |
||||
this.$confirm('是否确认导出所有成交记录项?', '警告', { |
||||
confirmButtonText: '确定', |
||||
cancelButtonText: '取消', |
||||
type: 'warning' |
||||
}) |
||||
.then((resp) => { |
||||
// return exportData(params) |
||||
}) |
||||
.then((response) => { |
||||
// this.download(response.msg); |
||||
}) |
||||
.catch(function () {}); |
||||
}, |
||||
handleAdd() {} |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
</style> |
Loading…
Reference in new issue