123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678 |
- <template>
- <div class="mis-pageBox">
-
- <el-container>
- <el-header height="40px">
- <el-row>
- <el-col :span="18">
- <div style="display:flex;align-items:center;">
- 所属公司:<cpsCompany v-model="queryParams.companyBranch" size="small" style="width:150px"
- @change="changeGs">
- </cpsCompany>
- 所属片区:<cpsSelect v-model="queryParams.mrArea" size="small" skey="cbpq"
- :params="{ company_branch: queryParams.companyBranch }" isDisabled="all"
- :refresh="cbpqRefresh" @change="changeCbpq" style="width:150px">
- </cpsSelect>
- 所属表册:<cpsSelect v-model="queryParams.mrBook" size="small" skey="cbb"
- :params="{ company_branch: queryParams.companyBranch, mr_area: queryParams.mrArea }"
- isDisabled="all" :refresh="cbbRefresh" :labelGroup=true :filterable=true
- style="width:150px"></cpsSelect>
- 关 键 字:<el-input v-model="queryParams.searchText" size="small" style="width:150px;"
- placeholder="输入关键字" clearable @keyup.enter.native="clickQuery()" />
-
- <el-dropdown split-button type="primary" size="small" placement="top" @click="clickQuery()"
- @command="advancedQuery">
- <i class="el-icon-search"></i> 查询
- <el-dropdown-menu slot="dropdown">
- <el-dropdown-item command="advancedQuery">高级搜索</el-dropdown-item>
- </el-dropdown-menu>
- </el-dropdown>
- </div>
- </el-col>
- <el-col :span="6" class="list-opCol">
- <el-button type="success" size="small" icon="el-icon-plus" @click="clickAdd()">添加</el-button>
- <el-button type="warning" size="small" icon="el-icon-edit" @click="clickModify()"
- :disabled="disabledModify">修改</el-button>
- <el-button type="danger" size="small" icon="el-icon-delete" @click="clickDelete()"
- :disabled="disabledDelete">作废</el-button>
- <el-popover placement="top-start" title="提示" width="200" trigger="hover"
- content="数据量大时等待时间可能较长,请您耐心等待!">
- <el-button slot="reference" type="info" size="small" icon="el-icon-document"
- @click="clickExport()">导出</el-button>
- </el-popover>
-
- </el-col>
- </el-row>
- </el-header>
- <el-main>
- <tfTable :table-data="dataList" :column="columns" :for-id="true" :pagination="true"
- :currentpage="pageInfo.current" :pagesize="pageInfo.size" :total="pageInfo.tableTotal" :border="true"
- :multiple="false" :fixed="true" :isdelete="false" :is-select="false" :stripe="true"
- @handleCurrentChange="handleCurrentChange" @handleSizeChange="handleSizeChange"
- @handleSelectionChange="handleSelectionChange" @rowDblclick="showDetail" @detail="showDetail"
- @sortChange="onCustomerSortChange" @rowClick="handleRowClick" />
- </el-main>
- </el-container>
-
- <el-dialog v-if="dialogVisible" v-dialogDrag :title="dialogTitle" top="0vh" :visible.sync="dialogVisible"
- width="70%" height="100%">
- <tfDetail :detailData="detailData" :editState="editState" ref="dForm" />
- <template slot="footer">
- <el-button type="primary" icon="el-icon-check" @click="clickSave()" v-if="!editState">确 定</el-button>
- <el-button icon="el-icon-close" @click="clickCancel()">关 闭</el-button>
- </template>
- </el-dialog>
-
- <el-drawer title="高级搜索" :visible.sync="drawerDialog" direction="ttb" size="350px" ref="drawer">
- <el-container>
- <el-main>
- <el-row type="flex" style="padding:8px 12px;">
-
- <el-col :span="16" style="border-left:1px solid whitesmoke;">
- <el-tag>筛选条件</el-tag>
- <div class="filterDiv">
- <div style="margin:5px;">
- 所属公司:<cpsCompany v-model="queryParams.companyBranch" size="small" style="width:180px"
- @change="changeGs">
- </cpsCompany>
- 所属片区:<cpsSelect v-model="queryParams.mrArea" size="small" skey="cbpq"
- :params="{ company_branch: queryParams.companyBranch }" isDisabled="all"
- :refresh="cbpqRefresh" @change="changeCbpq" style="width:180px">
- </cpsSelect>
- 所属表册:<cpsSelect v-model="queryParams.mrBook" size="small" skey="cbb"
- :params="{ company_branch: queryParams.companyBranch, mr_area: queryParams.mrArea }"
- isDisabled="all" :refresh="cbbRefresh" :labelGroup=true :filterable=true
- style="width:180px"></cpsSelect>
- </div>
- <div style="margin:5px;">
- 用户状态:<cpsSelect v-model="queryParams.customerState" size="small" skey="yhzt"
- style="width:180px;" isDisabled="all">
- </cpsSelect>
- 用水性质:<cpsSelect v-model="queryParams.priceCode" size="small" skey="sj"
- style="width:180px;">
- </cpsSelect>
- 表具类型:<cpsSelect v-model="queryParams.priceCode" size="small" skey="sblb"
- style="width:180px;">
- </cpsSelect>
- </div>
- <div style="margin:5px;">
- 关 键 字 :<el-input v-model="queryParams.searchText" size="small"
- style="width:440px;" placeholder="输入编号、姓名、地址、电话" clearable />
- </div>
- <div style="margin:5px;">
- 建档日期:<el-date-picker v-model="dprCreatedDate" type="daterange" align="right"
- unlink-panels range-separator="至" start-placeholder="建档开始日期"
- end-placeholder="建档结束日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions"
- size="small" style="width:438px;" @change="() => {
- if (this.dprCreatedDate && this.dprCreatedDate.length > 0) {
- this.queryParams.createdDatetime_start = this.dprCreatedDate[0];
- this.queryParams.createdDatetime_end = this.dprCreatedDate[1];
- } else {
- this.queryParams.createdDatetime_start = undefined;
- this.queryParams.createdDatetime_end = undefined;
- }
- }">
- </el-date-picker>
- </div>
- </div>
- </el-col>
-
- <el-col :span="8" style="border-left:1px solid whitesmoke;">
- <el-tag>分类匹配</el-tag>
- <div class="filterDiv">
- <div style="margin:5px;">
- 用户编号:<el-input v-model="queryParams.searchText" placeholder="请输入" size="small"
- style="width:200px;"></el-input>
- </div>
- <div style="margin:5px;">
- 用户姓名:<el-input v-model="queryParams.searchText" placeholder="请输入" size="small"
- style="width:200px;"></el-input>
- </div>
- <div style="margin:5px;">
- 用户地址:<el-input v-model="queryParams.searchText" placeholder="请输入" size="small"
- style="width:200px;"></el-input>
- </div>
- <div style="margin:5px;">
- 联系电话:<el-input v-model="queryParams.searchText" placeholder="请输入" size="small"
- style="width:200px;"></el-input>
- </div>
- </div>
- </el-col>
- </el-row>
- </el-main>
- <el-footer style="text-align:right;padding-top:8px;">
- <el-button type="primary" icon="el-icon-check" @click="() => {
- this.pageInfo.current = 1
- this.bindList(true)
- }">确 定</el-button>
- <el-button icon="el-icon-close" @click="$refs.drawer.closeDrawer()">关 闭</el-button>
- </el-footer>
- </el-container>
- </el-drawer>
- </div>
- </template>
-
- <script>
- import '@/views/mis/common/assets/styles/misStyle.scss'
- import { DateHelper, FileHelper } from '@/views/mis/common/assets/scripts/utils.js'
- import { Customer } from '@/views/mis/common/api/customerManagement.js'
- import tfTable from '@/components/TableAuto/index.vue'
- import cpsSelect from '@/views/mis/common/components/cps-select.vue'
- import cpsCompany from '@/views/mis/common/components/cps-company.vue'
- import tfDetail from './customer-form.vue'
- export default {
- components: { cpsSelect, cpsCompany, tfTable, tfDetail },
- props: ['data'],
- data() {
- return {
-
- cbpqRefresh: false,
- cbbRefresh: false,
- queryParams: {
- companyBranch: undefined,
- mrArea: undefined,
- mrBook: undefined,
- searchText: undefined,
-
- customerState: undefined,
- priceCode: undefined,
- meterType: undefined,
- createdDatetime_start: undefined,
- createdDatetime_end: undefined
- },
- disabledModify: true,
- disabledDelete: true,
- operationType: '',
- pageInfo: { current: 1, size: 20, tableTotal: 1, 'orders[0].asc': 'true', 'orders[0].column': 'customerNo' },
- columns: [
- {
- label: '所属片区',
- prop: 'mrAreaName',
- align: 'left'
- },
- {
- label: '所属表册',
- prop: 'mrBookName',
- align: 'left'
- },
- {
- label: '用户编号',
- prop: 'customerNo',
- align: 'center',
- sortable: true
- },
- {
- label: '用户姓名',
- prop: 'customerName',
- align: 'center'
- },
- {
- label: '用户地址',
- prop: 'customerAddress',
- align: 'left',
- sortable: true
- },
- {
- label: '联系电话',
- prop: 'customerPhone',
- align: 'center'
- },
- {
- label: '申请日期',
- prop: 'applyDatetime',
- align: 'center',
- sortable: true,
- formatter: function (row, column, value, index) {
- return DateHelper.formatterDate(value);
- }
- },
- {
- label: '建档日期',
- prop: 'createdDatetime',
- align: 'center',
- sortable: true,
- formatter: function (row, column, value, index) {
- return DateHelper.formatterDate(value);
- }
- },
- {
- label: '建档人员',
- prop: 'createdOname',
- align: 'center'
- },
- {
- label: '用户状态',
- prop: 'customerState',
- align: 'center',
- formatter: function (row, column, value, index) {
- if (value == '作废用户') {
-
- return '<div><span class="el-tag el-tag--danger el-tag--light">' + value + '</span></div>'
- }
- return value;
- }
- }
- ],
- dataList: [],
- selectionsData: [],
- selectedRow: {},
-
- dialogTitle: '新增',
- editState: false,
- dialogVisible: false,
- detailData: {
- daCustomer: {
- companyBranch: [],
- mrArea: undefined,
- mrBook: undefined,
- customerNo: undefined,
- customerName: undefined,
- customerAddress: undefined,
- customerPhone: undefined,
- customerState: undefined,
- certType: undefined,
- certNo: undefined,
- applyDatetime: undefined,
- population: undefined,
- yearCumQuantity: undefined,
- month_cum_quantity: undefined,
- createdDatetime: undefined,
- activateState: undefined,
- activateDatetime: undefined,
- payMode: undefined,
- contractState: undefined,
- contractDatetime: undefined,
- contractNo: undefined,
- homePhone: undefined,
- email: undefined,
- customerNameShort: undefined,
- sex: undefined,
- customerType: undefined,
- regionCode: undefined,
- remark: undefined,
- createdSerialNo: undefined,
- operatorCode: undefined,
- operatorName: undefined,
- operatorDatetime: undefined,
- createdOcode: undefined,
- createdOname: undefined
- },
- daMeter: {
- meterState: undefined,
- mrFrequency: undefined,
- priceCode: undefined,
- meterType: undefined,
- meterFactory: undefined,
- meterFactoryDatetime: undefined,
- meterModel: undefined,
- meterCaliber: undefined,
- meterNo: undefined,
- meterRange: undefined,
- meterPosition: undefined,
- meterBaseReading: undefined,
- meterCardNo: undefined,
- meterCardId: undefined,
- sewageFeeFlag: undefined,
- garbageFeeFlag: undefined,
- garbageFeeMode: undefined,
- garbageFeePrice: undefined,
- icState: undefined,
- icActivateDatetime: undefined,
- icId: undefined
- }
- },
-
- drawerDialog: false,
- dprCreatedDate: [],
- pickerOptions: {
- shortcuts: [{
- text: '最近一周',
- onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
- picker.$emit('pick', [start, end]);
- }
- }, {
- text: '最近一个月',
- onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
- picker.$emit('pick', [start, end]);
- }
- }, {
- text: '最近三个月',
- onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
- picker.$emit('pick', [start, end]);
- }
- }]
- }
- }
- },
- watch: {
- selectedRow(value) {
- this.disabledModify = value == null;
- this.disabledDelete = value == null;
- },
- dialogVisible(newVal, oldVal) {
- if (!newVal) {
- this.resetDetailData()
- }
- }
- },
- created() {
- },
- mounted() {
- this.bindList();
- },
- methods: {
-
-
- bindList(sfgjcx = false) {
-
- let params = Object.assign({}, this.pageInfo, this.queryParams);
- if (!sfgjcx) {
- params.customerState = undefined;
- params.priceCode = undefined;
- params.meterType = undefined;
- params.createdDatetime_start = undefined;
- params.createdDatetime_end = undefined;
- }
- this.dataList = []
- this.selectedRow = null;
- Customer.query(params).then((res) => {
- if (res.code !== 1) {
- this.$message.error('查询失败!')
- return
- }
-
- this.pageInfo.tableTotal = res.result.total
- this.dataList = res.result.records
- }).catch((ex) => {
- this.$message.error("查询失败!");
- }).finally(() => {
- });
- },
- resetDetailData() {
-
- for (var key in this.detailData) {
- if (this.detailData[key].constructor === Object) {
- for (var key2 in this.detailData[key]) {
- this.detailData[key][key2] = undefined;
- }
- } else {
- this.detailData[key] = undefined
- }
- }
- },
- save() {
- let params = Object.assign({}, this.detailData);
- params.daCustomer.operatorCode = this.$store.state.user.username;
- params.daCustomer.operatorName = this.$store.state.user.realName;
- params.daCustomer.operatorDatetime = DateHelper.getNowFormatDate(true);
- params.daCustomer.createdOcode = params.daCustomer.operatorCode;
- params.daCustomer.createdOname = params.daCustomer.operatorName;
-
- if (params.daCustomer.activateState == '0') params.daCustomer.activateDatetime = undefined;
- if (params.daCustomer.contractState == '0') {
- params.daCustomer.contractNo = '';
- params.daCustomer.contractDatetime = undefined;
- }
- if (params.daMeter.garbageFeeFlag == '0') {
- params.daMeter.garbageFeeMode = '';
- params.daMeter.garbageFeePrice = 0.00;
- }
- if (params.daMeter.icState == '0') {
- params.daMeter.icId = undefined;
- params.daMeter.icActivateDatetime = undefined;
- }
-
- Customer.cmdCustomerAndMeter(params, { operationType: this.operationType }).then(res => {
- if (res.code == 1) {
- this.bindList();
- this.$message.success("保存成功!");
- this.dialogVisible = false;
- }
- });
- },
- delete() {
- let params = {
- daCustomer: {
- customerNo: this.selectionsData[0].customerNo,
- customerState: '4'
- },
- daMeter: {
- meterCardId: this.selectionsData[0].meterCardId
- }
- }
- console.log(JSON.stringify(params));
- Customer.cmdCustomerAndMeter(params, { operationType: this.operationType }).then(res => {
- if (res.code == 1) {
- this.bindList();
- this.$message.success("作废成功!");
- }
- })
- },
- async export() {
-
- let params = Object.assign({}, this.queryParams);
- await Customer.exportFile(params).then((res) => {
- FileHelper.exportExcel(res, '用户档案信息.xlsx');
- }).catch((ex) => {
- this.$message.error("导出失败!");
- }).finally(() => {
- });
- },
-
- showDetail(data) {
- this.selectedRow = data;
- var cbkh = '', cbkhList = this.selectedRow.cbkhList.split(',')
- if (cbkhList.length == 1) {
- cbkh = cbkhList[0]
- } else if (cbkhList.length > 1) {
- cbkh = cbkhList[0]
- this.$message('该用户存在多表,请在“水表档案管理”中进行多表查看。');
- }
-
- Customer.queryCustomer(this.selectedRow.customerNo).then((res) => {
- if (res.code == 1) {
- this.detailData.daCustomer = res.result
- this.detailData.daCustomer.mrArea = this.detailData.daCustomer.mrArea.toString();
- this.detailData.daCustomer.mrBook = this.detailData.daCustomer.mrBook.toString();
-
- Customer.queryMeter(this.selectedRow.customerNo, this.selectedRow.customerNo + cbkh).then((res) => {
- if (res.code == 1) {
- this.detailData.daMeter = res.result
- }
- this.operationType = 'saveUpdate';
- this.dialogTitle = "查看";
- this.editState = true;
- this.dialogVisible = true;
- }).catch((ex) => {
- this.$message.error("查询表具信息失败!");
- });
- }
- }).catch((ex) => {
- this.$message.error("查询用户信息失败!");
- });
- },
-
- changeGs(value) {
- this.queryParams.companyBranch = value;
- this.cbpqRefresh = !this.cbpqRefresh;
- this.queryParams.mrArea = '';
- this.changeCbpq(this.queryParams.mrArea);
- },
- changeCbpq(value) {
- this.cbbRefresh = !this.cbbRefresh;
- this.queryParams.mrBook = '';
- },
-
- clickQuery() {
- this.pageInfo.current = 1
- this.bindList()
- },
-
- clickAdd() {
- this.detailData.daCustomer.certType = "1";
- this.detailData.daCustomer.population = 3;
- this.detailData.daCustomer.yearCumQuantity = 0;
- this.detailData.daMeter.meterState = "1";
- this.detailData.daMeter.mrFrequency = "1";
- this.detailData.daMeter.meterBaseReading = 0;
- this.detailData.daMeter.garbageFeePrice = 0.00;
- this.detailData.daCustomer.customerType = '1';
- this.detailData.daCustomer.operatorName = this.$store.state.user.realName
- this.detailData.daCustomer.operatorDatetime = DateHelper.getNowFormatDate(true);
- this.operationType = 'save';
- this.dialogTitle = "添加";
- this.editState = false;
- this.dialogVisible = true;
- },
-
- clickModify() {
-
- if (this.selectedRow.customerState == '作废用户') {
- this.$message({
- message: '作废用户不能修改!',
- type: 'warning'
- });
- return;
- }
- var cbkhList = this.selectedRow.cbkhList.split(',')
- if (cbkhList.length == 1) {
-
- Customer.queryCustomer(this.selectedRow.customerNo).then((res) => {
- if (res.code == 1) {
- this.detailData.daCustomer = res.result
- this.detailData.daCustomer.mrArea = this.detailData.daCustomer.mrArea.toString();
- this.detailData.daCustomer.mrBook = this.detailData.daCustomer.mrBook.toString();
-
- Customer.queryMeter(this.selectedRow.customerNo, this.selectedRow.customerNo + cbkhList[0]).then((res) => {
- if (res.code == 1) {
- this.detailData.daMeter = res.result
- this.operationType = 'saveUpdate';
- this.dialogTitle = "修改";
- this.editState = false;
- this.dialogVisible = true;
- }
- }).catch((ex) => {
- this.$message.error("查询表具信息失败!");
- });
- }
- }).catch((ex) => {
- this.$message.error("查询用户信息失败!");
- });
- } else if (cbkhList.length > 1) {
- this.$message('该用户存在多表,请在“水表档案管理”中进行修改。');
- }
- },
-
- clickDelete() {
- this.$confirm('确定作废吗?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- this.operationType = 'saveUpdate'
- this.delete();
- })
- },
- clickExport() {
- this.export();
- },
- clickCancel() {
- this.dialogVisible = false
- },
- clickSave() {
- let flag = this.$refs.dForm.validate();
- if (flag) {
-
-
- this.save();
- }
- },
-
-
- handleCurrentChange(current) {
- this.pageInfo.current = current
- this.bindList()
- },
-
- handleSizeChange(size) {
- this.pageInfo.size = size
- this.bindList()
- },
-
- handleSelectionChange(rows) {
- this.selectionsData = rows
- },
-
- onCustomerSortChange(arrOrder) {
- this.pageInfo['orders[0].asc'] = arrOrder[0];
- this.pageInfo['orders[0].column'] = arrOrder[1];
- this.bindList();
- },
- handleRowClick(row) {
- this.selectedRow = row
- },
-
- advancedQuery(e) {
- this.drawerDialog = true;
- }
- }
- }
- </script>
- <style lang="scss" scoped></style>
-
|