Commit 9f220cec authored by dragondean@qq.com's avatar dragondean@qq.com

backup

parents 4602c8aa bf21bf76
...@@ -52,3 +52,12 @@ export function exportOfferExcel(query) { ...@@ -52,3 +52,12 @@ export function exportOfferExcel(query) {
responseType: 'blob' responseType: 'blob'
}) })
} }
// 更新报价单结果
export function updateOfferResult(data) {
return request({
url: '/ecw/offer/update/result',
method: 'put',
data: data
})
}
\ No newline at end of file
...@@ -93,7 +93,7 @@ export function getCityList(query) { ...@@ -93,7 +93,7 @@ export function getCityList(query) {
// 获得进出口城市 // 获得进出口城市
export function getTradeCityList(query) { export function getTradeCityList(query) {
return request({ return request({
url: '/ecw/region/getCityList', url: '/ecw/region/getTradeCityList',
method: 'get', method: 'get',
params: query params: query
}) })
......
...@@ -52,3 +52,28 @@ export function exportUserExcel(query) { ...@@ -52,3 +52,28 @@ export function exportUserExcel(query) {
responseType: 'blob' responseType: 'blob'
}) })
} }
//操作日志
export function operationLogApi(query){
return request({
url:'/member/user/operation-log/page',
method:'get',
params:query,
})
}
//更新证书
export function seTupdateBackletter(data){
return request({
url:'/member/user/update-backletter',
method:'put',
data:data
})
}
//获取指定用户的实名认证信息
export function memberGetAuthIdcardInfo(query){
return request({
url:'/member/user/get-auth-idcard-info',
method:'get',
params:query,
})
}
...@@ -89,6 +89,8 @@ export const DICT_TYPE = { ...@@ -89,6 +89,8 @@ export const DICT_TYPE = {
ECW_PACKAGE_TYPE: 'packageType', // 包装单位 ECW_PACKAGE_TYPE: 'packageType', // 包装单位
ECW_DOUBLE_CLEAR: 'double_clear', // 是否双清 ECW_DOUBLE_CLEAR: 'double_clear', // 是否双清
ECW_TRADE_TYPE: 'trade_type', // 交货放肆 ECW_TRADE_TYPE: 'trade_type', // 交货放肆
ECW_OFFER_RESULT: 'offer_result', // 报单结果 赢单 输单
ECW_WAREHOUSING_TYPE: 'warehousing_type', // 入仓类型
//--------ecw--------- //--------ecw---------
CUSTOMER_STATUS: 'customer_status', CUSTOMER_STATUS: 'customer_status',
CUSTOMER_SOURCE: 'customer_source', CUSTOMER_SOURCE: 'customer_source',
......
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="客户编号" prop="number"> <el-form-item label="客户编号" prop="number">
<el-input v-model="queryParams.number" placeholder="请输入客户编号" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.number" placeholder="请输入客户编号" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
...@@ -13,31 +13,16 @@ ...@@ -13,31 +13,16 @@
<el-form-item label="客户等级" prop="level"> <el-form-item label="客户等级" prop="level">
<el-select v-model="queryParams.level" placeholder="请选择客户等级" clearable size="small"> <el-select v-model="queryParams.level" placeholder="请选择客户等级" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)" <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
:key="dict.value" :label="dict.label" :value="dict.value"/> :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="联系方式" prop="name"> <el-form-item label="客户来源" prop="source">
<el-input v-model="queryParams.name" placeholder="请输入客户名称" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="客户类别" prop="source">
<el-select v-model="queryParams.source" placeholder="请选择客户来源" clearable size="small"> <el-select v-model="queryParams.source" placeholder="请选择客户来源" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)" <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="跟进客服" prop="customerService">
<el-select v-model="queryParams.customerService" placeholder="请选择跟进客服" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="客服来源" prop="customerService">
<el-select v-model="queryParams.customerService" placeholder="请选择跟进客服" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/> :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="国家" prop="customerService"> <el-form-item label="跟进客服" prop="customerService">
<el-select v-model="queryParams.customerService" placeholder="请选择跟进客服" clearable size="small"> <el-select v-model="queryParams.customerService" placeholder="请选择跟进客服" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.COMMON_STATUS)" <el-option v-for="dict in getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/> :key="dict.value" :label="dict.label" :value="dict.value"/>
...@@ -46,22 +31,16 @@ ...@@ -46,22 +31,16 @@
<el-form-item label="客户状态" prop="status"> <el-form-item label="客户状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择客户状态" clearable size="small"> <el-select v-model="queryParams.status" placeholder="请选择客户状态" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)" <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/> :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="订单角色" prop="department"> <el-form-item label="部门" prop="department">
<el-input v-model="queryParams.department" placeholder="请输入部门" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.department" placeholder="请输入部门" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd" <el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" /> type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
<el-form-item label="是否出货" prop="department">
<el-input v-model="queryParams.department" placeholder="请输入部门" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="信用等级" prop="department">
<el-input v-model="queryParams.department" placeholder="请输入部门" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
...@@ -90,39 +69,47 @@ ...@@ -90,39 +69,47 @@
<dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" /> <dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="信用等级" align="center" prop="country"> <el-table-column label="国家" align="center" prop="country">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.country" />
</template>
</el-table-column>
<el-table-column label="客户状态" align="center" prop="customerService">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.customerService" /> <dict-tag :type="DICT_TYPE.COUNTRY" :value="scope.row.country" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="主联系人" align="center" prop="defaultContactName"> <el-table-column label="跟进客服" align="center" prop="customerService" :formatter="customerServiceFn">
</el-table-column> </el-table-column>
<el-table-column label="主联系方式" align="center" prop="defaultContactPhone" /> <el-table-column label="客户状态" align="center" prop="status">
<el-table-column label="常用运输方式" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_STATUS" :value="scope.row.status" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime"> <el-table-column label="部门" align="center" prop="department" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
{{parseTime(scope.row.customerService)}} <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="最后跟进客服" align="center" prop="customerService">
</el-table-column>
<el-table-column label="国家" align="center" prop="country">
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">捞取</el-button> <el-button size="mini" type="text" icon="el-icon-folder-add" @click="distribution(scope.row)">移交</el-button>
<el-button size="mini" type="text" icon="el-icon-discover" @click="handleDelete(scope.row)">移交</el-button> <el-button size="mini" type="text" icon="el-icon-crop">捞取</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 移交 -->
<el-dialog
center
title="客服"
:visible.sync="transferShow"
width="30%">
<div style="width: 100%;min-height: 100px">
<el-radio-group v-model="service">
<el-radio style="margin: 5px;" v-for="(item,index) in customerServiceList" :key="index" :label="item.id">{{item.nickname}}</el-radio>
</el-radio-group>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="transferShow = false">取 消</el-button>
<el-button type="primary" @click="transferFn">确 定</el-button>
</span>
</el-dialog>
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination="getList"/> @pagination="getList"/>
...@@ -130,18 +117,14 @@ ...@@ -130,18 +117,14 @@
</template> </template>
<script> <script>
import { createCustomer, updateCustomer, getCustomer, import { createCustomer, updateCustomer, deleteCustomer,handOverCustomer,getPublicList,exportCustomerExcel } from "@/api/ecw/customer";
getCustomerPage, exportCustomerExcel, getPublicList,handOverCustomer } from "@/api/ecw/customer";
import { getDictDatas, DICT_TYPE } from '@/utils/dict'; import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import {CommonStatusEnum} from '@/utils/constants' import upload from '@/components/ImageUpload'
import { uploadFile } from "@/api/infra/file"; import {listServiceUser} from "@/api/system/user";
import Template from "@/views/cms/template";
export default { export default {
name: "oceanCustomer", name: "customerToBeAssigned",
components: { components: {
Template upload
}, },
data() { data() {
return { return {
...@@ -162,6 +145,7 @@ export default { ...@@ -162,6 +145,7 @@ export default {
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
dateRangeCreateTime: [], dateRangeCreateTime: [],
customerServiceList:[],
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNo: 1, pageNo: 1,
...@@ -179,12 +163,32 @@ export default { ...@@ -179,12 +163,32 @@ export default {
// 表单校验 // 表单校验
rules: { rules: {
name: [{ required: true, message: "客户名称不能为空", trigger: "blur" }], name: [{ required: true, message: "客户名称不能为空", trigger: "blur" }],
weightUnit: [{ required: true, message: "重货标准(CBM)不能为空", trigger: "blur" }], country: [{ required: true, message: "国家不能为空", trigger: "blur" }],
} level: [{ required: true, message: "客户等级不能为空", trigger: "blur" }],
type: [{ required: true, message: "客户类别不能为空", trigger: "blur" }],
// createTime: [{ required: true, message: "创建时间不能为空", trigger: "blur" }],
source: [{ required: true, message: "客户来源不能为空", trigger: "blur" }],
customerService: [{ required: true, message: "跟进客服不能为空", trigger: "blur" }],
status: [{ required: true, message: "客户状态不能为空", trigger: "blur" }],
founder: [{ required: true, message: "创建人不能为空", trigger: "blur" }],
},
// 网点
nodeList: [],
showLine: false,
service:undefined,//客服
transferData:undefined,//移交数据
transferShow:false,
}; };
}, },
created() { created() {
this.getList(); this.getList();
listServiceUser().then(r=>{
console.log(r,'客服');
this.customerServiceList = r.data;
})
// getNodeList().then(r => {
// this.nodeList = r.data
// })
}, },
methods: { methods: {
/** 查询列表 */ /** 查询列表 */
...@@ -208,17 +212,41 @@ export default { ...@@ -208,17 +212,41 @@ export default {
/** 表单重置 */ /** 表单重置 */
reset() { reset() {
this.form = { this.form = {
beginCreateTime:undefined,//开始创建时间 id: undefined,
endCreateTime:undefined,// 结束创建时间 number: undefined,
customerService:undefined,//跟进客服 name: undefined,
defaultContactName:undefined,//主联系人 level: undefined,
defaultContactPhone:undefined,// 主联系电话 country: undefined,
department:undefined,//部门 type: undefined,
level:undefined,//客户等级 agentId: undefined,
name:undefined,// 客户名称 company: undefined,
number:undefined,//客户编号 address: undefined,
source:undefined,//客户来源 productType: undefined,
status:undefined,//客户状态 productId: undefined,
pickupPoint: undefined,
memberId: undefined,
birthday: undefined,
balance: undefined,
source: undefined,
picture: undefined,
customerService: undefined,
customerContacts: [],
customerLines: [],
promoter: undefined,
status: undefined,
founder: undefined,
department: undefined,
invoiceTitle: undefined,
licenseNumber: undefined,
bank: undefined,
bankNumber: undefined,
project: undefined,
billingAddress: undefined,
billingTell: undefined,
taxRate: undefined,
remarks: undefined,
arrivalConfirm: undefined,
weightUnit: undefined,
}; };
this.resetForm("form"); this.resetForm("form");
}, },
...@@ -236,22 +264,30 @@ export default { ...@@ -236,22 +264,30 @@ export default {
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.$router.push('/customer/edit/0') this.$router.push('/customer/edit/0')
// this.reset();
// this.open = true;
// this.title = "添加客户";
},
/** 查看按钮操作 */
handleView(row) {
this.$router.push('/customer/query/' + row.id)
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.$router.push('/customer/edit/' + row.id)
const id = row.id; // this.reset();
getCustomer(id).then(response => { // const id = row.id;
this.form = response.data; // getCustomer(id).then(response => {
this.open = true; // this.form = { ...this.form, ...response.data };
this.title = "修改客户"; // this.open = true;
}); // this.title = "修改客户";
// });
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (!valid) { if (!valid) {
return; // return;
} }
// 修改的提交 // 修改的提交
if (this.form.id != null) { if (this.form.id != null) {
...@@ -270,15 +306,15 @@ export default { ...@@ -270,15 +306,15 @@ export default {
}); });
}); });
}, },
/** 删除按钮操作 */ /** 移交按钮操作 */
handleDelete(row) { handleDelete(row) {
const id = row.id; const id = row.id;
this.$modal.confirm('是否确认移交客户编号为"' + id + '"的数据项?').then(function() { this.$modal.confirm('是否确认删除客户编号为"' + id + '"的数据项?').then(function() {
return handOverCustomer(id); return deleteCustomer(id);
}).then(() => { }).then(() => {
this.getList(); this.getList();
this.$modal.msgSuccess("删除成功"); this.$modal.msgSuccess("删除成功");
}).catch(() => {}); }).catch(() => {});
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
...@@ -289,13 +325,42 @@ export default { ...@@ -289,13 +325,42 @@ export default {
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出 // 执行导出
this.$modal.confirm('是否确认导出所有客户数据项?').then(() => { this.$modal.confirm('是否确认导出所有客户数据项?').then(() => {
this.exportLoading = true; this.exportLoading = true;
return exportCustomerExcel(params); return exportCustomerExcel(params);
}).then(response => { }).then(response => {
this.$download.excel(response, '${table.classComment}.xls'); this.$download.excel(response, '${table.classComment}.xls');
this.exportLoading = false; this.exportLoading = false;
}).catch(() => {}); }).catch(() => {});
} },
//分配客服
distribution(row){
this.transferData = row;
this.transferShow =true;
},
customerServiceFn(val){
if(this.customerServiceList.length > 0){
let index =this.customerServiceList.findIndex(item => item.id === val.customerService);
return index !== -1 ? this.customerServiceList[index]?.nickname :''
}else {
return ''
}
},
transferFn(){
if(!this.service){
return this.$message.warning('请选择跟进客服!');
}
handOverCustomer({
customerServiceId:this.service,
customerId:this.transferData.id
}).then(r=>{
if(r.code === 0){
this.transferShow = false;
this.service = '';
this.getList();
this.$message.success('移交成功!');
}
})
},
} }
}; };
</script> </script>
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-card> <el-card>
<div slot="header" class="card-title">新建报价单</div> <div slot="header" class="card-title">新建报价单</div>
<el-form-item label="所属人" prop="number"> <el-form-item label="所属人">
<el-radio-group v-model="form.relation"> <el-radio-group v-model="form.relation">
<el-radio label="1">发件人</el-radio> <el-radio label="1">发件人</el-radio>
<el-radio label="2">收件人</el-radio> <el-radio label="2">收件人</el-radio>
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
<el-card class="mt-10"> <el-card class="mt-10">
<div slot="header" class="card-title"> <div slot="header" class="card-title">
<div class="card-name">商品信息</div> <div class="card-name">商品信息</div>
<el-button type="primary" size="mini" icon="el-icon-plus" @click="productList.push({prodAttrIds:[]})"></el-button> <el-button type="primary" size="mini" icon="el-icon-plus" @click="productList.push({prodAttrArr:[]})"></el-button>
</div> </div>
<el-table :data="productList" border> <el-table :data="productList" border>
<el-table-column label="序号" width="60px" fixed> <el-table-column label="序号" width="60px" fixed>
...@@ -86,12 +86,12 @@ ...@@ -86,12 +86,12 @@
</el-table-column> </el-table-column>
<el-table-column label="中文名" width="160px"> <el-table-column label="中文名" width="160px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<product-selector v-model="row.productId" @change="row.goodsType = $event.typeId" /> <product-selector v-model="row.prodtId" @change="row.goodsType = $event.typeId" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="英文名" width="160px"> <el-table-column label="英文名" width="160px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<product-selector v-model="row.productId" /> <product-selector v-model="row.prodtId" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="商品类型" width="160px"> <el-table-column label="商品类型" width="160px">
...@@ -143,21 +143,21 @@ ...@@ -143,21 +143,21 @@
</el-table-column> </el-table-column>
<el-table-column label="商品特性" width="250px"> <el-table-column label="商品特性" width="250px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-checkbox-group v-model="row.prodAttrIds"> <el-checkbox-group v-model="row.prodAttrArr">
<el-checkbox v-for="item in productAttrList" :label="item.id" :key="item.id">{{item.attrName}}</el-checkbox> <el-checkbox v-for="item in productAttrList" :label="item.id" :key="item.id">{{item.attrName}}</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="运输方式" width="150px"> <el-table-column label="运输方式" width="150px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="row.offerTransportId" <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="row.transportId"
@input="if(getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, $event).cssClass != 'channel') row.channelId = null" /> @input="if(getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, $event).cssClass != 'channel') row.channelId = null" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="出货渠道" width="150px"> <el-table-column label="出货渠道" width="150px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<selector <selector
:disabled="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, row.offerTransportId).cssClass != 'channel'" :disabled="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, row.transportId).cssClass != 'channel'"
v-model="row.channelId" v-model="row.channelId"
:options="channelList" :options="channelList"
value-field="channelId" value-field="channelId"
...@@ -182,10 +182,10 @@ ...@@ -182,10 +182,10 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!--
</el-card> </el-card>
<el-card class="mt-10"> <el-card class="mt-10"> -->
<div class="card-title" slot="header">费用小计</div> <div class="card-title" style="padding:20px 0;">费用小计</div>
<el-descriptions :column="4" border> <el-descriptions :column="4" border>
<el-descriptions-item label="总件数"> <el-descriptions-item label="总件数">
...@@ -213,52 +213,61 @@ ...@@ -213,52 +213,61 @@
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<el-card class="mt-10" v-for="(item, index) in transportList" :key="index"> <template v-for="(item, index) in enbedTransports" >
<div class="card-title" slot="header">空运路线</div> <el-card class="mt-10" :key="index" v-if="!item._disabled">
<el-form-item label="空运线路1"> <div class="card-title" slot="header">{{item.label}}</div>
<el-col :span="12">
义务 > Alaba
</el-col>
<el-col :span="12">
出货渠道1: 你猜
</el-col>
</el-form-item>
<el-form-item label="空运线路1">
<el-col :span="12">
义务 > Alaba
</el-col>
<el-col :span="12">
出货渠道1: 你猜
</el-col>
</el-form-item>
<el-form-item label="是否双清">
<dict-selector v-model="item.doubleClear" form-type="radio" :type="DICT_TYPE.ECW_DOUBLE_CLEAR" />
</el-form-item>
<el-form-item label="航空公司">
<el-select placeholder="" v-model="item.airlineCompany">
</el-select>
</el-form-item>
<el-form-item label="清关证书">
<dict-selector v-model="item.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
</el-form-item>
<el-form-item label="清关证书备注" >
<el-input v-model="item.remarks" ></el-input>
</el-form-item>
<el-form-item label="是否拆包">
<dict-selector v-model="item.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
</el-form-item>
<el-form-item label="单票立刻转运">
<dict-selector v-model="item.isSingleTicketTransport" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
<span style="margin-left:10px">注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”</span>
</el-form-item>
<el-form-item label="包装类型">
<dict-selector v-model="item.packageType" form-type="checkbox" :type="DICT_TYPE.ECW_PACKAGE_TYPE" muiltple />
</el-form-item>
<el-form-item label="包装要求备注">
<el-input v-model="item.remarks" ></el-input>
</el-form-item>
</el-card>
<el-form-item v-for="(router, routerIndex) in item.routers" :key="routerIndex" :label="item.label.substr(0, 2) + '线路' + (routerIndex + 1)">
<el-col :span="12">
{{getRouterNameById(router.lineId)}}
</el-col>
<el-col :span="12" v-if="router.channelId">
出货渠道{{routerIndex + 1}}: {{getChannelNameById(router.channelId)}}
</el-col>
</el-form-item>
<!--
<el-form-item label="空运线路1">
<el-col :span="12">
义务 > Alaba
</el-col>
<el-col :span="12">
出货渠道1: 你猜
</el-col>
</el-form-item> -->
<!--1海运拼柜 2海运整柜 3专线空运 4海空联运-->
<el-form-item label="是否双清" v-if="[2,3,4].indexOf(+item.transportId) > -1">
<dict-selector v-model="item.doubleClear" form-type="radio" :type="DICT_TYPE.ECW_DOUBLE_CLEAR" />
</el-form-item>
<el-form-item label="航空公司" v-if="[3,4].indexOf(+item.transportId) > -1">
<el-select placeholder="" v-model="item.airlineCompany">
</el-select>
</el-form-item>
<el-form-item label="船公司" v-if="[2].indexOf(+item.transportId) > -1">
<el-select placeholder="" v-model="item.airlineCompany">
</el-select>
</el-form-item>
<el-form-item label="清关证书" v-if="[2,3,4].indexOf(+item.transportId) > -1">
<dict-selector v-model="item.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
</el-form-item>
<el-form-item label="清关证书备注" v-if="[2,3,4].indexOf(+item.transportId) > -1">
<el-input v-model="item.remarks" ></el-input>
</el-form-item>
<el-form-item label="是否拆包" v-if="[3,4].indexOf(+item.transportId) > -1">
<dict-selector v-model="item.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
</el-form-item>
<el-form-item label="单票立刻转运" v-if="[3,4].indexOf(+item.transportId) > -1">
<dict-selector v-model="item.isSingleTicketTransport" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
<span style="margin-left:10px">注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”</span>
</el-form-item>
<el-form-item label="包装类型" v-if="[3,4].indexOf(+item.transportId) > -1">
<dict-selector v-model="item.packageType" form-type="checkbox" :type="DICT_TYPE.ECW_PACKAGE_TYPE" multiple />
</el-form-item>
<el-form-item label="包装要求备注" v-if="[3,4].indexOf(+item.transportId) > -1">
<el-input v-model="item.packageRemarks" ></el-input>
</el-form-item>
</el-card>
</template>
<el-card class="mt-10"> <el-card class="mt-10">
<div class="card-title" slot="header">通用</div> <div class="card-title" slot="header">通用</div>
...@@ -270,7 +279,7 @@ ...@@ -270,7 +279,7 @@
<dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="form.customsType" form-type="radio" /> <dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="form.customsType" form-type="radio" />
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="预计结束时间"> <el-descriptions-item label="预计结束时间">
<el-date-picker v-model="form.stopTime" placeholder=""></el-date-picker> <el-date-picker v-model="form.stopTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="是否控货"> <el-descriptions-item label="是否控货">
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.control" form-type="radio" /> <dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.control" form-type="radio" />
...@@ -282,9 +291,9 @@ ...@@ -282,9 +291,9 @@
<el-rate v-model="form.importance"></el-rate> <el-rate v-model="form.importance"></el-rate>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="价格有效时间"> <el-descriptions-item label="价格有效时间">
<el-date-picker v-model="form.startTime" placeholder=""></el-date-picker> <el-date-picker v-model="form.startTime" placeholder="" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
- -
<el-date-picker v-model="form.endTime" placeholder=""></el-date-picker> <el-date-picker v-model="form.endTime" placeholder="" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="交货方式"> <el-descriptions-item label="交货方式">
<!-- <!--
...@@ -306,6 +315,9 @@ ...@@ -306,6 +315,9 @@
<el-descriptions-item label="佣金类型" :span="2"> <el-descriptions-item label="佣金类型" :span="2">
<dict-selector :type="DICT_TYPE.COMMISSION_TYPE" form-type="radio" fomtter="number" v-model="form.commissionType" defaultable /> <dict-selector :type="DICT_TYPE.COMMISSION_TYPE" form-type="radio" fomtter="number" v-model="form.commissionType" defaultable />
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="备注" :span="2">
<el-input v-model="form.remarks" type="textarea" placeholder=""></el-input>
</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
...@@ -341,23 +353,25 @@ export default { ...@@ -341,23 +353,25 @@ export default {
dateRangeStartTime: [], dateRangeStartTime: [],
dateRangeEndTime: [], dateRangeEndTime: [],
dateRangeCreateTime: [], */ dateRangeCreateTime: [], */
productList:[{prodAttrIds:[]}], // 商品信息 productList:[{prodAttrArr:[]}], // 商品信息
productAttrList:[], // 商品属性 productAttrList:[], // 商品属性
channelList: [], // 出货取到 channelList: [], // 出货取到
routerList: [], routerList: [],
tradeCityList: [], tradeCityList: [],
consignor: {}, // 发货人 consignor: {}, // 发货人
consignee:{}, // 收货人 consignee:{}, // 收货人
transportList: [{}], transportList: [],
// 表单参数 // 表单参数
form: {}, form: {
sendstatus:0
},
// 表单校验 // 表单校验
rules: { rules: {
number: [{ required: true, message: "报价单号不能为空", trigger: "blur" }], /* number: [{ required: true, message: "报价单号不能为空", trigger: "blur" }],
consignorId: [{ required: true, message: "客户id,发货人不能为空", trigger: "blur" }], consignorId: [{ required: true, message: "客户id,发货人不能为空", trigger: "blur" }],
consigneeId: [{ required: true, message: "收货人id不能为空", trigger: "blur" }], consigneeId: [{ required: true, message: "收货人id不能为空", trigger: "blur" }],
sendstatus: [{ required: true, message: "站内信状态,0未发送,1已发送不能为空", trigger: "blur" }], sendstatus: [{ required: true, message: "站内信状态,0未发送,1已发送不能为空", trigger: "blur" }], */
} }
}; };
}, },
...@@ -371,7 +385,52 @@ export default { ...@@ -371,7 +385,52 @@ export default {
getDictData(){ getDictData(){
return (type, value) => getDictData(type, value) || {} return (type, value) => getDictData(type, value) || {}
}, },
// 被启用的货运方式
enbedTransports(){
let transports = []
this.transportList.forEach(item => {
let disabled = true
let lineIds = []
let channelIds = []
let routers = []
this.productList.forEach(prod => {
if(prod.offerTransportId == item.transportId){
disabled = false
routers.push({
lineId: prod.lineId,
channelId: prod.channelId
})
if(prod.lineId)lineIds.push(prod.lineId)
if(prod.channelId)channelIds.push(prod.channelId)
}
})
if(!disabled){
item._disabled = disabled
item.routers = routers
item.lineIds = lineIds.join(',')
item.channelIds = channelIds.join(',')
transports.push(item)
}
})
return transports
},
// 根据线路id显示线路名称
getRouterNameById(){
return routerId => {
let router = this.routerList.find(item => item.id == routerId)
console.log({router})
if(router){
return router.startTitleZh + ' > ' + router.destTitleZh
}
return '-'
}
},
// 根据渠道id显示渠道名
getChannelNameById(){
return channelId => {
return this.channelList.find(item => item.channelId == channelId) ?. nameZh
}
}
}, },
watch:{ watch:{
// 始发地 // 始发地
...@@ -384,6 +443,7 @@ export default { ...@@ -384,6 +443,7 @@ export default {
}, },
// 产品有变动则需要更新运输方式 // 产品有变动则需要更新运输方式
productList(val){ productList(val){
console.log('productList', val)
let transports = {} let transports = {}
this.productList.forEach(item => { this.productList.forEach(item => {
/* if(!transports[item.offerTransportId]){ /* if(!transports[item.offerTransportId]){
...@@ -410,19 +470,17 @@ export default { ...@@ -410,19 +470,17 @@ export default {
}) })
return routes return routes
}, },
// 被启用的货运方式
enbedTransports(){
}
}, },
created() { created() {
getProductAttrList().then(res => this.productAttrList = res.data) getProductAttrList().then(res => this.productAttrList = res.data)
getChannelList().then(res => this.channelList = res.data) getChannelList().then(res => this.channelList = res.data)
getTradeCityList().then(res => this.tradeCityList = res.data) getTradeCityList().then(res => this.tradeCityList = res.data)
this.getDIctDatas(this.DICT_TYPE.ECW_TRANSPORT_TYPE).forEach(res => { this.getDictDatas(this.DICT_TYPE.ECW_TRANSPORT_TYPE).forEach(res => {
this.transportList.push({ this.transportList.push({
transportId: res.value, transportId: res.value,
label: res.label,
_disabled: true // 默认禁用 _disabled: true // 默认禁用
}) })
}) })
...@@ -502,9 +560,16 @@ export default { ...@@ -502,9 +560,16 @@ export default {
if (!valid) { if (!valid) {
return; return;
} }
let data = Object.assign({}, this.form, {
transportCreateReqVOList: this.enbedTransports,
prodCreateReqVOList: this.productList
})
data.prodCreateReqVOList.map(item => {
item.prodAttrIds = item.prodAttrArr.join(',')
})
// 修改的提交 // 修改的提交
if (this.form.offerId != null) { if (data.offerId != null) {
updateOffer(this.form).then(response => { updateOffer(data).then(response => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
this.getList(); this.getList();
...@@ -512,7 +577,7 @@ export default { ...@@ -512,7 +577,7 @@ export default {
return; return;
} }
// 添加的提交 // 添加的提交
createOffer(this.form).then(response => { createOffer(data).then(response => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
this.open = false; this.open = false;
this.getList(); this.getList();
......
<template>
<div class="app-container">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="报价单号" prop="offerId">
<div>{{form.offerId}}</div>
</el-form-item>
<el-form-item label="结果" prop="result">
<dict-selector form-type="radio" :type="DICT_TYPE.ECW_OFFER_RESULT" v-model="form.result" />
</el-form-item>
<template v-if="form.result==1">
<el-form-item label="入仓类型" prop="warehousingType">
<dict-selector :type="DICT_TYPE.ECW_WAREHOUSING_TYPE" v-model="form.warehousingType" />
</el-form-item>
<el-form-item label="关联订单" prop="orderIds">
<el-input v-model="form.orderIds" style="width: 206px;"></el-input>
</el-form-item>
</template>
<template v-else>
<el-form-item label="原因" prop="reason">
<el-input style="width: 500px;" type="textarea" placeholder="" v-model="form.reason"></el-input>
</el-form-item>
</template>
<el-form-item>
<el-button type="primary" @click="submitForm">{{form.result==1?"确定并新增草稿订单":"提交"}}</el-button>
<el-button @click="$router.back()">返 回</el-button>
<el-button type="default" @click="reset">重 置</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import { updateOfferResult } from '@/api/ecw/offer';
import CustomersSelector from '@/components/CustomersSelector'
import RoutersSelector from '@/components/RoutersSelector'
import ProductsSelector from '@/components/ProductsSelector'
import Editor from '@/components/Editor'
import Selector from '@/components/Selector/index'
export default {
name: "AttrEdit",
components: { CustomersSelector, RoutersSelector, ProductsSelector, Editor, Selector },
data() {
return {
// 遮罩层
loading: true,
// 表单参数
form: {
"offerId": undefined,
"orderIds": undefined,
"reason": undefined,
"result": 1,
"warehousingType": undefined
},
// 表单校验
rules: {}
};
},
computed: {
},
watch: {
},
created() {
this.reset()
},
methods: {
/** 表单重置 */
reset() {
this.form = {
"offerId": undefined,
"orderIds": undefined,
"reason": undefined,
"result": 1,
"warehousingType": undefined
};
this.resetForm("form");
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (!valid) {
return;
}
let data = Object.assign({}, this.form)
updateOfferResult(data).then((response) => {
this.$modal.msgSuccess("修改成功");
this.$router.back();
});
});
},
},
};
</script>
\ No newline at end of file
...@@ -302,7 +302,7 @@ export default { ...@@ -302,7 +302,7 @@ export default {
} }
// 添加的提交 // 添加的提交
data.productId = this.product.id; data.productId = this.product.id;
data.lineChannelList = this.lineChannelList data.lineChannelList = this.selectedRoutes
createProductPrice(data).then(response => { createProductPrice(data).then(response => {
this.$modal.msgSuccess("请求成功"); this.$modal.msgSuccess("请求成功");
this.$router.replace('/product/product-price') this.$router.replace('/product/product-price')
......
...@@ -9,12 +9,12 @@ ...@@ -9,12 +9,12 @@
:key="dict.value" :label="dict.label" :value="dict.value"/> :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="始发地ID" prop="departureId"> <!-- <el-form-item label="始发地ID" prop="departureId">-->
<el-input v-model="queryParams.departureId" placeholder="请输入始发地ID" clearable @keyup.enter.native="handleQuery"/> <!-- <el-input v-model="queryParams.departureId" placeholder="请输入始发地ID" clearable @keyup.enter.native="handleQuery"/>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="目的地ID列表" prop="objectiveIds"> <!-- <el-form-item label="目的地ID列表" prop="objectiveIds">-->
<el-input v-model="queryParams.objectiveIds" placeholder="请输入目的地ID列表" clearable @keyup.enter.native="handleQuery"/> <!-- <el-input v-model="queryParams.objectiveIds" placeholder="请输入目的地ID列表" clearable @keyup.enter.native="handleQuery"/>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd" <el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" /> type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" />
...@@ -40,25 +40,31 @@ ...@@ -40,25 +40,31 @@
<!-- 列表 --> <!-- 列表 -->
<el-table v-loading="loading" :data="list"> <el-table v-loading="loading" :data="list">
<el-table-column label="序号" type="index" width="50px" />
<el-table-column label="重泡货类型" align="center" prop="type"> <el-table-column label="重泡货类型" align="center" prop="type">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ZHONG_PAO_TYPE" :value="scope.row.type" /> <dict-tag :type="DICT_TYPE.ZHONG_PAO_TYPE" :value="scope.row.type" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="临介值" align="center" prop="edge" /> <el-table-column label="传输方式" align="center" prop="transportTypes">
<el-table-column label="公式" align="center" prop="formulas" />
<el-table-column label="传输方式ids" align="center" prop="transportTypes">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-for="item in scope.row.transportTypes.split(',')"><dict-tag :type="DICT_TYPE.TRANSPORT_TYPE" :value="item" />, </span> <span v-for="item in scope.row.transportTypes.split(',')"><dict-tag :type="DICT_TYPE.TRANSPORT_TYPE" :value="item" />, </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="始发地ID" align="center" prop="departureId" :formatter="departureFormatter"/> <el-table-column label="始发地" align="center" prop="departureId" :formatter="departureFormatter"/>
<el-table-column label="目的地ID列表" align="center" prop="objectiveIds" :formatter="objectiveFormatter"/> <el-table-column label="目的地" align="center" prop="objectiveIds" :formatter="objectiveFormatter"/>
<el-table-column label="临介值标准" align="center" prop="edge" />
<el-table-column label="计算公式" align="center" prop="formulas" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="状态" align="center" prop="transportTypes">
<template v-slot="scope">
<el-switch v-model="scope.row.status" @change="handleStatusChange(scope.row)" :active-value="0" :inactive-value="1"></el-switch>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
...@@ -84,13 +90,13 @@ ...@@ -84,13 +90,13 @@
<el-form-item label="传输方式" prop="transportTypes"> <el-form-item label="传输方式" prop="transportTypes">
<dict-selector :type="DICT_TYPE.TRANSPORT_TYPE" v-model="form.transportTypes" multiple form-type="checkbox" :filter="transportTypesFilter"></dict-selector> <dict-selector :type="DICT_TYPE.TRANSPORT_TYPE" v-model="form.transportTypes" multiple form-type="checkbox" :filter="transportTypesFilter"></dict-selector>
</el-form-item> </el-form-item>
<el-form-item label="始发地ID" prop="departureId"> <el-form-item label="始发地" prop="departureId">
<el-select v-model="form.departureId" placeholder="请选择始发地"> <el-select v-model="form.departureId" placeholder="请选择始发地">
<el-option label="全部" :value="0"></el-option> <el-option label="全部" :value="0"></el-option>
<el-option v-for="(item) in warehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> <el-option v-for="(item) in warehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="目的地ID列表" prop="objectiveIds"> <el-form-item label="目的地" prop="objectiveIds">
<!-- <el-input v-model="form.objectiveIds" placeholder="请输入目的地ID列表" />--> <!-- <el-input v-model="form.objectiveIds" placeholder="请输入目的地ID列表" />-->
<el-select v-model="form.objectiveIds" placeholder="请选择目的地" multiple> <el-select v-model="form.objectiveIds" placeholder="请选择目的地" multiple>
<el-option label="全部" value="0"></el-option> <el-option label="全部" value="0"></el-option>
...@@ -124,6 +130,7 @@ import {parseTime} from "@/utils/ruoyi" ...@@ -124,6 +130,7 @@ import {parseTime} from "@/utils/ruoyi"
import DictSelector from "@/components/DictSelector" import DictSelector from "@/components/DictSelector"
import {getTradeCityList} from "@/api/ecw/region" import {getTradeCityList} from "@/api/ecw/region"
import {getWarehouseList} from "@/api/ecw/warehouse" import {getWarehouseList} from "@/api/ecw/warehouse"
import { CommonStatusEnum } from '@/utils/constants'
export default { export default {
name: "ZhongPao", name: "ZhongPao",
...@@ -177,6 +184,20 @@ export default { ...@@ -177,6 +184,20 @@ export default {
}) })
}, },
methods: { methods: {
handleStatusChange(row){
let text = row.status === CommonStatusEnum.ENABLE ? "启用" : "停用";
this.$modal.confirm('确认要' + text + '吗?').then(function() {
return updateZhongPao({
id: row.id,
status: row.status
})
}).then(() => {
this.$modal.msgSuccess(text + "成功");
}).catch(function() {
row.status = row.status === CommonStatusEnum.ENABLE ? CommonStatusEnum.DISABLE
: CommonStatusEnum.ENABLE;
});
},
departureFormatter(row, column, cellValue) { departureFormatter(row, column, cellValue) {
if (cellValue === 0) return '全部' if (cellValue === 0) return '全部'
return this.warehouseList.find(e => e.id === cellValue)?.titleZh return this.warehouseList.find(e => e.id === cellValue)?.titleZh
......
...@@ -4,31 +4,20 @@ ...@@ -4,31 +4,20 @@
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="关键字" prop="nickname"> <el-form-item label="关键字" prop="nickname">
<el-input v-model="queryParams.nickname" placeholder="请输入用户昵称" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.nickname" placeholder="搜索昵称、姓名、手机、Email" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item label="性别" prop="avatar"> <el-form-item label="成交" prop="mobile">
<el-input v-model="queryParams.avatar" placeholder="请输入头像" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.mobile" placeholder="请输入手机号" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item label="成交" prop="status"> <el-form-item label="认证" prop="password">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small"> <el-input v-model="queryParams.password" placeholder="请输入密码" clearable @keyup.enter.native="handleQuery"/>
<el-option label="请选择字典生成" value=""/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="认证" prop="status"> <el-form-item label="审核状态" prop="registerIp">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small"> <el-input v-model="queryParams.registerIp" placeholder="请输入注册 IP" clearable @keyup.enter.native="handleQuery"/>
<el-option label="请选择字典生成" value=""/>
</el-select>
</el-form-item>
<el-form-item label="审核状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
<el-option label="请选择字典生成" value=""/>
</el-select>
</el-form-item>
<el-form-item>
<el-button>搜索</el-button>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button>批量导出</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -36,217 +25,199 @@ ...@@ -36,217 +25,199 @@
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['member:user:create']">新增 v-hasPermi="['member:user:create']">新增</el-button>
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
:loading="exportLoading" v-hasPermi="['member:user:export']">导出</el-button>
v-hasPermi="['member:user:export']">导出
</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<!-- 列表 --> <!-- 列表 -->
<el-table :data="list"> <el-table v-loading="loading" :data="list">
<el-table-column <el-table-column label="公司名称" align="center" prop="enterpriseName" />
type="selection" <el-table-column label="用户昵称" align="center" prop="nickname" />
width="55"> <el-table-column label="真实姓名" align="center" prop="identityName" />
<el-table-column label="手机号" show-overflow-tooltip align="center" prop="mobile" >
</el-table-column>
<el-table-column label="成交" align="center" prop="" show-overflow-tooltip />
<el-table-column label="认证" align="center" prop="" />
<el-table-column label="状态" align="center" prop="status" />
<el-table-column label="身份证审核状态" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.AUDIT_STATUS" :value="scope.row.identityAuditStatus" ></dict-tag>
</template>
</el-table-column> </el-table-column>
<el-table-column label="公司名称" align="center" prop="id"/> <el-table-column label="营业执照审核状态" align="center" prop="createTime" width="180">
<el-table-column label="用户名称" align="center" prop="nickname"/> <template slot-scope="scope">
<el-table-column label="真实姓名" align="center" prop="avatar"/> <dict-tag :type="DICT_TYPE.AUDIT_STATUS" :value="scope.row.enterpriseAuditStatus" ></dict-tag>
<el-table-column label="手机号" align="center" prop="status"/> </template>
<el-table-column label="成交" align="center" prop="mobile"/>
<el-table-column label="认证" align="center" prop="password"/>
<el-table-column label="状态" align="center" prop="registerIp"/>
<el-table-column label="身份证审核状态" align="center" prop="loginIp"/>
<el-table-column label="营业执照审核状态" align="center" prop="loginDate" width="180">
</el-table-column> </el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <el-table-column label="创建时间" align="center" prop="createTime" width="180">
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" <span>{{ parseTime(scope.row.createTime) }}</span>
v-hasPermi="['member:user:update']">修改 </template>
</el-button> </el-table-column>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200px">
v-hasPermi="['member:user:delete']">删除 <template slot-scope="scope" >
</el-button> <el-button size="mini" type="text" @click="guarantee(scope.row)">保函/证书</el-button>
<el-button size="mini" type="text" @click="operationLogFn(scope.row)">操作日志</el-button>
<el-button size="mini" type="text" @click="identityFn(scope.row , '1')">身份证</el-button>
<el-button size="mini" type="text" @click="identityFn(scope.row, '2')">营业执照</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination="getList"/> @pagination="getList"/>
<!-- 操作日志 -->
<el-dialog
title="操作日志"
:visible.sync="operationShow"
width="70%">
<div>
<el-table>
<el-table-column label="标题" align="center" prop="id"/>
<el-table-column label="操作内容" align="center" prop="id"/>
<el-table-column label="操作人" align="center" prop="id"/>
<el-table-column label="操作时间" align="center" prop="id"/>
<el-table-column label="操作ip" align="center" prop="id"/>
</el-table>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="operationShow = false">取 消</el-button>
<el-button type="primary" @click="operationShow = false">确 定</el-button>
</span>
</el-dialog>
<!--保函,证书 -->
<el-dialog <el-dialog
title="保函/证书" title="保函/证书"
:visible.sync="certificateShow" :visible.sync="guaranteeShow"
:before-close="()=>{guaranteeUrl = ''; guaranteeShow = false;}"
width="50%"> width="50%">
<div> <el-form>
<el-row :gutter="10"> <el-form-item label="保函/证书">
<el-col :span="6"> <el-upload <el-row :gutter="20" type="flex" justify="center" >
class="upload-demo" <el-col :span="12"><el-input v-model="guaranteeUrl" ></el-input></el-col>
action="https://jsonplaceholder.typicode.com/posts/" <el-col :span="4"><div style="height: 45px;overflow: hidden;">
multiple <file-upload v-model="guaranteeUrl" :fileType="['png', 'jpg', 'jpeg','pdf']" :limit="1" :isShowTip="false"></file-upload>
:limit="3"> </div></el-col>
<el-button size="small" type="primary">点击上传</el-button> <el-col :span="6">
<div slot="tip" class="el-upload__tip">可上传图片,pdf文档</div> <div>可上传图片,pdf文档</div>
</el-upload></el-col> </el-col>
<el-col :span="6"><el-button>保存</el-button></el-col> </el-row>
</el-row> </el-form-item>
</div> </el-form>
<span slot="footer" class="dialog-footer"> <div style="text-align: center;"><el-button @click="setGuarantee">保 存</el-button></div>
<el-button @click="certificateShow = false">取 消</el-button>
<el-button type="primary" @click="certificateShow = false">确 定</el-button>
</span>
</el-dialog> </el-dialog>
<el-dialog <el-dialog
title="认证" title="操作日志"
:visible.sync="attestationShow" :visible.sync="operationLogShow"
width="50%"> width="50%">
<div> <el-table :data="operationLogList">
<div> <el-table-column label="标题" prop="title"></el-table-column>
<el-menu class="el-menu-demo" mode="horizontal" :default-active="identitySwitching" @select="handleSelect"> <el-table-column label="操作内容" prop="content"></el-table-column>
<el-menu-item index="1">身份证</el-menu-item> <el-table-column label="操作人" prop="userId"></el-table-column>
<el-menu-item index="2">营业执照</el-menu-item> <el-table-column label="操作时间">
</el-menu> <template v-slot:default ="scope">
</div> {{parseTime(scope.row.createTime) }}
<div class="authenticationForm" v-if="identitySwitching == 1"> </template>
<el-form label-position="left" label-width="100px"> </el-table-column>
<el-form-item label="姓名"> <el-table-column label="操作ip" prop="ip"></el-table-column>
<el-input style="width: 200px"></el-input> </el-table>
</el-form-item>
<el-form-item label="证件类型">
<dict-selector :type="DICT_TYPE.CERTIFICATE_TYPE" placeholder="请选择证件类型"></dict-selector>
</el-form-item>
<el-form-item label="证件号码">
<el-input style="width: 200px;"></el-input>
</el-form-item>
<el-form-item label="证件正面照">
<el-row>
<el-col :span="10">
<el-input style="width: 200px;"></el-input>
</el-col>
<el-col :span="6">
<el-upload>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</el-col>
<el-col :span="6">
<el-image></el-image>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="证件背面照">
<el-row>
<el-col :span="10">
<el-input style="width: 200px;"></el-input>
</el-col>
<el-col :span="6">
<el-upload>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</el-col>
<el-col :span="6">
<el-image></el-image>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="审核状态"></el-form-item>
<el-form-item label="审核时间"></el-form-item>
<el-form-item label="审核备注"></el-form-item>
</el-form>
</div>
<div class="authenticationForm" v-else>
<el-form label-position="left" label-width="100px">
<el-form-item label="企业名称">
<el-input style="width: 200px"></el-input>
</el-form-item>
<el-form-item label="企业法人">
<el-input style="width: 200px;"></el-input>
</el-form-item>
<el-form-item label="证件号码">
<el-input style="width: 200px;"></el-input>
</el-form-item>
<el-form-item label="证件正面照">
<el-row>
<el-col :span="10">
<el-input style="width: 200px;"></el-input>
</el-col>
<el-col :span="6">
<el-upload>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</el-col>
<el-col :span="6">
<el-image></el-image>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="证件背面照">
<el-row>
<el-col :span="10">
<el-input style="width: 200px;"></el-input>
</el-col>
<el-col :span="6">
<el-upload>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</el-col>
<el-col :span="6">
<el-image></el-image>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="审核状态"></el-form-item>
<el-form-item label="审核时间"></el-form-item>
<el-form-item label="审核备注"></el-form-item>
</el-form>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="certificateShow = false">取 消</el-button>
<el-button type="primary" @click="certificateShow = false">确 定</el-button>
</span>
</el-dialog> </el-dialog>
<el-dialog
title="认证"
:visible.sync="attestationShow"
width="80%">
<div>
<el-tabs v-model="activeName" type="border-card">
<el-tab-pane label="身份证" name="1">
<div style="width: 500px;padding:0 40px;box-sizing: border-box;">
<el-form label-position="left" label-width="100px">
<el-form-item label="姓名">
<el-input></el-input>
</el-form-item>
<el-form-item label="证件类型">
<el-input></el-input>
</el-form-item>
<el-form-item label="证件号码">
<el-input></el-input>
</el-form-item>
<el-form-item label="证件正面照">
<div>
<el-input style="margin-bottom: 20px"></el-input>
<ImageUpload :isShowTip="false" :limit="1"></ImageUpload>
</div>
</el-form-item>
<el-form-item label="证件背面照">
<div>
<el-input style="margin-bottom: 20px"></el-input>
<ImageUpload :isShowTip="false" :limit="1"></ImageUpload>
</div>
</el-form-item>
<el-form-item label="审核状态">
{{}}
</el-form-item>
<el-form-item label="审核时间">
{{}}
</el-form-item>
</el-form>
</div>
</el-tab-pane>
<el-tab-pane label="营业执照" name="2">
<div style="width: 500px;padding:0 40px;box-sizing: border-box;">
<el-form label-position="left" label-width="100px">
<el-form-item label="企业名称">
<el-input></el-input>
</el-form-item>
<el-form-item label="企业法人">
<el-input></el-input>
</el-form-item>
<el-form-item label="证件号码">
<el-input></el-input>
</el-form-item>
<el-form-item label="证件照">
<div>
<el-input style="margin-bottom: 20px"></el-input>
<ImageUpload :isShowTip="false" :limit="1"></ImageUpload>
</div>
</el-form-item>
<el-form-item label="附件">
<el-input></el-input>
</el-form-item>
<el-form-item label="审核状态">{{}}</el-form-item>
<el-form-item label="审核时间">{{}}</el-form-item>
</el-form>
</div>
</el-tab-pane>
</el-tabs>
<div style="text-align: center;margin-top: 20px;">
<el-button type="primary">提交审核</el-button>
<el-button>取 消</el-button>
</div>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import {createUser, updateUser, deleteUser, getUser, getUserPage, exportUserExcel} from "@/api/member/user"; import {
import {DICT_TYPE} from "@/utils/dict"; createUser,
updateUser,
deleteUser,
getUser,
getUserPage,
exportUserExcel,
operationLogApi,
seTupdateBackletter,
memberGetAuthIdcardInfo
} from "@/api/member/user";
import {DICT_TYPE, getDictDatas} from "@/utils/dict";
import FileUpload from "@/components/FileUpload"
import ImageUpload from "@/components/ImageUpload";
import uploadImage from "@/components/UploadImage";
let stateTitle = {
0:'未审核',
1:'审核中',
2:'审核通过',
3:'审核不通过'
}
export default { export default {
name: "User", name: "User",
components: {}, components: {
FileUpload,
ImageUpload,uploadImage
},
data() { data() {
return { return {
identitySwitching:"1", guaranteeUrl:undefined,
DICT_TYPE, DICT_TYPE,
operationShow: false,//操作日志 // audit_status
certificateShow: false,//保函证书, activeName:"1",
attestationShow:false,//认证 // 遮罩层
loading: true,
// 导出遮罩层 // 导出遮罩层
exportLoading: false, exportLoading: false,
// 显示搜索条件 // 显示搜索条件
...@@ -265,25 +236,33 @@ export default { ...@@ -265,25 +236,33 @@ export default {
queryParams: { queryParams: {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
nickname: null, isDeal:undefined,// 是否成交
avatar: null, searchKey:undefined,//关键字
status: null, auditStatus:undefined,//审核状态
mobile: null, authType:undefined,//关键字
password: null,
registerIp: null,
loginIp: null,
}, },
stateTitle,
// 表单参数 // 表单参数
form: {}, form: {},
// 表单校验 // 表单校验
rules: { rules: {
nickname: [{required: true, message: "用户昵称不能为空", trigger: "blur"}], nickname: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }],
avatar: [{required: true, message: "头像不能为空", trigger: "blur"}], avatar: [{ required: true, message: "头像不能为空", trigger: "blur" }],
status: [{required: true, message: "状态不能为空", trigger: "blur"}], status: [{ required: true, message: "状态不能为空", trigger: "blur" }],
mobile: [{required: true, message: "手机号不能为空", trigger: "blur"}], mobile: [{ required: true, message: "手机号不能为空", trigger: "blur" }],
password: [{required: true, message: "密码不能为空", trigger: "blur"}], password: [{ required: true, message: "密码不能为空", trigger: "blur" }],
registerIp: [{required: true, message: "注册 IP不能为空", trigger: "blur"}], registerIp: [{ required: true, message: "注册 IP不能为空", trigger: "blur" }],
} },
publicObj:undefined,
operationLogShow:false,
guaranteeShow:false,
operationLogFrom:{
page:1,
row:10,
userId:undefined
},
operationLogList:[],
attestationShow:false
}; };
}, },
created() { created() {
...@@ -292,6 +271,7 @@ export default { ...@@ -292,6 +271,7 @@ export default {
methods: { methods: {
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true;
// 处理查询参数 // 处理查询参数
let params = {...this.queryParams}; let params = {...this.queryParams};
this.addBeginAndEndTime(params, this.dateRangeLoginDate, 'loginDate'); this.addBeginAndEndTime(params, this.dateRangeLoginDate, 'loginDate');
...@@ -300,6 +280,7 @@ export default { ...@@ -300,6 +280,7 @@ export default {
getUserPage(params).then(response => { getUserPage(params).then(response => {
this.list = response.data.list; this.list = response.data.list;
this.total = response.data.total; this.total = response.data.total;
this.loading = false;
}); });
}, },
/** 取消按钮 */ /** 取消按钮 */
...@@ -340,15 +321,36 @@ export default { ...@@ -340,15 +321,36 @@ export default {
this.open = true; this.open = true;
this.title = "添加用户"; this.title = "添加用户";
}, },
/** 修改按钮操作 */ // 保函证书
handleUpdate(row) { guarantee(row) {
this.reset(); this.publicObj = row;
const id = row.id; this.guaranteeShow = true;
getUser(id).then(response => { },
this.form = response.data; // 操作日志
this.open = true; operationLogFn(row){
this.title = "修改用户"; this.publicObj = row;
}); this.operationLogFrom.page = 1;
this.operationLogFrom.userId = row.id
this.operationLogShow = true;
this.operationLogList = [];
this.getOperationLogList();
},
getOperationLogList(){
operationLogApi(this.operationLogFrom).then(r=>{
if(r.code === 0){
this.operationLogList = r.data.list
}
})
},
setGuarantee(){
seTupdateBackletter({userId:this.publicObj.id,backLetter:this.guaranteeUrl}).then(r=>{
if(r.code === 0){
this.guaranteeShow = false;
this.guaranteeUrl = true;
this.$message.success('保存成功');
}
})
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
...@@ -376,13 +378,12 @@ export default { ...@@ -376,13 +378,12 @@ export default {
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const id = row.id; const id = row.id;
this.$modal.confirm('是否确认删除用户编号为"' + id + '"的数据项?').then(function () { this.$modal.confirm('是否确认删除用户编号为"' + id + '"的数据项?').then(function() {
return deleteUser(id); return deleteUser(id);
}).then(() => { }).then(() => {
this.getList(); this.getList();
this.$modal.msgSuccess("删除成功"); this.$modal.msgSuccess("删除成功");
}).catch(() => { }).catch(() => {});
});
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
...@@ -394,23 +395,26 @@ export default { ...@@ -394,23 +395,26 @@ export default {
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出 // 执行导出
this.$modal.confirm('是否确认导出所有用户数据项?').then(() => { this.$modal.confirm('是否确认导出所有用户数据项?').then(() => {
this.exportLoading = true; this.exportLoading = true;
return exportUserExcel(params); return exportUserExcel(params);
}).then(response => { }).then(response => {
this.$download.excel(response, '${table.classComment}.xls'); this.$download.excel(response, '${table.classComment}.xls');
this.exportLoading = false; this.exportLoading = false;
}).catch(() => { }).catch(() => {});
}); },
identityFn(row,val){
this.attestationShow = true;
this.activeName = val;
this.publicObj = row;
if(val == 1){
this.getIdentityDetails();
}
}, },
handleSelect(val){ getIdentityDetails(){
console.log(val) memberGetAuthIdcardInfo({userId:this.publicObj.id}).then(r=>{
this.identitySwitching = val console.log(r);
})
} }
} }
}; };
</script> </script>
<style lang="scss" scoped>
.authenticationForm{
padding-top: 20px;
}
</style>
...@@ -79,10 +79,10 @@ ...@@ -79,10 +79,10 @@
<el-input v-model="form.titleEn" placeholder="请输入标题英文" /> <el-input v-model="form.titleEn" placeholder="请输入标题英文" />
</el-form-item> </el-form-item>
<el-form-item label="内容中文" prop="contentZh"> <el-form-item label="内容中文" prop="contentZh">
<editor v-model="form.contentZh" :min-height="192"/> <editor v-model="form.contentZh" :min-height="192"/>
</el-form-item> </el-form-item>
<el-form-item label="内容英语" prop="contentEn"> <el-form-item label="内容英语" prop="contentEn">
<editor v-model="form.contentZh" :min-height="192"/> <editor v-model="form.contentEn" :min-height="192"/>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status"> <el-radio-group v-model="form.status">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment