|
|
|
<template>
|
|
|
|
<view class="page">
|
|
|
|
<uni-card v-if="customerId" :is-shadow="false" :border="false" is-full>
|
|
|
|
<view class="info">
|
|
|
|
<view class="name">{{ form.customerName }}</view>
|
|
|
|
<view class="text">客户编号:2124232</view>
|
|
|
|
<view class="text">客户类型:{{ customerType }}</view>
|
|
|
|
<view class="text">产品到期时间:{{ form.expireDate || '' }}</view>
|
|
|
|
</view>
|
|
|
|
</uni-card>
|
|
|
|
|
|
|
|
<uni-section title="基本信息" type="line">
|
|
|
|
<view class="form">
|
|
|
|
<uni-forms ref="form" :modelValue="form" :rules="rules" label-width="100" disabled>
|
|
|
|
<uni-forms-item label="客户名称" name="schoolId" required>
|
|
|
|
<uni-easyinput v-if="isDetail" v-model="form.customerName" disabled />
|
|
|
|
<hpy-form-select v-else placeholder="请选择学校" :dataList="schoolList" text="schoolName" name="schoolId" v-model="form.schoolId" @change="schoolChange" hideBorder hideArrow/>
|
|
|
|
</uni-forms-item>
|
|
|
|
<uni-forms-item label="省份">
|
|
|
|
<uni-easyinput v-model="form.provinceName" disabled />
|
|
|
|
</uni-forms-item>
|
|
|
|
<uni-forms-item label="城市">
|
|
|
|
<uni-easyinput v-model="form.cityName" disabled />
|
|
|
|
</uni-forms-item>
|
|
|
|
<uni-forms-item label="行业类型" name="industryClassId" required>
|
|
|
|
<uni-easyinput v-if="isDetail" v-model="form.industryClassName" disabled />
|
|
|
|
<uni-data-picker v-else placeholder="请选择行业类型" popup-title="请选择行业类型" preload :clear-icon="false" :localdata="industryClassList" :map="{text: 'industryClassName', value: 'industryClassId'}" v-model="form.industryClassId" @change="industryClassChange">
|
|
|
|
</uni-data-picker>
|
|
|
|
</uni-forms-item>
|
|
|
|
<uni-forms-item label="行业" name="industryId" required>
|
|
|
|
<uni-easyinput v-if="isDetail" v-model="form.industryName" disabled />
|
|
|
|
<uni-data-picker v-else placeholder="请选择行业" popup-title="请选择行业" preload :clear-icon="false" :localdata="industryList" :map="{text: 'industryName', value: 'industryId'}" v-model="form.industryId" :readonly="form.industryClassId ? false : true">
|
|
|
|
</uni-data-picker>
|
|
|
|
</uni-forms-item>
|
|
|
|
<uni-forms-item label="联系人姓名" name="name" required>
|
|
|
|
<uni-easyinput v-model="form.name" placeholder="请输入联系人姓名" :disabled="isDetail" />
|
|
|
|
</uni-forms-item>
|
|
|
|
<uni-forms-item label="手机" name="phone">
|
|
|
|
<uni-easyinput v-model="form.phone" placeholder="请输入手机" :disabled="isDetail" />
|
|
|
|
</uni-forms-item>
|
|
|
|
<uni-forms-item label="账号" name="account" required>
|
|
|
|
<uni-easyinput v-model="form.account" placeholder="请以院校首字母+admin的格式来设置" :disabled="isDetail" />
|
|
|
|
</uni-forms-item>
|
|
|
|
<uni-forms-item label="职务" name="position">
|
|
|
|
<uni-easyinput v-model="form.position" placeholder="请输入职务" :disabled="isDetail" />
|
|
|
|
</uni-forms-item>
|
|
|
|
<uni-forms-item label="邮箱" name="email">
|
|
|
|
<uni-easyinput v-model="form.email" placeholder="请输入邮箱" :disabled="isDetail" />
|
|
|
|
</uni-forms-item>
|
|
|
|
<uni-forms-item label="产品到期时间">
|
|
|
|
<uni-datetime-picker type="datetime" return-type="timestamp" v-model="form.expireDate" disabled />
|
|
|
|
</uni-forms-item>
|
|
|
|
<uni-forms-item label="客户类型">
|
|
|
|
<uni-easyinput v-model="customerType" disabled />
|
|
|
|
</uni-forms-item>
|
|
|
|
</uni-forms>
|
|
|
|
<button v-if="!isDetail" type="primary" @click="submit">提交</button>
|
|
|
|
</view>
|
|
|
|
</uni-section>
|
|
|
|
|
|
|
|
<view class="action" v-if="isDetail">
|
|
|
|
<view class="item" @click="toPage(`../clientDetail/clientDetail?customerId=${customerId}`)">
|
|
|
|
<uni-icons class="icon" custom-prefix="iconfont" type="icon-edit" size="20" color="#959595"></uni-icons>
|
|
|
|
<view class="text">编辑</view>
|
|
|
|
</view>
|
|
|
|
<view class="item" @click="toPage('../ordered/ordered')">
|
|
|
|
<uni-icons class="icon" custom-prefix="iconfont" type="icon-product" size="20" color="#959595"></uni-icons>
|
|
|
|
<view class="text">已订阅产品</view>
|
|
|
|
</view>
|
|
|
|
<view class="item" @click="toPage('../orders/orders')">
|
|
|
|
<uni-icons class="icon" custom-prefix="iconfont" type="icon-dingdan" size="20" color="#959595"></uni-icons>
|
|
|
|
<view class="text">订单</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import { queryCustomerDetails, querySchool, queryIndustryClass, queryIndustry, queryCustomerIsExists, addCustomer, updateCustomer } from '@/apis/modules/client.js'
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
isDetail: false,
|
|
|
|
customerId: '',
|
|
|
|
// 客户类型
|
|
|
|
customerTypeList: [{
|
|
|
|
name: '正式',
|
|
|
|
value: 1
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: '试用',
|
|
|
|
value: 2
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: '到期',
|
|
|
|
value: 3
|
|
|
|
}],
|
|
|
|
nameRepeat: false,
|
|
|
|
schoolList: [],
|
|
|
|
industryClassList: [],
|
|
|
|
industryList: [],
|
|
|
|
form: {
|
|
|
|
countries: '中国',
|
|
|
|
customerId: '',
|
|
|
|
customerName: '',
|
|
|
|
industryClassId: '',
|
|
|
|
industryId: '',
|
|
|
|
provinceId: '',
|
|
|
|
provinceName: '',
|
|
|
|
account: '',
|
|
|
|
name: '',
|
|
|
|
phone: '',
|
|
|
|
position: '',
|
|
|
|
cityId: '',
|
|
|
|
cityName: '',
|
|
|
|
customerType: '',
|
|
|
|
expireDate: '',
|
|
|
|
email: '',
|
|
|
|
schoolId: ''
|
|
|
|
},
|
|
|
|
// 校验规则
|
|
|
|
rules: {
|
|
|
|
schoolId: {
|
|
|
|
rules: [{
|
|
|
|
required: true,
|
|
|
|
errorMessage: '请选择客户'
|
|
|
|
}]
|
|
|
|
},
|
|
|
|
industryClassId: {
|
|
|
|
rules: [{
|
|
|
|
required: true,
|
|
|
|
errorMessage: '请选择行业类型'
|
|
|
|
}]
|
|
|
|
},
|
|
|
|
industryId: {
|
|
|
|
rules: [{
|
|
|
|
required: true,
|
|
|
|
errorMessage: '请选择行业'
|
|
|
|
}]
|
|
|
|
},
|
|
|
|
name: {
|
|
|
|
rules: [{
|
|
|
|
required: true,
|
|
|
|
errorMessage: '联系人姓名不能为空'
|
|
|
|
}]
|
|
|
|
},
|
|
|
|
account: {
|
|
|
|
rules: [{
|
|
|
|
required: true,
|
|
|
|
errorMessage: '账号不能为空'
|
|
|
|
}]
|
|
|
|
},
|
|
|
|
},
|
|
|
|
customerType: '',
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onLoad(option) {
|
|
|
|
this.customerId = option.customerId
|
|
|
|
this.isDetail = !!option.show
|
|
|
|
|
|
|
|
option.customerId && this.getInfo()
|
|
|
|
// 非详情才需要查询学校和行业
|
|
|
|
if (!this.isDetail) {
|
|
|
|
this.getSchool()
|
|
|
|
this.getIndustryClass()
|
|
|
|
}
|
|
|
|
// 设置标题
|
|
|
|
uni.setNavigationBarTitle({
|
|
|
|
title: option.customerId ?
|
|
|
|
(option.show ?
|
|
|
|
'客户详情' :
|
|
|
|
'编辑客户') :
|
|
|
|
'新增客户'
|
|
|
|
})
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
// 获取详情
|
|
|
|
getInfo() {
|
|
|
|
queryCustomerDetails({
|
|
|
|
customerId: this.customerId
|
|
|
|
}).then(({ result }) => {
|
|
|
|
const { customer } = result
|
|
|
|
this.form = customer
|
|
|
|
this.customerType = this.customerTypeList.find(e => e.value === customer.customerType).name
|
|
|
|
}).catch(e => {})
|
|
|
|
},
|
|
|
|
// 获取学校列表
|
|
|
|
getSchool() {
|
|
|
|
querySchool({
|
|
|
|
schoolName: '',
|
|
|
|
provinceId: '',
|
|
|
|
cityId: ''
|
|
|
|
}).then(({ list }) => {
|
|
|
|
this.schoolList = list
|
|
|
|
}).catch(res => {})
|
|
|
|
},
|
|
|
|
// 客户名称选择回调
|
|
|
|
schoolChange() {
|
|
|
|
const { form } = this
|
|
|
|
const { schoolId } = form
|
|
|
|
console.log(33, form)
|
|
|
|
const school = this.schoolList.find(e => e.schoolId === schoolId)
|
|
|
|
form.customerName = school.schoolName
|
|
|
|
form.provinceId = school.provinceId
|
|
|
|
form.provinceName = school.provinceName
|
|
|
|
form.cityId = school.cityId
|
|
|
|
form.cityName = school.cityName
|
|
|
|
queryCustomerIsExists({
|
|
|
|
schoolId
|
|
|
|
}).then(res => {
|
|
|
|
this.nameRepeat = false
|
|
|
|
}).catch(res => {
|
|
|
|
this.nameRepeat = true
|
|
|
|
})
|
|
|
|
},
|
|
|
|
// 获取行业类
|
|
|
|
getIndustryClass() {
|
|
|
|
queryIndustryClass().then(({ list }) => {
|
|
|
|
this.industryClassList = list
|
|
|
|
}).catch(res => {})
|
|
|
|
},
|
|
|
|
// 行业分类选择回调
|
|
|
|
industryClassChange() {
|
|
|
|
this.getIndustry()
|
|
|
|
},
|
|
|
|
// 获取行业
|
|
|
|
getIndustry() {
|
|
|
|
queryIndustry({
|
|
|
|
industryClassId: this.form.industryClassId
|
|
|
|
}).then(({ list }) => {
|
|
|
|
this.industryList = list
|
|
|
|
}).catch(res => {})
|
|
|
|
},
|
|
|
|
// 跳转
|
|
|
|
toPage(path) {
|
|
|
|
this.$util.to(path)
|
|
|
|
},
|
|
|
|
// 提交
|
|
|
|
submit(ref) {
|
|
|
|
this.$refs.form.validate().then(res => {
|
|
|
|
if (this.nameRepeat) return this.$util.errMsg('客户已存在!')
|
|
|
|
if (this.customerId) {
|
|
|
|
updateCustomer(this.form).then(res => {
|
|
|
|
this.$util.sucMsg('编辑成功')
|
|
|
|
setTimeout(() => {
|
|
|
|
this.$util.to('../clients/clients')
|
|
|
|
}, 1500)
|
|
|
|
}).catch(res => {})
|
|
|
|
} else {
|
|
|
|
addCustomer(this.form).then(res => {
|
|
|
|
this.$util.sucMsg('添加成功')
|
|
|
|
setTimeout(() => {
|
|
|
|
uni.navigateBack()
|
|
|
|
}, 1500)
|
|
|
|
}).catch(res => {})
|
|
|
|
}
|
|
|
|
}).catch(err => {})
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
.page {
|
|
|
|
padding-bottom: 55px;
|
|
|
|
}
|
|
|
|
.info {
|
|
|
|
.name {
|
|
|
|
font-size: 16px;
|
|
|
|
color: #333;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.form {
|
|
|
|
padding: 15px;
|
|
|
|
background-color: #fff;
|
|
|
|
}
|
|
|
|
.action {
|
|
|
|
z-index: 2;
|
|
|
|
position: fixed;
|
|
|
|
bottom: 0;
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-around;
|
|
|
|
width: 100%;
|
|
|
|
padding: 5px 10px;
|
|
|
|
background-color: #fff;
|
|
|
|
border-top: 1px solid #f3f3f3;
|
|
|
|
.item {
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
.text {
|
|
|
|
font-size: 10px;
|
|
|
|
color: #959595;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|