web-base-admin/src/views/selfService/updateAdress/index.vue

706 lines
20 KiB
Vue
Raw Normal View History

2025-03-23 09:18:42 +08:00
<template>
<div class="page">
<topBar
v-if="topList.length > 0"
:topList="topList"
:moren="moren"
></topBar>
<div class="thetopbox">
<el-form label-width="100px">
<el-row>
<el-col :span="4">
<el-form-item :label="$t('MY_ORD_1')">
<el-input clearable v-model="queryParams.orderCode"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="$t('MN_T_1')">
<el-input clearable v-model="queryParams.memberCode"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="$t('CK_KS_14')">
<el-input clearable v-model="queryParams.memberName"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="$t('MY_ORD_10')">
<el-input clearable v-model="queryParams.recName"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="$t('w_0052')">
<el-input clearable v-model="queryParams.recPhone"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="$t('MY_ORD_2')">
<el-select
v-model="queryParams.orderType"
clearable
placeholder=""
>
<el-option
v-for="item in orderTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="$t('MY_ORD_9')">
<el-select
v-model="queryParams.orderStatus"
clearable
placeholder=""
>
<el-option
v-for="item in orderStatusList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item class="dizhi" :label="$t('S_C_27')" prop="">
<el-cascader
style="width: 100%"
clearable
v-model="queryParams.shoppingAddress"
:options="areaData"
:props="regionParams"
@change="handleChange1"
></el-cascader>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="" label-width="40px">
<el-input clearable v-model="queryParams.recAddress"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :label="$t('MN_F_T_707')">
<el-date-picker
@change="checkTime"
v-model="thetimes"
type="daterange"
range-separator="——"
:start-placeholder="$t('CK_KS_4')"
:end-placeholder="$t('CK_KS_5')"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4">
<div class="searchbox">
<el-button class="my_search" @click="getSearch"> {{ $t('MN_T_2') }}</el-button>
<el-button class="my_reset" @click="reChongzhi"> {{ $t('MN_T_3') }}</el-button>
</div>
</el-col>
</el-row>
</el-form>
</div>
<div class="main">
<div class="maintop">
<div class="mainbtn">
<el-button
size="mini"
style="background: #009b58"
class="addBtn"
v-hasButtons="['addressYse']"
@click="agree()"
>{{ $t('MN_F_T_711') }}</el-button
>
<el-button
size="mini"
style="background: #c8161d; color: #fff; border: none"
class="addBtn"
v-hasButtons="['addressNo']"
@click="rejects()"
>{{ $t('ENU_APPROVE_O_2') }}</el-button
>
</div>
</div>
<div class="maintable">
<el-table
ref="multipleTable"
:data="tableData"
v-loading="loading"
height="640px"
style="width: 100%"
:header-cell-style="{ background: '#EEEEEE' }"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"> </el-table-column>
<el-table-column
align="center"
prop="orderCode"
:label="$t('MY_ORD_1')"
width="180"
>
</el-table-column>
<el-table-column align="center" prop="orderTypeVal" :label="$t('MY_ORD_2')">
</el-table-column>
<el-table-column
align="center"
prop="orderStatusVal"
:label="$t('MY_ORD_9')"
>
</el-table-column>
<el-table-column align="center" width="200"
prop="memberCode" :label="$t('MN_T_1')">
</el-table-column>
<el-table-column align="center" prop="memberName" :label="$t('CK_KS_14')">
</el-table-column>
<el-table-column min-width="120px" align="center" prop="recName" :label="$t('MN_F_T_717')">
</el-table-column>
<el-table-column width="180px" align="center" prop="recPhone" :label="$t('MY_CK_4')">
</el-table-column>
<el-table-column align="center" prop="recProvinceVal" :label="$t('MN_F_T_718')">
</el-table-column>
<el-table-column align="center" prop="recCityVal" :label="$t('MN_F_T_719')">
</el-table-column>
<el-table-column min-width="120px" align="center" prop="recCountyVal" :label="$t('MN_F_T_720')">
</el-table-column>
<el-table-column
align="center"
min-width="150px"
prop="recAddress"
:label="$t('MN_F_T_925')"
>
</el-table-column>
<el-table-column min-width="120px" align="center" prop="newRecName" :label="$t('MN_F_T_724')">
</el-table-column>
<el-table-column width="180px" align="center" prop="newRecPhone" :label="$t('MY_CK_5')">
</el-table-column>
<el-table-column align="center" prop="newRecProvinceVal" :label="$t('MN_F_T_721')">
</el-table-column>
<el-table-column align="center" prop="newRecCityVal" :label="$t('MN_F_T_722')">
</el-table-column>
<el-table-column min-width="120px" align="center" prop="newRecCountyVal" :label="$t('MN_F_T_723')">
</el-table-column>
<el-table-column
align="center"
min-width="150px"
prop="newRecAddress"
:label="$t('MN_F_T_725')"
>
</el-table-column>
<el-table-column align="center" prop="" :label="$t('MY_WAL_22')">
</el-table-column>
<el-table-column align="center"
width="200"
prop="creationTime" :label="$t('MN_F_T_707')">
</el-table-column>
<el-table-column
align="center"
prop="approveStatusVal"
:end-placeholder="$t('MN_F_11')"
:label="$t('MY_CK_7')"
>
<template slot-scope="scope">
<div v-if="scope.row.approveStatus == 3">
<el-popover placement="right"
width="400"
trigger="hover">
<div v-html="scope.row.rejectMsg"></div>
<div style="cursor: pointer;" slot="reference">{{ scope.row.approveStatusVal }}</div>
</el-popover>
</div>
<div v-else>{{ scope.row.approveStatusVal }}</div>
</template>
</el-table-column>
<el-table-column
align="center"
prop="time"
:label="$t('MY_ORD_14')"
fixed="right"
>
<template slot-scope="scope">
<el-button
v-if="scope.row.approveStatus == 0"
class="button-s"
type="text"
style="color: #009b58"
size="small"
v-hasButtons="['addressYse']"
@click="agree(scope.row)"
>
{{ $t('MN_F_T_711') }}
</el-button>
<el-button
v-if="scope.row.approveStatus == 0"
class="button-s"
type="text"
size="small"
v-hasButtons="['addressNo']"
style="color: #c8161d"
@click="rejects(scope.row)"
>
{{ $t('ENU_APPROVE_O_2') }}
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getSearch"
/>
<el-dialog
title="驳回意见"
:visible.sync="isShow"
width="40%"
center
:close-on-click-modal="false"
:before-close="handleClose1"
>
<div>
<editor
ref="sptwEditor"
v-model="relContent"
:min-height="283"
:upload-url="uploadImgUrl"
/>
</div>
<div class="button-s">
<div class="submit" @click="handleClose1"> {{ $t('ENU_P_TYPE0') }}</div>
<div class="submit colors" @click="confirmSubmit"> {{ $t('MN_F_32') }}</div>
</div>
</el-dialog>
</div>
</template>
<script>
import topBar from "@/components/topBar";
import * as api from "@/api/site.js";
import * as log from "@/api/logistics";
import * as del from "@/api/delivery";
import ImageUpload from "@/components/ImageUpload";
import Editor from '@/components/Editor/index.vue'
export default {
name: "UpdateAdress",
components: {
topBar,
ImageUpload,
Editor
},
data() {
return {
isShow:false,
relContent:'',
rejectData:'',
moren: "updateAdress",
topList: [
{
name: this.$t('N_I_265'),
path: "updateAdress",
},
],
uploadImgUrl: process.env.VUE_APP_BASE_API + '/system/upload',
tableData: [],
loading:false,
queryParams: {
pageNum: 1,
pageSize: 50,
shoppingAddress: ["", "", ""],
},
total: 0,
multipleSelection: [],
areaData: [],
regionParams: {
label: "name",
value: "id",
children: "children",
expandTrigger: "hover",
},
dialogVisible: false,
rules: {
storeName: [
{ required: true, message: this.$t('MN_F_T_726'), trigger: "blur" },
],
memberCode: [
{ required: true, message: this.$t('MN_F_T_727'), trigger: "blur" },
],
pkStoreLevel: [
{ required: true, message: this.$t('MN_F_T_728'), trigger: "change" },
],
shoppingAddress: [
{ required: true, message: this.$t('w_0069'), trigger: "change" },
],
picture: [
{
required: true,
message: this.$t('MN_F_T_356'),
trigger: "change",
},
],
},
form: {
storeCode: "",
storeName: "",
province: "",
city: "",
county: "",
address: "",
memberCode: "",
shopowner: "",
pkStoreLevel: "",
picture: "",
shoppingAddress: ["", "", ""],
},
orderTypeList: [],
orderStatusList: [],
thetimes: [],
};
},
created() {
this.getSearch();
this.getData();
},
methods: {
handleClose1() {
this.isShow = false
this.relContent = ''
},
getDetails(obj, index) {
log.queryPass(obj).then((res) => {
this.$router.push({
path: "addressZxqc",
query: {
data: JSON.stringify(res.data),
approvalBusiness: 131,
businessNoList: JSON.stringify(obj.businessNoList),
},
});
});
},
// 驳回申请
confirmSubmit() {
if(this.relContent.length == 0){
this.$message({
message: '请输入驳回信息',
type: 'warning'
})
return false
}
log.rejectAddress(Object.assign({rejectMsg:this.relContent},this.rejectData)).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: "success",
});
this.isShow = false
this.relContent = ''
this.getSearch();
}
});
},
rejectAddress(obj) {
this.isShow = true
this.rejectData = obj
},
rejects(item) {
let obj;
if (item) {
obj = {
businessNoList: [item.businessNo],
approveOperation: 2,
};
this.rejectAddress(obj, 2);
} else {
if (this.multipleSelection.length == 0) {
this.$message({
message: this.$t('MN_F_T_729'),
type: "warning",
});
} else {
let has = false;
this.multipleSelection.forEach((item) => {
if (item.approveStatus == 3) {
has = true;
}
});
if (has) {
this.$message({
message: this.$t('MN_F_T_730'),
type: "warning",
});
return false;
} else {
let arr = this.multipleSelection.map((item) => {
return item.businessNo;
});
obj = {
businessNoList: arr,
approveOperation: 2,
};
this.rejectAddress(obj, 2);
}
}
}
},
agree(item) {
let obj;
if (item) {
obj = {
businessNoList: [item.businessNo],
approveOperation: 1,
};
this.getDetails(obj, 1);
} else {
if (this.multipleSelection.length == 0) {
this.$message({
message: this.$t('MN_F_T_729'),
type: "warning",
});
} else {
let has = false;
this.multipleSelection.forEach((item) => {
if (item.approveStatus == 3) {
has = true;
}
});
if (has) {
this.$message({
message: this.$t('MN_F_T_730'),
type: "warning",
});
return false;
} else {
let arr = this.multipleSelection.map((item) => {
return item.businessNo;
});
obj = {
businessNoList: arr,
approveOperation: 1,
};
this.getDetails(obj, 1);
}
}
}
// this.multipleSelection
// const flags = this.verifySelect();
// if (item != "" || flags != undefined) {
// if (
// this.$refs.multipleTable.selection[0].approveStatus == 2 ||
// this.$refs.multipleTable.selection[0].approveStatus == 4
// ) {
// this.$router.push({
// path: "hjbgQc",
// query: {
// data: JSON.stringify([
// item || this.$refs.multipleTable.selection[0],
// ]),
// approvalBusiness: 132,
// },
// });
// } else if (this.$refs.multipleTable.selection[0].approveStatus == 3) {
// this.$message({
// message: "用户申请户籍变更已被驳回,请勿重复申请",
// type: "warning",
// });
// }
// }
},
// rejects(id) {
// const flags = this.verifySelect();
// if (id != "" || flags != undefined) {
// if (
// this.$refs.multipleTable.selection[0].approveStatus == 2 ||
// this.$refs.multipleTable.selection[0].approveStatus == 4
// ) {
// this.$confirm("是否驳回确认驳回该申请?", this.$t('MN_F_T_304'), {
// confirmButtonText: this.$t('w_0035'),
// cancelButtonText: this.$t('ENU_P_TYPE0'),
// type: "warning",
// }).then((_) => {
// domicileReject({
// pkId: id || this.$refs.multipleTable.selection[0].pkId,
// }).then((res) => {
// if (res.code == "200") {
// this.$message({
// message: res.msg,
// type: "success",
// });
// this.getDataList();
// } else {
// this.$message({
// message: res.msg,
// type: "error",
// });
// }
// });
// });
// } else if (this.$refs.multipleTable.selection[0].approveStatus == 3) {
// this.$message({
// message: "用户申请户籍变更已被驳回,请勿重复申请",
// type: "warning",
// });
// }
// }
// },
verifySelect() {
const len = this.$refs.multipleTable.selection.length;
if (len === 0) {
this.$message({ message: this.$t('MN_F_T_527'), type: "warning" });
} else if (len > 1) {
this.$message({ message: this.$t('MN_F_T_528'), type: "warning" });
} else {
return true;
}
},
handleClose() {
this.dialogVisible = false;
this.$refs["form"].clearValidate();
this.$refs["form"].resetFields();
},
checkTime(val) {
this.queryParams.startDate = val[0];
this.queryParams.endDate = val[1];
},
handleChange1(val) {
this.queryParams.recProvince = val[0];
this.queryParams.recCity = val[1];
this.queryParams.recCounty = val[2] || "";
},
getData() {
// 获取订单类型
log.getOrderType().then((res) => {
this.orderTypeList = res.data;
});
api.areaList().then((res) => {
this.areaData = res.data;
});
del.getOrderStatus().then((res) => {
this.orderStatusList = res.data;
});
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
reChongzhi() {
this.queryParams = {
pageNum: 1,
pageSize: 50,
shoppingAddress: ["", "", ""],
};
this.getSearch();
this.thetimes = []
},
getSearch() {
this.loading = true
log.getModifyAddress(this.queryParams).then((res) => {
this.loading = false
this.tableData = res.rows;
this.total = res.total;
const regex = new RegExp('<img', 'gi');
this.tableData.forEach(item=>{
if(item.rejectMsg){
item.rejectMsg= item.rejectMsg.replace(regex, `<img style="max-width: 200px;"`);
}
})
});
},
},
};
</script>
<style lang="scss" scoped>
::v-deep .el-range-editor.el-input__inner {
width: 100%;
}
::v-deep .el-table thead {
color: #000000;
}
::v-deep .el-table .warning-row {
background: #f9f9f9;
}
.page {
padding: 10px 20px;
background: #f9f9f9;
font-size: 14px;
.thetopbox {
padding: 15px 20px 15px 0;
background: #ffffff;
border-radius: 8px;
.searchbox {
display: flex;
align-items: center;
margin-left: 40px;
}
.searchtitle {
margin-right: 10px;
}
.searchbtn {
background: #08143f;
color: #ffffff;
}
}
.main {
//margin-top: 20px;
background: #f9f9f9;
//border-radius: 8px;
//box-shadow: 0px 2px 20px 0px rgba(238, 238, 238, 0.5);
.maintop {
display: flex;
// padding: 10px 0;
justify-content: space-between;
align-items: center;
.mainbtn {
.thebtn1 {
color: #ffffff;
background: #48b2fd;
}
.thebtn2 {
color: #ffffff;
background: #ffad41;
}
}
}
}
}
.button-s{
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
margin-top: 20px;
.submit{
width: 209px;
height: 48px;
background: #CCCCCC;
border-radius: 5px 5px 5px 5px;
line-height: 48px;
text-align: center;
color: #fff;
font-size: 18px;
}
.colors{
margin-left: 40px;
background-color: #48B2FD;
}
}
</style>