客户联调

dev_2022-05-11
yujialong 3 years ago
parent ad92cd3e3b
commit e6b84e58f5
  1. 4
      src/setting.js
  2. 19
      src/utils/api.js
  3. 210
      src/views/customer/AddCustomer.vue
  4. 47
      src/views/order/AddOrder.vue
  5. 29
      src/views/parner/staff.vue

@ -9,8 +9,8 @@ let jumpPath = `${location.origin}/judgmentPoint`
let host = `${location.origin}:9000/`
if (isDev) {
jumpPath = "http://192.168.31.125:8087/"; // 本地调试-需要启动本地判分点系统
host = 'http://39.108.250.202:9000/'
// host = 'http://192.168.31.151:9000/'// 榕
// host = 'http://39.108.250.202:9000/'
host = 'http://192.168.31.151:9000/'// 榕
// host = 'http://192.168.31.137:9000/'// 赓
} else if (isPro) {
jumpPath = "http://www.huorantech.cn/judgmentPoint/";

@ -2,6 +2,7 @@ import Setting from "@/setting";
const host = Setting.apiBaseURL
const uploadURL = Setting.uploadURL
const host1 = 'http://192.168.31.151:9000/'
export default {
@ -16,14 +17,14 @@ export default {
checkWorkNumOrAccount: `occupationlab/architecture/checkWorkNumOrAccount`, // 新增/编辑学生前:校验学号或者学生账号
// 订单管理
orderAdd: `nakadai/nakadai/order/add`,// 订单添加
orderDelete: `nakadai/nakadai/order/delete`,// 删除定单
orderDetail: `nakadai/nakadai/order/get`,// 订单详情
orderList: `nakadai/nakadai/order/list`,// 订单列表
orderUpdate: `nakadai/nakadai/order/update`,// 订单更新
renew: `nakadai/nakadai/orderOther/renew`,// 续费信息管理-post
ship: `nakadai/nakadai/orderOther/ship`,// 处理时的订单发货管理-post
getOrderOtherTime: `nakadai/nakadai/orderOther/getOrderOtherTime`,
orderAdd: `${host1}nakadai/nakadai/order/add`,// 订单添加
orderDelete: `${host1}nakadai/nakadai/order/delete`,// 删除定单
orderDetail: `${host1}nakadai/nakadai/order/get`,// 订单详情
orderList: `${host1}nakadai/nakadai/order/list`,// 订单列表
orderUpdate: `${host1}nakadai/nakadai/order/update`,// 订单更新
renew: `${host1}nakadai/nakadai/orderOther/renew`,// 续费信息管理-post
ship: `${host1}nakadai/nakadai/orderOther/ship`,// 处理时的订单发货管理-post
getOrderOtherTime: `${host1}nakadai/nakadai/orderOther/getOrderOtherTime`,
queryAccountIsExist: `liuwanr/userInfo/queryServerAccountIsExist`, //查询账号是否存在
@ -37,6 +38,8 @@ export default {
doAssign: `data/data/permission/doAssign`,
updateCustomerByRoleId: `nakadai/nakadai/customer/updateCustomerByRoleId`,
checkEmailOrPhone: `nakadai/nakadai/customer/checkEmailOrPhone`, // 新增客户前:校验手机号或者邮箱
getProductsSubscribedByCustomers: `nakadai/nakadai/customer/getProductsSubscribedByCustomers`,
orderBulkDisableEnable: `/nakadai/nakadai/orderOther/orderBulkDisableEnable`,
resetPwdCustomer: `nakadai/nakadai/customer/resetPwd`,
queryCustomerIsExists: `nakadai/nakadai/customer/queryCustomerIsExists`,

@ -83,45 +83,51 @@
<ul class="filter">
<li>
<label>产品类型</label>
<el-select v-model="form.provinces" clearable placeholder="请选择产品类型" @change="getCity">
<el-option v-for="(item,index) in orderTypeList" :key="index" :label="item.name" :value="item.id"></el-option>
<el-select v-model="form2.productType" clearable placeholder="请选择产品类型">
<el-option v-for="(item,index) in productTypeList" :key="index" :label="item.name" :value="item.id"></el-option>
</el-select>
</li>
<li>
<label>订阅状态</label>
<el-select v-model="form.provinces" clearable placeholder="请选择订阅状态" @change="getCity">
<el-option v-for="(item,index) in subStatusList" :key="index" :label="item.name" :value="item.id"></el-option>
<el-select v-model="form2.status" clearable placeholder="请选择订阅状态" @change="filterForm2">
<el-option v-for="(item,index) in subStatusList" :key="index" :label="item.name" :value="item.name"></el-option>
</el-select>
</li>
<li>
<el-input style="width: 250px;" placeholder="请输入产品名称" prefix-icon="el-icon-search" v-model="keyWord" clearable></el-input>
<el-input style="width: 250px;" placeholder="请输入产品名称" prefix-icon="el-icon-search" clearable v-model="form2.keyword"></el-input>
</li>
</ul>
<div>
<el-button type="primary" @click="batchImport">导出列表</el-button>
<el-button type="primary">导出列表</el-button>
</div>
</div>
<el-table :data="coursePermissionss" class="orderTable" stripe header-align="center" @selection-change="handleSelectionChange" row-key="customerId">
<el-table :data="products" class="orderTable" stripe header-align="center" @selection-change="handleSelectionChange" row-key="customerId">
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column>
<el-table-column type="index" width="100" label="序号" align="center">
</el-table-column>
<el-table-column prop="courseName" label="产品名称" align="center"></el-table-column>
<el-table-column prop="courseName" label="产品类型" align="center"></el-table-column>
<el-table-column prop="productName" label="产品名称" align="center"></el-table-column>
<el-table-column prop="courseName" label="产品类型" align="center">
<template slot-scope="scope">
{{scope.row.authority ? '课程' : '数据'}}
</template>
</el-table-column>
<el-table-column label="起止日期" align="center">
<template slot-scope="scope">
{{scope.row.startTime}}~{{scope.row.endTime}}
{{scope.row.status === '已过期' ? '' : scope.row.startTime + ' ~ ' + scope.row.endTime}}
<!-- <el-tooltip class="item" effect="dark" content="Top&nbsp;nbspCenter 提示文字" placement="top">
<i class="el-icon-warning warning"></i>
</el-tooltip> -->
</template>
</el-table-column>
<el-table-column label="剩余期限" align="center">
<template slot-scope="scope">
{{scope.row.remainingPeriod}}&nbsp;&nbsp;
{{scope.row.remain}}&nbsp;&nbsp;
</template>
</el-table-column>
<el-table-column prop="courseName" label="订阅状态" align="center"></el-table-column>
<el-table-column prop="status" label="订阅状态" align="center"></el-table-column>
<el-table-column label="产品状态" align="center">
<template slot-scope="scope">
<el-switch v-if="scope.row.ship" v-model="scope.row.isEnable" :active-value="1" :inactive-value="0" :active-text="scope.row.isEnable ? '启用' : '禁用'" :disabled="isDetail" @change="switchOff($event,scope.row,scope.$index)"></el-switch>
<span v-else>未发货</span>
<el-switch v-model="scope.row.isEnable" :active-value="0" :inactive-value="1" :active-text="scope.row.isEnable ? '禁用' : '启用'" :disabled="scope.row.status !== '生效中'" @change="switchOff($event,scope.row,scope.$index)"></el-switch>
</template>
</el-table-column>
</el-table>
@ -132,13 +138,13 @@
<ul class="filter">
<li>
<label>订单类型</label>
<el-select v-model="form.provinces" clearable placeholder="请选择订单类型" @change="getCity">
<el-option v-for="(item,index) in productTypeList" :key="index" :label="item.name" :value="item.id"></el-option>
<el-select v-model="form.provinces" clearable placeholder="请选择订单类型">
<el-option v-for="(item,index) in customerTypeList" :key="index" :label="item.name" :value="item.id"></el-option>
</el-select>
</li>
<li>
<label>订单状态</label>
<el-select v-model="form.provinces" clearable placeholder="请选择订单状态" @change="getCity">
<el-select v-model="form.provinces" clearable placeholder="请选择订单状态">
<el-option v-for="(item,index) in orderStatusList" :key="index" :label="item.name" :value="item.id"></el-option>
</el-select>
</li>
@ -147,19 +153,31 @@
</li>
</ul>
<div>
<el-input style="width: 250px;" placeholder="请输入订单编号、内容" prefix-icon="el-icon-search" v-model="keyWord" clearable></el-input>
<el-input style="width: 250px;" placeholder="请输入订单编号、内容" prefix-icon="el-icon-search" clearable></el-input>
</div>
</div>
<el-table :data="coursePermissionss" class="orderTable" stripe header-align="center" @selection-change="handleSelectionChange" row-key="customerId">
<el-table :data="orders" class="orderTable" stripe header-align="center" @selection-change="handleSelectionChange" row-key="customerId">
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column>
<el-table-column type="index" width="100" label="序号" align="center">
</el-table-column>
<el-table-column prop="courseName" label="订单编号" align="center"></el-table-column>
<el-table-column prop="courseName" label="订单内容" align="center"></el-table-column>
<el-table-column prop="courseName" label="订单金额(元)" align="center"></el-table-column>
<el-table-column prop="courseName" label="订单日期" align="center"></el-table-column>
<el-table-column prop="courseName" label="订单类型" align="center"></el-table-column>
<el-table-column prop="courseName" label="订单状态" align="center"></el-table-column>
<el-table-column prop="orderNumber" label="订单编号" align="center"></el-table-column>
<el-table-column prop="orderContent" label="订单内容" align="center">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top" style='width: 500px' v-if='scope.row.orderContent.length >14'>
<p> {{ scope.row.orderContent }}</p>
<div slot="reference" class="name-wrapper">
<el-tag size="medium" class='tags'>{{ scope.row.orderContent }}</el-tag>
</div>
</el-popover>
<span v-else>
{{ scope.row.orderContent }}
</span>
</template>
</el-table-column>
<el-table-column prop="orderAmount" label="订单金额(元)" align="center"></el-table-column>
<el-table-column prop="createTime" label="订单日期" align="center"></el-table-column>
<el-table-column prop="orderType" label="订单类型" align="center"></el-table-column>
<el-table-column prop="orderStatus" label="订单状态" align="center"></el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button type="text" @click="edit(scope.row)">订单详情</el-button>
@ -171,7 +189,7 @@
<div v-show="curTab === 'tab4'">
<div class="tool">
<div>
<el-input style="width: 350px;" placeholder="请输入订单编号、合同名称、合同编号、产品内容" prefix-icon="el-icon-search" v-model="keyWord" clearable></el-input>
<el-input style="width: 350px;" placeholder="请输入订单编号、合同名称、合同编号、产品内容" prefix-icon="el-icon-search" clearable></el-input>
</div>
</div>
<el-table :data="contractInformations" class="table" stripe header-align="center">
@ -205,7 +223,7 @@
<div v-show="curTab === 'tab5'">
<div class="tool">
<div>
<el-input style="width: 300px;" placeholder="请输入商务经理、手机号" prefix-icon="el-icon-search" v-model="keyWord" clearable></el-input>
<el-input style="width: 300px;" placeholder="请输入商务经理、手机号" prefix-icon="el-icon-search" clearable></el-input>
</div>
</div>
<el-table :data="contractInformations" class="table" stripe header-align="center">
@ -249,7 +267,8 @@ export default {
tab4: '合同信息',
tab5: '商务经理',
},
customerData: [],
products: [],
productAll: [],
showFile:false,
pdfVisible:false,
showImg:false,
@ -333,6 +352,12 @@ export default {
name: '到期',
value: 3
}],
form2: {
productType: '',
status: '全部',
keyword: ''
},
//
productTypeList: [
{
@ -371,6 +396,11 @@ export default {
name: '待生效'
}
],
pageOrder: 1,
pageSizeOrder: 10,
orders: [],
//
orderStatusList: [
{
@ -404,8 +434,17 @@ export default {
submiting: false //
};
},
watch: {
'form2.keyword': function(val) {
clearTimeout(this.searchTimer)
this.searchTimer = setTimeout(() => {
this.filterForm2()
},500)
},
},
mounted() {
this.getIndustryClass()
this.getProduct()
if(this.customerId){
this.$get(this.api.queryCustomerDetails,{
customerId: this.customerId
@ -413,6 +452,7 @@ export default {
let customer = res.result.customer
this.form = {
customerId: customer.customerId,
customerName: customer.customerName,
schoolId: customer.schoolId,
countries: customer.countries,
industryClassId: customer.industryClassId,
@ -427,6 +467,7 @@ export default {
name: customer.name,
position: customer.position,
}
this.getOrder()
this.contractInformations = res.result.contractInformations.filter(e => e.contractNumber || e.contractName); //
this.coursePermissionss = res.result.coursePermissionss
this.dataPermissionss = res.result.dataPermissionss
@ -439,6 +480,106 @@ export default {
}
},
methods: {
//
getProduct() {
this.$get(this.api.getProductsSubscribedByCustomers, {
customeId: this.customerId
}).then(({ data }) => {
data.map(e => {
const list = e.startAndEndTimeList
let connect = true //
list.map((n, i) => {
//
if (i) {
if (new Date(n.startTime).getTime() - 86400000 !== new Date(list[i - 1].endTime).getTime()) connect = false
}
})
//
const now = Date.now()
if (now < list[0].startTime) {
e.startTime = list[0].startTime
e.endTime = connect ? list[list.length - 1].endTime : list[0].endTime
e.status = '未生效'
} else if (now > list[list.length - 1].endTime) {
e.status = '已过期'
} else {
//
if (connect) {
e.startTime = list[0].startTime
e.endTime = list[list.length - 1].endTime
e.status = '生效中'
} else {
for (const i in list) {
const n = list[i]
if (now >= new Date(n.startTime).getTime() && now <= new Date(n.endTime).getTime()) {
//
e.startTime = n.startTime
e.endTime = n.endTime
e.status = '生效中'
e.orderEnable = n.isEnable
//
if (list[i + 1]) {
e.other = '还有‘’2022-7.01-8.01的订单还未生效'
}
break
} else if (i && now > new Date(list[i - 1].endTime).getTime() && now < new Date(n.startTime).getTime()) {
//
e.startTime = n.startTime
e.endTime = n.endTime
e.status = '未生效'
break
}
}
}
}
e.remain = this.getRemain(e.startTime, e.endTime) //
e.startTime = e.startTime.replace(' 00:00:00', '')
e.endTime = e.endTime.replace(' 00:00:00', '')
e.isEnable = connect ?
1 :
(e.status === '已过期' || !e.orderEnable) ?
0 :
e.status === '生效中' ?
1 :
0
})
this.products = data
this.productAll = data
}).catch(res => {})
},
//
getRemain(startTime, endTime) {
return (new Date(endTime).getTime() - new Date(startTime).getTime()) / 86400000
},
//
filterForm2() {
const list = this.productAll
const { productType, status, keyword } = this.form2
this.products = list.filter(e => e.status === status && e.productName.includes(keyword))
},
//
getOrder() {
let data = {
cityId: '',
customerName: this.form.customerName,
orderStatus: '',
orderType: '',
pageNo: this.pageOrder,
pageSize: this.pageSizeOrder,
provinceId: ''
};
this.$post(this.api.orderList, data).then(({ orderPage }) => {
orderPage.orders.forEach(e => {
e.orderType = this.orderTypeFn(e.orderType)
e.orderStatus = this.orderStatusFn(e.orderStatus)
e.orderNature = this.orderNatureFn(e.orderNature)
});
this.orders = orderPage.orders
this.totals = orderPage.total
}).catch(res => {})
},
tabChange(index) {
this.curTab = index
},
@ -513,12 +654,11 @@ export default {
this.industryList = res.list
}).catch(res => {});
},
switchOff(val,row,index) {
this.$get(this.api.updateEnabled,{
id: row.id,
isEnable: val
switchOff(val, row) {
this.$post(`${this.api.orderBulkDisableEnable}?isOpen=${val}`, {
ids: row.id
}).then(res => {
this.$message.success(val ? '启用成功' : '禁用成功')
this.$message.success(val ? '禁用成功' : '启用成功')
}).catch(res => {})
},
phoneChange() { //
@ -678,4 +818,8 @@ export default {
font-size: 26px;
color: #9278FF;
}
/deep/.warning {
margin-left: 5px;
color: #9278FF;
}
</style>

@ -53,6 +53,9 @@
<el-form-item label="邮箱">
<el-input disabled v-model="form.email" placeholder="请输入邮箱地址"></el-input>
</el-form-item>
<el-form-item label="商务经理">
<el-input v-model="form.businessManager" placeholder="请输入商务经理"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" :offset="2">
@ -175,6 +178,15 @@
</div>
</template>
</el-table-column>
<el-table-column label="折扣率" align="center" min-width="110">
<template slot-scope="scope">
<div class="small">
<el-input disabled v-model="scope.row.marketValue" placeholder=""
type="text"></el-input>
<span style="margin-left:5px"></span>
</div>
</template>
</el-table-column>
<el-table-column label="成交价" align="center" min-width="130">
<template slot-scope="scope">
<div class="small">
@ -188,6 +200,19 @@
</div>
</template>
</el-table-column>
<el-table-column label="结算价" align="center" min-width="130">
<template slot-scope="scope">
<div class="small">
<el-input :class="scope.row.finalPrice === '' && whetherSubmit?'red':''"
:disabled="viewDisabled"
@input="scope.row.finalPrice = scope.row.finalPrice.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')"
@change="[allAmount($event,scope.row),calculateDiscount($event,scope.row)]"
v-model="scope.row.settlementPrice"
type="text"></el-input>
<span style="margin-left:5px"></span>
</div>
</template>
</el-table-column>
<el-table-column label="折扣率 " align="center" min-width="100">
<template slot-scope="scope">
<el-input disabled v-model="scope.row.discountRate" placeholder=""
@ -305,7 +330,7 @@
</div>
</template>
</el-table-column>
<el-table-column label="市场价" align="center" min-width="160">
<el-table-column label="市场价" align="center" min-width="160">
<template slot-scope="scope">
<div class="small">
<el-input disabled v-model="scope.row.marketValue" placeholder=""
@ -314,7 +339,7 @@
</div>
</template>
</el-table-column>
<el-table-column label="成交价" align="center" min-width="170">
<el-table-column label="成交价" align="center" min-width="170">
<template slot-scope="scope">
<div class="small">
<el-input :class="scope.row.finalPrice === '' && whetherSubmit?'red':''"
@ -349,7 +374,7 @@
</template>
</el-table-column>
<!-- 金额自动计算计算方式账号数*成交价且可以手动修改保留两位小数 -->
<el-table-column label="总金额(元)" align="center" min-width="180">
<el-table-column label="成交价" align="center" min-width="180">
<template slot-scope="scope">
<div class="small">
<el-input :class="scope.row.totalAmount === '' && whetherSubmit?'red':''"
@ -361,6 +386,19 @@
</div>
</template>
</el-table-column>
<el-table-column label="结算价" align="center" min-width="130">
<template slot-scope="scope">
<div class="small">
<el-input :class="scope.row.finalPrice === '' && whetherSubmit?'red':''"
:disabled="viewDisabled"
@input="scope.row.finalPrice = scope.row.finalPrice.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')"
@change="[allAmount($event,scope.row),calculateDiscount($event,scope.row)]"
v-model="scope.row.settlementPrice"
type="text"></el-input>
<span style="margin-left:5px"></span>
</div>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="180">
<template slot-scope="scope">
<div class="flex-c-c">
@ -633,7 +671,8 @@ export default {
phone: "",
orderAmount: 0,
// orderId: this.$store.state.orderId,
customerName: ""//
customerName: "",//
businessManager: ''
},
coursePermissions: [],//
dataPlatformPermissions: [],//

@ -113,35 +113,6 @@
<p class="des">加盟商合作伙伴可以通过这个二维码加入 <em>城市合伙人计划</em></p>
<img width="200" src="https://pic.baike.soso.com/p/20130307/20130307133645-1010261466.jpg" alt="">
</el-dialog>
<el-dialog title="批量导入" :visible.sync="importVisible" width="24%" :close-on-click-modal="false">
<div style="text-align: center">
<div style="margin-bottom: 10px;">
<el-button type="primary" @click="download">模板下载<i class="el-icon-download el-icon--right"></i></el-button>
</div>
<el-upload
ref="importStaff"
name="file"
accept=".xls,.xlsx"
:on-remove="handleRemove"
:on-error="uploadError"
:on-success="uploadSuccess"
:before-remove="beforeRemove"
:limit="1"
:on-exceed="handleExceed"
:action="this.api.importStaff"
:file-list="uploadList"
:headers="headers"
>
<el-button type="primary" class="ml20">上传文件<i class="el-icon-upload2 el-icon--right"></i></el-button>
</el-upload>
<el-link v-if="uploadFaild" type="primary" @click="showFaild">部分数据导入失败查看失败原因</el-link>
</div>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="importVisible = false"> </el-button>
<el-button size="small" type="primary" @click="uploadSure"> </el-button>
</span>
</el-dialog>
</div>
</div>
</template>

Loading…
Cancel
Save