Browse Source

修复客户信息管理bug

dev
qb 3 weeks ago
parent
commit
4d12f5663d
  1. 435
      src/views/basicdata/brand/basicClient.vue

435
src/views/basicdata/brand/basicClient.vue

@ -5,17 +5,37 @@
<!-- 查询模块 -->
<el-form :inline="true" :model="query" class="header_search">
<el-form-item label="客户名称:">
<el-input v-model.trim="query.clientName" placeholder="请输入客户名称"></el-input>
<el-input
v-model.trim="query.clientName"
clearable
placeholder="请输入客户名称"
></el-input>
</el-form-item>
<el-form-item label="客户类型:">
<el-select v-model="query.clientType" class="m-2" placeholder="请选择客户端类型">
<el-option v-for="item in clientType" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
<el-select
v-model="query.clientType"
clearable
class="m-2"
placeholder="请选择客户端类型"
>
<el-option
v-for="item in clientType"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey"
/>
</el-select>
</el-form-item>
<el-form-item label="地址:">
<el-cascader :options="optioner" v-model="query.bladeRegionProvinceId" :props="{ checkStrictly: true }">
<el-cascader
filterable
:options="optioner"
v-model="query.bladeRegionProvinceId"
:props="{ checkStrictly: true }"
clearable
>
<template #default="{ node, data }">
<span>{{ data.label }}</span>
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
@ -24,9 +44,19 @@
</el-form-item>
<el-form-item label="合同开始时间:" class="el-times">
<el-date-picker v-model="dataShi" type="daterange" unlink-panels range-separator=""
start-placeholder="开始时间" end-placeholder="结束时间" :shortcuts="shortcuts" :size="'default'"
format="YYYY/MM/DD" value-format="YYYY-MM-DD HH:mm:ss" />
<el-date-picker
v-model="dataShi"
type="daterange"
unlink-panels
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
:shortcuts="shortcuts"
:size="'default'"
format="YYYY/MM/DD"
value-format="YYYY-MM-DD HH:mm:ss"
clearable
/>
</el-form-item>
<!-- <el-form-item label="合同结束时间:">-->
<!-- <el-input v-model="query.contractEntTime" placeholder="请输入合同结束时间"></el-input>-->
@ -43,7 +73,9 @@
<!-- 头部左侧按钮模块 -->
<div class="avue-crud__left">
<el-button type="primary" icon="el-icon-plus" @click="handleAdd"> </el-button>
<el-button type="danger" icon="el-icon-delete" @click="handleDelete" plain> </el-button>
<el-button type="danger" icon="el-icon-delete" @click="handleDelete" plain
> </el-button
>
<el-button type="danger" icon="Upload" @click="handleImport"> </el-button>
</div>
<!-- 头部右侧按钮模块 -->
@ -54,12 +86,25 @@
</div>
</div>
</el-row>
<tablecmt class="tableNode" :columnList="columnList" :tableData="data" :loading="loading" @inputTxt="inputsc"
@timeCheck="timesc" @btnCheck="btnsc" @selectCheck="selectsc" @selection="selectionChange"
@makeCargo="makeCargo">
<tablecmt
class="tableNode"
:columnList="columnList"
:tableData="data"
:loading="loading"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
@makeCargo="makeCargo"
>
<template #default="slotProps">
<el-text type="primary" text icon="el-icon-view" @click="handleView(slotProps.scope.row)">查看</el-text>
<el-text type="primary" text icon="el-icon-edit" @click="handleEdit(slotProps.scope.row)">编辑</el-text>
<el-text type="primary" text icon="el-icon-view" @click="handleView(slotProps.scope.row)"
>查看</el-text
>
<el-text type="primary" text icon="el-icon-edit" @click="handleEdit(slotProps.scope.row)"
>编辑</el-text
>
<el-text type="primary" text icon="el-icon-delete" @click="rowDel(slotProps.scope.row)">
删除
</el-text>
@ -105,13 +150,27 @@
<div class="avue-crud__pagination flex-c-sb" style="width: 100%">
<div style="font-size: 14px">勾选数量: {{ selectionList.length }}</div>
<!-- 分页模块 -->
<el-pagination align="right" background @size-change="sizeChange" @current-change="currentChange"
:current-page="page.currentPage" :page-sizes="[30, 50, 80, 120, 5000]" :page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper" :total="page.total">
<el-pagination
align="right"
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="page.currentPage"
:page-sizes="[30, 50, 80, 120, 5000]"
:page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="page.total"
>
</el-pagination>
</div>
<el-dialog :modal-append-to-body="false" :append-to-body="false" title="客户导入" append-to-body v-model="excelBox"
width="555px">
<el-dialog
:modal-append-to-body="false"
:append-to-body="false"
title="客户导入"
append-to-body
v-model="excelBox"
width="555px"
>
<!-- <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter">
<template #excelTemplate>
<a
@ -143,25 +202,45 @@
</div>
<div v-loading="loadingObj.UploadLoadong">
<el-upload class="upload-demo" drag :headers="headers"
action="/api/logpm-basicdata/basicdataClient/import-basicDataClient" :before-upload="handleBeforeUpload"
:on-success="handleSuccess" :on-error="handleClose" multiple>
<el-upload
class="upload-demo"
drag
:headers="headers"
action="/api/logpm-basicdata/basicdataClient/import-basicDataClient"
:before-upload="handleBeforeUpload"
:on-success="handleSuccess"
:on-error="handleClose"
multiple
>
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
<div class="el-upload__text">拖拽文件或 <em>点击上传</em></div>
</el-upload>
</div>
</el-dialog>
<el-dialog :modal-append-to-body="false" :append-to-body="false" title="文件校验" append-to-body
v-model="Fileverification" width="555px">
<el-dialog
:modal-append-to-body="false"
:append-to-body="false"
title="文件校验"
append-to-body
v-model="Fileverification"
width="555px"
>
<div>
<el-divider content-position="left">文件校验</el-divider>
</div>
<div v-loading="FileverificationLoadong">
<el-upload class="upload-demo" drag :headers="headers"
action="/api/logpm-basicdata/basicdataClient/checkImportBasicDataClient" :before-upload="handleBeforeUpload"
:on-success="handleSuccess" :on-error="handleClose" multiple>
<el-upload
class="upload-demo"
drag
:headers="headers"
action="/api/logpm-basicdata/basicdataClient/checkImportBasicDataClient"
:before-upload="handleBeforeUpload"
:on-success="handleSuccess"
:on-error="handleClose"
multiple
>
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
<div class="el-upload__text">拖拽文件或 <em>点击上传</em></div>
</el-upload>
@ -169,8 +248,19 @@
</el-dialog>
<!-- 表单模块 -->
<el-dialog destroy-on-close :modal-append-to-body="false" :append-to-body="false" :title="title" v-model="box"
width="40%" align-center :before-close="beforeClose" :close-on-click-modal="false" append-to-body draggable>
<el-dialog
destroy-on-close
:modal-append-to-body="false"
:append-to-body="false"
:title="title"
v-model="box"
width="40%"
align-center
:before-close="beforeClose"
:close-on-click-modal="false"
append-to-body
draggable
>
<div v-loading="loadingObj.submitLoading">
<el-form :disabled="view" ref="form" :model="form" :rules="rules" label-width="120px">
<!-- 表单字段 -->
@ -178,41 +268,91 @@
<!-- :validate-method="validateInput" -->
<!-- :disabled="viewClientEntd" -->
<el-input v-model="form.clientCode" placeholder="请输入客户编码" style="width: 100%" disabled />
<el-input
v-model="form.clientCode"
placeholder="请输入客户编码"
style="width: 100%"
disabled
/>
</el-form-item>
<el-form-item label="客户名称" prop="clientName">
<el-input v-model.trim="form.clientName" placeholder="请输入客户名称" style="width: 100%" />
<el-input
v-model.trim="form.clientName"
placeholder="请输入客户名称"
style="width: 100%"
/>
</el-form-item>
<el-form-item label="客户类型" prop="clientType">
<el-select v-model="form.clientType" class="m-2" placeholder="请选择客户端类型" style="width: 100%">
<el-option v-for="item in clientType" :key="item.dictKey" :label="item.dictValue"
:value="item.dictKey" />
<el-select
v-model="form.clientType"
class="m-2"
placeholder="请选择客户端类型"
style="width: 100%"
>
<el-option
v-for="item in clientType"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey"
/>
</el-select>
</el-form-item>
<el-form-item label="结算对象类型" prop="cleanObjType">
<el-select v-model="form.cleanObjType" class="m-2" placeholder="请选择客户端类型" style="width: 100%">
<el-option v-for="item in Settlementobjecttype" :key="item.dictKey" :label="item.dictValue"
:value="item.dictKey" />
<el-select
v-model="form.cleanObjType"
class="m-2"
placeholder="请选择客户端类型"
style="width: 100%"
>
<el-option
v-for="item in Settlementobjecttype"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey"
/>
</el-select>
</el-form-item>
<el-form-item label="客户主体" v-if="form.cleanObjType !=3">
<el-select v-model="form.mainId" class="m-2" placeholder="请选择客户主体" style="width: 100%" filterable>
<el-option v-for="item in dictList" :key="item.id" :label="item.name" :value="item.id" />
<el-form-item label="客户主体" v-if="form.cleanObjType != 3">
<el-select
v-model="form.mainId"
class="m-2"
placeholder="请选择客户主体"
style="width: 100%"
filterable
>
<el-option
v-for="item in dictList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="服务类型" prop="typeServiceList">
<el-select v-model="form.typeServiceList" multiple placeholder="请选择" style="width: 100%"
@change="coverCharge">
<el-option v-for="item in freightType" :key="item.dictKey" :label="item.dictValue"
:value="item.dictKey">
<el-select
v-model="form.typeServiceList"
multiple
placeholder="请选择"
style="width: 100%"
@change="coverCharge"
>
<el-option
v-for="item in freightType"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="配送类型" prop="businessType" v-if="distriType">
<el-radio-group v-model="form.businessType" class="ml-4" v-for="item in distributionType">
<el-radio-group
v-model="form.businessType"
class="ml-4"
v-for="item in distributionType"
>
<el-radio :label="item.dictKey" size="large" style="margin-right: 25px">{{
item.dictValue
}}</el-radio>
@ -220,15 +360,29 @@
</el-form-item>
<el-form-item label="联系人" prop="linkman" v-if="viewEntd">
<el-input v-model.trim="form.linkman" placeholder="请输入联系人" style="width: 100%" />
<el-input
v-model.trim="form.linkman"
placeholder="请输入联系人"
style="width: 100%"
/>
</el-form-item>
<el-form-item label="联系电话" prop="phone" v-if="viewEntd">
<el-input v-model.trim="form.phone" placeholder="请输入联系电话" style="width: 100%" />
<el-input
v-model.trim="form.phone"
placeholder="请输入联系电话"
style="width: 100%"
/>
</el-form-item>
<el-form-item label="地址" prop="bladeRegionProvinceId">
<el-cascader :options="optioner" style="width: 100%" v-model="form.bladeRegionProvinceId" :props="{
checkStrictly: true,
}" filterable>
<el-cascader
:options="optioner"
style="width: 100%"
v-model="form.bladeRegionProvinceId"
:props="{
checkStrictly: true,
}"
filterable
>
<template #default="{ node, data }">
<span>{{ data.label }}</span>
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
@ -236,43 +390,80 @@
</el-cascader>
</el-form-item>
<el-form-item label="详细地址">
<el-input v-model.trim="form.detailedly" placeholder="请填写详细地址" style="width: 100%" />
<el-input
v-model.trim="form.detailedly"
placeholder="请填写详细地址"
style="width: 100%"
/>
</el-form-item>
<el-form-item label="默认付款方式" prop="defaultPaymentMethods">
<el-select v-model="form.defaultPaymentMethods" placeholder="请选择默认付款方式">
<el-option v-for="item in defaultPaymentMethodsOptions" :key="item.value" :label="item.dictValue"
:value="item.dictKey" />
<el-option
v-for="item in defaultPaymentMethodsOptions"
:key="item.value"
:label="item.dictValue"
:value="item.dictKey"
/>
</el-select>
</el-form-item>
<el-form-item label="合同附件" prop="leaseAccessories" style="width: 100%">
<el-upload v-model:file-list="fileList" class="upload-demo" :action="action" :headers="headers" multiple
:on-preview="handlePreview" :on-success="(response, file, fileList) => {
uploadSuccess(fileList);
}
" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="beforeUploadFn" :limit="3"
:on-exceed="handleExceed">
<el-upload
v-model:file-list="fileList"
class="upload-demo"
:action="action"
:headers="headers"
multiple
:on-preview="handlePreview"
:on-success="
(response, file, fileList) => {
uploadSuccess(fileList);
}
"
:on-remove="handleRemove"
:before-remove="beforeRemove"
:before-upload="beforeUploadFn"
:limit="3"
:on-exceed="handleExceed"
>
<el-button type="Primary" icon="Position">上传</el-button>
<template #tip>
<div class="el-upload__tip">大小不超过500KB的jpg/png文件</div>
</template>
</el-upload>
<el-image-viewer v-if="showImgViewer" :url-list="imgPreviewUrl" @close="handleCo" :z-index="300"
fit="cover" />
<el-image-viewer
v-if="showImgViewer"
:url-list="imgPreviewUrl"
@close="handleCo"
:z-index="300"
fit="cover"
/>
</el-form-item>
<el-form-item label="合同开始时间" prop="contractStartTime" label-width="120px">
<el-date-picker v-model="form.contractStartTime" type="date" placeholder="选择时间" format="YYYY/MM/DD"
value-format="YYYY-MM-DD" />
<el-date-picker
v-model="form.contractStartTime"
type="date"
placeholder="选择时间"
format="YYYY/MM/DD"
value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item label="合同结束时间" prop="contractEntTime" label-width="120px">
<el-date-picker v-model="form.contractEntTime" type="date" placeholder="选择时间" format="YYYY/MM/DD"
value-format="YYYY-MM-DD" />
<el-date-picker
v-model="form.contractEntTime"
type="date"
placeholder="选择时间"
format="YYYY/MM/DD"
value-format="YYYY-MM-DD"
/>
</el-form-item>
</el-form>
<!-- 表单按钮 -->
<div v-if="!view" class="flex-c-c">
<el-button type="primary" icon="el-icon-circle-check" @click="handleSubmit('form')"> </el-button>
<el-button type="primary" icon="el-icon-circle-check" @click="handleSubmit('form')"
> </el-button
>
<el-button icon="el-icon-circle-close" @click="box = false"> </el-button>
</div>
</div>
@ -281,16 +472,36 @@
<!-- 账号绑定弹出框页面
1显示登录账号
2显示账号的名称 -->
<el-dialog :modal-append-to-body="false" :append-to-body="false" title="开通账号" v-model="openAcountStatus">
<el-form :disabled="view" ref="openAcountorm" :model="openAcountform" :rules="openAcountrules"
label-width="120px">
<el-dialog
:modal-append-to-body="false"
:append-to-body="false"
title="开通账号"
v-model="openAcountStatus"
>
<el-form
:disabled="view"
ref="openAcountorm"
:model="openAcountform"
:rules="openAcountrules"
label-width="120px"
>
<el-form-item label="姓名" prop="linkman">
<el-input v-model="openAcountform.name" placeholder="请输入联系人" maxlength="20" style="width: 100%" />
<el-input
v-model="openAcountform.name"
placeholder="请输入联系人"
maxlength="20"
style="width: 100%"
/>
</el-form-item>
<el-form-item label="账号" prop="linkman">
<el-input v-model="openAcountform.phone" placeholder="请输入电话" type="number" maxlength="11"
style="width: 100%" />
<el-input
v-model="openAcountform.phone"
placeholder="请输入电话"
type="number"
maxlength="11"
style="width: 100%"
/>
</el-form-item>
<el-form-item label="密码">
<span style="color: red">默认系统初始化密码</span>
@ -299,14 +510,24 @@
<template #footer>
<span v-if="!view" class="dialog-footer">
<el-button type="primary" icon="el-icon-circle-check" @click="handleSubmit('form')"> </el-button>
<el-button icon="el-icon-circle-close" @click="openAcountStatus = false"> </el-button>
<el-button type="primary" icon="el-icon-circle-check" @click="handleSubmit('form')"
> </el-button
>
<el-button icon="el-icon-circle-close" @click="openAcountStatus = false"
> </el-button
>
</span>
</template>
</el-dialog>
<el-drawer title="子表操作" append-to-body size="60%" v-model="drawer" :direction="direction"
:before-close="handleDrawerClose">
<el-drawer
title="子表操作"
append-to-body
size="60%"
v-model="drawer"
:direction="direction"
:before-close="handleDrawerClose"
>
<BasicShopSub :mainId="basicClientId"></BasicShopSub>
</el-drawer>
<!-- <el-drawer-->
@ -321,8 +542,15 @@
</div>
<!-- 日志 -->
<el-dialog :modal-append-to-body="false" :append-to-body="false" title="客户日志" width="70%" :align-center="true"
v-model="popUpShow.logVisted" isNotSave>
<el-dialog
:modal-append-to-body="false"
:append-to-body="false"
title="客户日志"
width="70%"
:align-center="true"
v-model="popUpShow.logVisted"
isNotSave
>
<tablecmt ref="tableLogNode" class="mt10" :columnList="columnLogList" :tableData="logData">
<template #default="{ scope }"> </template>
</tablecmt>
@ -1072,31 +1300,28 @@ export default {
downloadLink(row) {
window.open(
'http://192.168.10.100:8012/onlinePreview?url=' +
encodeURIComponent(Base64.encode(row.leaseAccessories))
encodeURIComponent(Base64.encode(row.leaseAccessories))
);
},
async changeclientId() {
$_mainList(
{
current: 1,
size: 1,
}
)
$_mainList({
current: 1,
size: 1,
})
.then(res => {
console.log(res, '客户');
if (res.data.code == 200 && res.data.data?.length) {
this.dictList = res.data.data
this.dictList = res.data.data;
} else {
this.dictList = [];
}
})
.catch(error => {
console.log(error);
})
});
},
//
makeCargo(row) {
console.log('控货操作!!', row);
@ -1185,7 +1410,8 @@ export default {
},
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
);
},
@ -1252,7 +1478,7 @@ export default {
//
return;
}
} catch (error) { }
} catch (error) {}
if (!this.form.typeServiceList.includes('3')) {
delete this.form.businessType;
}
@ -1306,10 +1532,10 @@ export default {
});
return;
}
if(this.form.mainId){
this.form.mainName = this.dictList.find(item=>item.id == this.form.mainId).name;//
if (this.form.mainId) {
this.form.mainName = this.dictList.find(item => item.id == this.form.mainId).name; //
}
await add(this.form);
this.box = false;
this.onLoad(this.page);
@ -1350,8 +1576,8 @@ export default {
});
return;
}
if(this.form.mainId){
this.form.mainName = this.dictList.find(item=>item.id == this.form.mainId).name;//
if (this.form.mainId) {
this.form.mainName = this.dictList.find(item => item.id == this.form.mainId).name; //
}
await update(this.form);
this.box = false;
@ -1412,7 +1638,7 @@ export default {
getDetail(row.id).then(res => {
console.log(res.data.data, 'res.data.data');
this.form = res.data.data;
this.form.mainId = res.data.data.mainId
this.form.mainId = res.data.data.mainId;
if (this.form.detailedly == '0' || this.form.detailedly == '-1') {
this.form.detailedly = '';
}
@ -1619,18 +1845,19 @@ export default {
},
onLoad(page, params = {}) {
this.loading = true;
const submitData = { ...params, ...this.query };
// console.log('-=-=', this.query);
if (this.dataShi?.length) {
// console.log('-=-=', this.dataShi);
this.query.startDate = this.dataShi[0];
this.query.endDate = this.dataShi[1];
submitData.startDate = this.dataShi[0];
submitData.endDate = this.dataShi[1];
}
if (!!this.query.bladeRegionProvinceId) {
this.query.bladeRegionCityId = this.query.bladeRegionProvinceId[1];
this.query.bladeRegionAreaId = this.query.bladeRegionProvinceId[2];
this.query.bladeRegionProvinceId = this.query.bladeRegionProvinceId[0];
if (!!submitData.bladeRegionProvinceId) {
submitData.bladeRegionCityId = submitData.bladeRegionProvinceId[1];
submitData.bladeRegionAreaId = submitData.bladeRegionProvinceId[2];
submitData.bladeRegionProvinceId = submitData.bladeRegionProvinceId[0];
}
getList(page.currentPage, page.pageSize, Object.assign(params, this.query))
getList(page.currentPage, page.pageSize, submitData)
.then(res => {
const data = res.data.data;
console.log(data);
@ -1797,7 +2024,7 @@ export default {
},
},
created() {
this.changeclientId()
this.changeclientId();
},
};
</script>

Loading…
Cancel
Save