Commit 350d6b86 authored by jiuping520's avatar jiuping520

Merge remote-tracking branch 'origin/dev' into dev

parents e6bdde78 1cb3e1c7
......@@ -89,7 +89,7 @@ export function getWaitForDistributionList(query) {
})
}
// 确认
// 移交
export function handOverCustomer(data) {
return request({
url: '/ecw/customer/handOver',
......@@ -107,11 +107,10 @@ export function getPublicList(query) {
})
}
// 公海池客户
export function getMineList(query) {
//捞取
export function setFishing(query){
return request({
url: '/ecw/customer/get-mine',
method: 'get',
params: query
url:'',
})
}
......@@ -60,3 +60,12 @@ export function exportProductExcel(query) {
responseType: 'blob'
})
}
// 批量更新产品
export function batchUpdateProduct(data) {
return request({
url: '/ecw/product/batchUpdate',
method: 'put',
data: data
})
}
......@@ -134,7 +134,11 @@ export default {
*/
name: "CustomerFollow",
props: {
customerId: Number
/**
* 如果是客户投诉跟进,则id为客户投诉id;如果是客户跟进,则id为客户id
*/
id: Number,
customerId: Number,
},
data() {
return {
......@@ -179,7 +183,7 @@ export default {
resetCustomerFollowForm() {
this.customerFollow.form = {
"bizId": this.customerId,
"bizId": this.id,
"contactName": undefined,
"feedback": undefined,
"followMethod": undefined,
......@@ -190,7 +194,7 @@ export default {
}
},
getCustomerFollowList() {
getCustomerFollowPage({bizId: this.customerId}).then(r => {
getCustomerFollowPage({bizId: this.id}).then(r => {
this.customerFollowList = r.data.list
})
}
......
......@@ -73,7 +73,7 @@ export default {
number: 0,
uploadList: [],
baseUrl: process.env.VUE_APP_BASE_API,
uploadFileUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址
uploadFileUrl: process.env.VUE_APP_BASE_API + "/app-api/file/upload", // 上传的文件服务器地址
headers: {
Authorization: "Bearer " + getToken(),
},
......@@ -152,7 +152,8 @@ export default {
},
// 上传成功回调
handleUploadSuccess(res) {
this.uploadList.push({ name: res.fileName, url: res.fileName });
// todo 接口返回值没有文件名
this.uploadList.push({ name: res.data, url: res.data });
if (this.uploadList.length === this.number) {
this.fileList = this.fileList.concat(this.uploadList);
this.uploadList = [];
......
......@@ -63,7 +63,7 @@ export const DICT_TYPE = {
PAY_REFUND_ORDER_STATUS: 'pay_refund_order_status', // 退款订单状态
PAY_REFUND_ORDER_TYPE: 'pay_refund_order_type', // 退款订单类别
ECW_BANK_TYPE: 'bank_type', // 银行账号类型
ECW_DATA_SOURCE: 'data_source', // 数据来源
// ECW_DATA_SOURCE: 'data_source', // 数据来源
ECW_REGION_TYPE: 'region_trade_type', // 区域类型
ECW_TRANSPORT_TYPE: 'transport_type', //货运方式
ECW_CHARGE_TYPE: 'warehouse_charge_type', //仓储收费方式
......
......@@ -5,7 +5,12 @@
const baseURL = process.env.VUE_APP_BASE_API
// 日期格式化
/**
* 日期格式化
* @param time {String|Number|Date} 时间
* @param pattern {String} '{y}-{m}-{d} {h}:{i}:{s}'
* @returns {string|null}
*/
export function parseTime(time, pattern) {
if (arguments.length === 0 || !time) {
return null
......
......@@ -26,12 +26,12 @@
<el-option v-for="dict in bankTypeDatas" :key="parseInt(dict.value)" :label="dict.label" :value="parseInt(dict.value)"/>
</el-select>
</el-form-item>
<el-form-item label="数据来源" prop="source">
<!-- <el-input v-model="queryParams.source" placeholder="请输入数据来源字典(pc端,mobile端)" clearable @keyup.enter.native="handleQuery"/>-->
<el-select v-model="queryParams.source" placeholder="请选择数据来源" clearable style="width: 240px">
<el-option v-for="dict in sourceDatas" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<!-- <el-form-item label="数据来源" prop="source">-->
<!--&lt;!&ndash; <el-input v-model="queryParams.source" placeholder="请输入数据来源字典(pc端,mobile端)" clearable @keyup.enter.native="handleQuery"/>&ndash;&gt;-->
<!-- <el-select v-model="queryParams.source" placeholder="请选择数据来源" clearable style="width: 240px">-->
<!-- <el-option v-for="dict in sourceDatas" :key="dict.value" :label="dict.label" :value="dict.value"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="用户状态" clearable style="width: 240px">
<el-option v-for="dict in statusDictDatas" :key="parseInt(dict.value)" :label="dict.label" :value="parseInt(dict.value)"/>
......@@ -73,11 +73,11 @@
<dict-tag :type="DICT_TYPE.ECW_BANK_TYPE" :value="scope.row.baType"/>
</template>
</el-table-column>
<el-table-column label="数据来源" align="center" prop="source" >
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_DATA_SOURCE" :value="scope.row.source"/>
</template>
</el-table-column>
<!-- <el-table-column label="数据来源" align="center" prop="source" >-->
<!-- <template slot-scope="scope">-->
<!-- <dict-tag :type="DICT_TYPE.ECW_DATA_SOURCE" :value="scope.row.source"/>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="状态" align="center" prop="status" />-->
<el-table-column label="状态" key="status" align="center">
......@@ -130,14 +130,14 @@
</el-select>
</el-form-item>
<el-form-item label="数据字典" prop="source">
<!-- <el-select v-model="form.baType" placeholder="请选择类型">-->
<!-- <el-option label="请选择字典生成" value="" />-->
<!-- </el-select>-->
<el-select v-model="form.source" placeholder="请选择数据来源" clearable style="width: 240px">
<el-option v-for="dict in sourceDatas" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<!-- <el-form-item label="数据字典" prop="source">-->
<!-- &lt;!&ndash; <el-select v-model="form.baType" placeholder="请选择类型">&ndash;&gt;-->
<!-- &lt;!&ndash; <el-option label="请选择字典生成" value="" />&ndash;&gt;-->
<!-- &lt;!&ndash; </el-select>&ndash;&gt;-->
<!-- <el-select v-model="form.source" placeholder="请选择数据来源" clearable style="width: 240px">-->
<!-- <el-option v-for="dict in sourceDatas" :key="dict.value" :label="dict.label" :value="dict.value"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="状态" prop="status">-->
<!-- <el-radio-group v-model="form.status">-->
<!--&lt;!&ndash; <el-radio label="1">请选择字典生成</el-radio>&ndash;&gt;-->
......
......@@ -147,7 +147,7 @@
</el-table>
</el-tab-pane>
<el-tab-pane label="跟进">
<customer-follow ref="customerFollow" :customer-id="id"></customer-follow>
<customer-follow ref="customerFollow" :id="id" :customer-id="id"></customer-follow>
</el-tab-pane>
<el-tab-pane label="客户投诉">
<customer-complaint ref="customerComplaint" :customer-id="id" hidden-search></customer-complaint>
......
......@@ -128,7 +128,7 @@
</el-form-item>
</el-form>
<customer-follow v-show="!!this.form.id" :customer-id="form.id"></customer-follow>
<customer-follow v-if="!!this.form.id" :id="form.id" :customer-id="form.customerId"></customer-follow>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
......
This diff is collapsed.
<template>
<div class="app-container">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="适用商品" prop="idList" v-if="form.type != 1">
<products-selector v-model="form.idList" />
</el-form-item>
<el-form-item label="货柜位置" prop="containerLocation">
<el-checkbox style="width: 100px" v-model="checked[0]">需要修改</el-checkbox>
<dict-selector v-if="checked[0]" :type="DICT_TYPE.ECW_CONTAINER_LOCATION" v-model="form.containerLocation" />
</el-form-item>
<el-form-item label="出运要求" prop="requirements">
<el-checkbox style="width: 100px;margin-right: 0;" v-model="checked[1]">需要修改</el-checkbox>
<el-checkbox v-if="checked[1]" true-label="1" v-model="form.requirements">证书要求(支持多证书)</el-checkbox>
</el-form-item>
<el-form-item label="方数要求" prop="square">
<el-checkbox style="width: 100px" v-model="checked[2]">需要修改</el-checkbox>
<el-input v-if="checked[2]" v-model="form.square" placeholder="" style="width: 200px"></el-input>
</el-form-item>
<el-form-item label="包装要求" prop="packaging">
<el-checkbox style="width: 100px" v-model="checked[3]">需要修改</el-checkbox>
<dict-selector v-if="checked[3]" :type="DICT_TYPE.ECW_PACKAGING_TYPE" v-model="form.packaging" />
</el-form-item>
<el-form-item label="需要预约入仓" prop="needBook">
<el-checkbox style="width: 100px" v-model="checked[4]">需要修改</el-checkbox>
<dict-selector v-if="checked[4]" formatter="bool" form-type="radio" :type="DICT_TYPE.ECW_YESNO" v-model="form.needBook" :formater="Boolean" />
</el-form-item>
<el-form-item label="每日入仓上限" prop="dayLimit">
<el-checkbox style="width: 100px" v-model="checked[5]">需要修改</el-checkbox>
<el-input v-if="checked[5]" placeholder="" v-model="form.dayLimit" style="width: 200px">
<template slot="suffix">立方米</template>
</el-input>
</el-form-item>
<el-form-item label="商品特性" prop="attrId">
<el-checkbox style="width: 100px" v-model="checked[6]">需要修改</el-checkbox>
<dict-selector v-if="checked[6]" form-type="checkbox" :type="DICT_TYPE.ECW_ORDER_ATTR" v-model="form.attrId" multiple />
</el-form-item>
<!-- <el-form-item label="商品材质" prop="">
<el-checkbox style="width: 100px" v-model="checked[7]">需要修改</el-checkbox>
<dict-selector v-if="checked[7]" form-type="checkbox" :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" v-model="form.status" multiple />
</el-form-item> -->
<el-form-item>
<el-button type="primary" @click="submitForm">确 定</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 { batchUpdateProduct } from '@/api/ecw/product';
import CustomersSelector from '@/components/CustomersSelector'
import { getDictData } from '@/utils/dict'
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: {
"attrId": undefined,
"containerLocation": undefined,
"dayLimit": undefined,
"idList": [],
"isAllProduct": undefined,
"needBook": undefined,
"packaging": undefined,
"requirements": undefined,
"square": undefined
},
// 表单校验
rules: {},
checked: [false, false, false, false, false, false, false]
};
},
computed: {
},
watch: {
'form.idList'(val) {
if (val.length > 0) {
this.form.isAllProduct = undefined
} else {
this.form.isAllProduct = 1
}
}
},
created() {
this.reset()
},
methods: {
/** 表单重置 */
reset() {
this.form = {
"attrId": undefined,
"containerLocation": undefined,
"dayLimit": undefined,
"idList": [],
"isAllProduct": undefined,
"needBook": undefined,
"packaging": undefined,
"requirements": undefined,
"square": undefined
};
this.resetForm("form");
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (!valid) {
return;
}
let data = Object.assign({}, this.form)
batchUpdateProduct(data).then((response) => {
this.$modal.msgSuccess("修改成功");
this.$router.back();
});
});
},
},
};
</script>
<style scoped lang="scss">
.fee-item {
padding: 5px 0;
> div {
margin-right: 5px;
}
}
.coupon-list {
max-height: 200px;
border: 1px solid #ccc;
padding: 10px;
overflow-y: auto;
}
</style>
\ No newline at end of file
......@@ -10,7 +10,7 @@
<el-tab-pane label="未授权客户" name="first">
<el-form :inline="true" class="demo-form-inline">
<el-form-item label="关键字">
<el-input v-model="customerKey" placeholder="审批人"></el-input>
<el-input v-model="list1QueryParams.customerKey" placeholder="请填入关键字"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="filterCustomer">查询</el-button>
......@@ -36,6 +36,9 @@
</template>
</el-table-column>
</el-table>
<pagination v-show="total1 > 0" :total="total1" :page.sync="list1QueryParams.pageNo" :limit.sync="list1QueryParams.pageSize"
@pagination="getList1" style="height: 40px"/>
</el-tab-pane>
<el-tab-pane label="已授权客户" name="second">
<el-table
......@@ -49,18 +52,48 @@
prop="phone"
label="客户号码">
</el-table-column>
<el-table-column
prop="fileUrl"
label="授权证明">
<template v-slot="{row}">
<div v-if="!!row.fileUrl && row.fileUrl.length > 0">
<span v-for="(item, index) in row.fileUrl.split(',')">
<a :href="item" target="_blank">附件{{ index + 1 }}</a>,
</span>
</div>
</template>
</el-table-column>
<el-table-column
prop="startTime"
width="200px"
:formatter="(row) => parseTime(row.startTime, '{y}-{m}-{d}') + ' - ' + parseTime(row.endTime, '{y}-{m}-{d}')"
label="授权时间">
</el-table-column>
<el-table-column
prop="feeScale"
:formatter="(row) => getDictDataLabel(DICT_TYPE.BRAND_CUSTOMER_CHARGING_MODEL, row.feeScale)"
label="收费标准">
</el-table-column>
<el-table-column
prop="createUsername"
label="添加人">
</el-table-column>
<el-table-column
width="100px"
label="操作">
<template v-slot="{row}">
<el-button type="primary" size="mini" @click="handleDelete(row.id)">删除</el-button>
<el-button type="danger" size="mini" @click="handleDelete(row.id)">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total2 > 0" :total="total2" :page.sync="list2QueryParams.pageNo" :limit.sync="list2QueryParams.pageSize"
@pagination="getList2" style="height: 40px"/>
</el-tab-pane>
</el-tabs>
</el-dialog>
<!-- 添加弹窗 -->
<el-dialog
title="添加"
:visible.sync="addDialog.dialogVisible"
......@@ -81,7 +114,9 @@
<el-form-item label="收费模式">
<dict-selector v-model="addDialog.form.feeScale" :type="DICT_TYPE.BRAND_CUSTOMER_CHARGING_MODEL"></dict-selector>
</el-form-item>
<el-form-item label="授权证明"></el-form-item>
<el-form-item label="授权证明">
<file-upload v-model="addDialog.form.fileUrl"></file-upload>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addDialog.dialogVisible = false">取 消</el-button>
......@@ -99,12 +134,15 @@ import {
getProductBrandEmpowerPageUnauth
} from "@/api/ecw/productBrandEmpower"
import DictSelector from "@/components/DictSelector"
import {DICT_TYPE} from "@/utils/dict"
import { DICT_TYPE, getDictDataLabel } from '@/utils/dict'
import FileUpload from '@/components/FileUpload'
import { parseTime } from '@/utils/ruoyi'
export default {
name: "Empower",
components: {
DictSelector
DictSelector,
FileUpload
},
props: {
id: {
......@@ -120,11 +158,23 @@ export default {
data() {
return {
DICT_TYPE,
getDictDataLabel,
parseTime,
dialogVisible: false,
activeName: 'first',
customerKey: '',
total1: 0,
total2: 0,
list1: [],
list2: [],
list1QueryParams: {
pageNo: 1,
pageSize: 10,
customerKey: undefined
},
list2QueryParams: {
pageNo: 1,
pageSize: 10,
},
addDialog: {
dialogVisible: false,
......@@ -153,30 +203,52 @@ export default {
this.addDialog.dialogVisible = false
this.getList1()
this.getList2()
this.resetForm("form");
})
},
handleDatePick(e){
console.log(e)
},
handleClose() {},
filterCustomer() {},
filterCustomer() {
this.list1QueryParams.pageNo = 1
this.getList1()
},
handleAdd(row) {
this.addDialog.form.customerId = row.customerId
this.addDialog.form.customerName = row.customerName
this.addDialog.dialogVisible = true
},
handleDelete(id) {
deleteProductBrandEmpower(id).then(r => {
this.getList2()
})
this.$confirm('确认删除该用户的授权?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteProductBrandEmpower(id).then(r => {
this.getList1()
this.getList2()
this.$message({
type: 'success',
message: '撤销授权成功!'
});
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
});
},
getList1(){
getProductBrandEmpowerPageUnauth({productBrandId: this.id}).then(r => {
getProductBrandEmpowerPageUnauth({...this.list1QueryParams, productBrandId: this.id}).then(r => {
this.list1 = r.data.list
this.total1 = r.data.total
})
},
getList2() {
getProductBrandEmpowerPageAuth({productBrandId: this.id}).then(r => {
getProductBrandEmpowerPageAuth({...this.list2QueryParams, productBrandId: this.id}).then(r => {
this.list2 = r.data.list
})
}
......@@ -184,6 +256,9 @@ export default {
watch: {
visible(v){
if (v){
this.list1QueryParams.pageNo = 1
this.list2QueryParams.pageNo = 1
this.list1QueryParams.customerKey = ''
this.getList1()
this.getList2()
}
......
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