Browse Source

客戶管理修改

master
jiangyuying 5 years ago
parent
commit
e7ab4b4f77
  1. 43
      epmet-oper-web/.vscode/settings.json
  2. 2
      epmet-oper-web/public/index.html
  3. 266
      epmet-oper-web/src/views/modules/customer-manage/customer-manage.vue

43
epmet-oper-web/.vscode/settings.json

@ -0,0 +1,43 @@
{
"workbench.colorTheme": "One Monokai",
"window.zoomLevel": 1,
"terminal.integrated.fontWeightBold": "normal",
"workbench.iconTheme": "material-icon-theme",
// vscodetabsize
"editor.detectIndentation": false,
// tabsize
"editor.tabSize": 2,
// #
"editor.formatOnSave": false,
// #eslint
"eslint.autoFixOnSave": true,
//  vue 
"eslint.validate": [
"javascript",
"javascriptreact",
{
"language": "vue",
"autoFix": true
}
],
// #
"prettier.semi": false,
// #使
"prettier.singleQuote": true,
// #()
"javascript.format.insertSpaceBeforeFunctionParenthesis": true,
// #
"vetur.format.defaultFormatter.html": "js-beautify-html",
// #vuejsts
"vetur.format.defaultFormatter.js": "vscode-typescript",
"vetur.format.defaultFormatterOptions": {
"js-beautify-html": {
"wrap_attributes": "force-aligned"
// #vuehtml
}
},
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"git.enableSmartCommit": true
}

2
epmet-oper-web/public/index.html

@ -29,8 +29,8 @@
<!-- 开发环境 --> <!-- 开发环境 -->
<% if (process.env.VUE_APP_NODE_ENV === 'dev') { %> <% if (process.env.VUE_APP_NODE_ENV === 'dev') { %>
<!-- <script>window.SITE_CONFIG['apiURL'] = 'https://epmet-dev.elinkservice.cn/api';</script> -->
<script>window.SITE_CONFIG['apiURL'] = 'http://192.168.1.130:8080/api';</script> <script>window.SITE_CONFIG['apiURL'] = 'http://192.168.1.130:8080/api';</script>
<!-- <script>window.SITE_CONFIG['apiURL'] = 'http://localhost:8080/api';</script> -->
<% } %> <% } %>
<!-- 集成测试环境 dev --> <!-- 集成测试环境 dev -->
<% if (process.env.VUE_APP_NODE_ENV === 'prod:sit') { %> <% if (process.env.VUE_APP_NODE_ENV === 'prod:sit') { %>

266
epmet-oper-web/src/views/modules/customer-manage/customer-manage.vue

@ -1,6 +1,13 @@
<template> <template>
<div> <div>
<el-button type="primary" plain icon="el-icon-circle-plus-outline" style="margin-bottom:10px;" @click="toStep(2)">新增</el-button> <el-button
type="primary"
plain
icon="el-icon-circle-plus-outline"
style="margin-bottom:10px;"
@click="toStep(2)"
>新增</el-button
>
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never" class="aui-card--fill">
<el-table <el-table
v-loading="dataListLoading" v-loading="dataListLoading"
@ -8,8 +15,15 @@
border border
style="width: 100%;" style="width: 100%;"
@row-contextmenu="handleRowContext" @row-contextmenu="handleRowContext"
@cell-dblclick="handleRowContext"> @cell-dblclick="handleRowContext"
<el-table-column prop="logo" label="客户LOGO" header-align="left" align="left" width="100"> >
<el-table-column
prop="logo"
label="客户LOGO"
header-align="left"
align="left"
width="100"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-image <el-image
v-if="scope.row.logo" v-if="scope.row.logo"
@ -21,33 +35,81 @@
<!-- <img v-if="scope.row.logo" :src="scope.row.logo" class="customer-logo" /> --> <!-- <img v-if="scope.row.logo" :src="scope.row.logo" class="customer-logo" /> -->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="customerName" label="客户名称" header-align="left" align="left" width="300"></el-table-column> <el-table-column
<el-table-column label="操作" fixed="right" header-align="right" align="right"> prop="customerName"
label="客户名称"
header-align="left"
align="left"
width="300"
></el-table-column>
<el-table-column
label="操作"
fixed="right"
header-align="right"
align="right"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="small" v-if="!scope.row.hasRootAgency" @click="toSetUpStep(scope.row.customerId, 3)">根级组织设置</el-button> <el-button
<el-button size="small" v-if="!scope.row.hasManager" @click="toSetUpStep(scope.row.customerId, 4)">管理员设置</el-button> size="small"
<el-button size="small" @click="onOpenDetails(scope.row.customerId)">详情</el-button> v-if="!scope.row.hasRootAgency"
@click="toSetUpStep(scope.row.customerId, 3)"
>根级组织设置</el-button
>
<el-button
size="small"
v-if="!scope.row.hasManager"
@click="toSetUpStep(scope.row.customerId, 4)"
>管理员设置</el-button
>
<el-button size="small" @click="onOpenDetails(scope.row.customerId)"
>详情</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-card> </el-card>
<el-dialog @close="toStep(0)" width="850px" :visible.sync="centerDialogVisible" center :close-on-click-modal="false" :close-on-press-escape="false"> <el-dialog
@close="toStep(0)"
width="850px"
:visible.sync="centerDialogVisible"
center
:close-on-click-modal="false"
:close-on-press-escape="false"
>
<div v-if="step == 1"> <div v-if="step == 1">
<componentInfo :dataList="details"></componentInfo> <componentInfo :dataList="details"></componentInfo>
</div> </div>
<div class="add-c-box" v-if="step == 2"> <div class="add-c-box" v-if="step == 2">
<h2>客户信息</h2> <h2>客户信息</h2>
<el-form label-position="left" label-width="80px" :model="dataForm2" :rules="dataRule" ref="dataForm" @keyup.enter.native="submitStepHandle()" status-icon> <el-form
label-position="left"
label-width="80px"
:model="dataForm2"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="submitStepHandle()"
status-icon
>
<el-form-item prop="customerName" label="客户名称"> <el-form-item prop="customerName" label="客户名称">
<el-input v-model="dataForm2.customerName" key="customerName"> <el-input v-model="dataForm2.customerName" key="customerName">
<span slot="prefix" class="el-input__icon"> <span slot="prefix" class="el-input__icon">
<svg class="icon-svg" aria-hidden="true"><use xlink:href="#icon-user"></use></svg> <svg class="icon-svg" aria-hidden="true">
<use xlink:href="#icon-user"></use>
</svg>
</span> </span>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="organizationLevel" label="组织级别"> <el-form-item prop="organizationLevel" label="组织级别">
<el-select v-model="dataForm2.organizationLevel" key="organizationLevel"> <el-select
<el-option v-for="(val, key) in organizationLevels" :key="key" :label="key" :value="val"></el-option> v-model="dataForm2.organizationLevel"
key="organizationLevel"
>
<el-option
v-for="(val, key) in organizationLevels"
:key="key"
:label="key"
:value="val"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="logo" label="客户LOGO"> <el-form-item prop="logo" label="客户LOGO">
@ -57,7 +119,7 @@
:show-file-list="false" :show-file-list="false"
:on-success="handleAvatarSuccess" :on-success="handleAvatarSuccess"
> >
<img v-if="dataForm2.logo" :src="dataForm2.logo" class="avatar"> <img v-if="dataForm2.logo" :src="dataForm2.logo" class="avatar" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i> <i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
@ -66,47 +128,96 @@
</div> </div>
<div class="add-c-box" v-else-if="step == 3"> <div class="add-c-box" v-else-if="step == 3">
<h2>根级组织信息</h2> <h2>根级组织信息</h2>
<el-form label-position="left" label-width="80px" :model="dataForm3" :rules="dataRule" ref="dataForm" @keyup.enter.native="submitStepHandle()" status-icon> <el-form
label-position="left"
label-width="80px"
:model="dataForm3"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="submitStepHandle()"
status-icon
>
<el-form-item prop="agencyName" label="组织名称"> <el-form-item prop="agencyName" label="组织名称">
<el-input v-model="dataForm3.agencyName" key="agencyName"> <el-input v-model="dataForm3.agencyName" key="agencyName">
<span slot="prefix" class="el-input__icon"> <span slot="prefix" class="el-input__icon">
<svg class="icon-svg" aria-hidden="true"><use xlink:href="#icon-user"></use></svg> <svg class="icon-svg" aria-hidden="true">
<use xlink:href="#icon-user"></use>
</svg>
</span> </span>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="level" label="组织级别"> <el-form-item prop="level" label="组织级别">
<el-select v-model="dataForm3.level" key="level"> <el-select
<el-option v-for="(val, key) in organizationLevels" :key="key" :label="key" :value="val"></el-option> v-model="dataForm3.level"
key="level"
@change="onLevelChange"
>
<el-option
v-for="(val, key) in organizationLevels"
:key="key"
:label="key"
:value="val"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :prop="pcd" label="选择地区" :show-message="pcdError"> <el-form-item :prop="pcd" label="选择地区" :show-message="pcdError">
<v-distpicker :hideArea="isHideArea" :onlyProvince="isOnlyProvince" @province="onChangeProvince" @city="onChangeCity" @area="onChangeArea"></v-distpicker> <v-distpicker
:hideArea="isHideArea"
:province="dataForm3.province"
:city="dataForm3.city"
:area="dataForm3.district"
:onlyProvince="isOnlyProvince"
@province="onChangeProvince"
@city="onChangeCity"
@area="onChangeArea"
></v-distpicker>
</el-form-item> </el-form-item>
<el-form-item prop="areaCode" label="地区编码"> <el-form-item prop="areaCode" label="地区编码">
<el-input v-model="dataForm3.areaCode" key="areaCode" disabled></el-input> <el-input
v-model="dataForm3.areaCode"
key="areaCode"
disabled
></el-input>
</el-form-item> </el-form-item>
<el-button type="primary" @click="submitStepHandle">下一步</el-button> <el-button type="primary" @click="submitStepHandle">下一步</el-button>
</el-form> </el-form>
</div> </div>
<div class="add-c-box" v-else-if="step == 4"> <div class="add-c-box" v-else-if="step == 4">
<h2>管理员信息</h2> <h2>管理员信息</h2>
<el-form label-position="left" label-width="80px" :model="dataForm4" :rules="dataRule" ref="dataForm" @keyup.enter.native="submitStepHandle()" status-icon> <el-form
label-position="left"
label-width="80px"
:model="dataForm4"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="submitStepHandle()"
status-icon
>
<el-form-item prop="realName" label="姓名"> <el-form-item prop="realName" label="姓名">
<el-input v-model="dataForm4.realName" key="realName"> <el-input v-model="dataForm4.realName" key="realName">
<span slot="prefix" class="el-input__icon"> <span slot="prefix" class="el-input__icon">
<svg class="icon-svg" aria-hidden="true"><use xlink:href="#icon-user"></use></svg> <svg class="icon-svg" aria-hidden="true">
<use xlink:href="#icon-user"></use>
</svg>
</span> </span>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="gender" label="性别"> <el-form-item prop="gender" label="性别">
<el-select v-model="dataForm4.gender" key="gender"> <el-select v-model="dataForm4.gender" key="gender">
<el-option v-for="(val, key) in genders" :key="key" :label="val" :value="key"></el-option> <el-option
v-for="(val, key) in genders"
:key="key"
:label="val"
:value="key"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="mobile" label="手机号"> <el-form-item prop="mobile" label="手机号">
<el-input v-model.number="dataForm4.mobile" key="mobile"> <el-input v-model.number="dataForm4.mobile" key="mobile">
<span slot="prefix" class="el-input__icon"> <span slot="prefix" class="el-input__icon">
<svg class="icon-svg" aria-hidden="true"><use xlink:href="#icon-user"></use></svg> <svg class="icon-svg" aria-hidden="true">
<use xlink:href="#icon-user"></use>
</svg>
</span> </span>
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -117,7 +228,10 @@
</div> </div>
</template> </template>
<style lang="scss" src="@/assets/scss/modules/c-manage/customer-manage.scss"></style> <style
lang="scss"
src="@/assets/scss/modules/c-manage/customer-manage.scss"
></style>
<script> <script>
import mixinViewModule from '@/mixins/view-module' import mixinViewModule from '@/mixins/view-module'
@ -138,11 +252,11 @@ export default {
pcdError: true, pcdError: true,
centerDialogVisible: false, centerDialogVisible: false,
organizationLevels: { organizationLevels: {
'社区级': 'community', 社区级: 'community',
'乡(镇、街道)级': 'street', '乡(镇、街道)级': 'street',
'区县级': 'district', 区县级: 'district',
'市级': 'city', 市级: 'city',
'省级': 'province' 省级: 'province'
}, },
genders: ['未知', '男', '女'], genders: ['未知', '男', '女'],
step: 1, step: 1,
@ -185,7 +299,8 @@ export default {
} }
}, },
components: { components: {
VDistpicker, componentInfo VDistpicker,
componentInfo
}, },
methods: { methods: {
toStep (s) { toStep (s) {
@ -200,10 +315,9 @@ export default {
}, },
getCustomerDetail (id) { getCustomerDetail (id) {
const url = '/oper/crm/customer/detail' const url = '/oper/crm/customer/detail'
this.$http.post( this.$http
url, .post(url, { customerId: id })
{ customerId: id } .then(({ data: res }) => {
).then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg) return this.$message.error(res.msg)
} else { } else {
@ -211,7 +325,8 @@ export default {
this.details = res.data this.details = res.data
console.log(res.data) console.log(res.data)
} }
}).catch(() => { })
.catch(() => {
return this.$message.error('网络错误') return this.$message.error('网络错误')
}) })
}, },
@ -225,10 +340,9 @@ export default {
console.log(this.dataForm2) console.log(this.dataForm2)
const url = '/oper/crm/customer/add' const url = '/oper/crm/customer/add'
const dataForm = this.dataForm2 const dataForm = this.dataForm2
return this.$http.post( return this.$http
url, .post(url, dataForm)
dataForm .then(({ data: res }) => {
).then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg) return this.$message.error(res.msg)
} else { } else {
@ -236,7 +350,8 @@ export default {
console.log('提交信息成功' + this.step) console.log('提交信息成功' + this.step)
this.toStep(3) this.toStep(3)
} }
}).catch(() => { })
.catch(() => {
return this.$message.error('网络错误') return this.$message.error('网络错误')
}) })
}, },
@ -245,10 +360,9 @@ export default {
console.log(this.dataForm3) console.log(this.dataForm3)
const url = '/oper/crm/customer/addrootagency' const url = '/oper/crm/customer/addrootagency'
const dataForm = this.dataForm3 const dataForm = this.dataForm3
return this.$http.post( return this.$http
url, .post(url, dataForm)
dataForm .then(({ data: res }) => {
).then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg) return this.$message.error(res.msg)
} else { } else {
@ -256,7 +370,8 @@ export default {
console.log('提交信息成功' + this.step) console.log('提交信息成功' + this.step)
this.toStep(4) this.toStep(4)
} }
}).catch(() => { })
.catch(() => {
return this.$message.error('网络错误') return this.$message.error('网络错误')
}) })
}, },
@ -267,17 +382,17 @@ export default {
console.log(this.dataForm4) console.log(this.dataForm4)
const url = '/oper/crm/customer/addmanager' const url = '/oper/crm/customer/addmanager'
const dataForm = this.dataForm4 const dataForm = this.dataForm4
return this.$http.post( return this.$http
url, .post(url, dataForm)
dataForm .then(({ data: res }) => {
).then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg) return this.$message.error(res.msg)
} else { } else {
console.log('提交信息成功' + this.step) console.log('提交信息成功' + this.step)
this.toStep(0) this.toStep(0)
} }
}).catch(() => { })
.catch(() => {
return this.$message.error('网络错误') return this.$message.error('网络错误')
}) })
}, },
@ -300,6 +415,12 @@ export default {
this.toNextStep() this.toNextStep()
}) })
}, },
//
onLevelChange (e) {
this.dataForm3.province = ''
this.dataForm3.city = ''
this.dataForm3.district = ''
},
onChangeProvince (e) { onChangeProvince (e) {
this.dataForm3.areaCode = e.code this.dataForm3.areaCode = e.code
this.dataForm3.province = e.value this.dataForm3.province = e.value
@ -325,8 +446,9 @@ export default {
} }
}, },
handleAvatarSuccess (res, file) { handleAvatarSuccess (res, file) {
if (res.code === 0 && res.msg === 'success') this.dataForm2.logo = res.data.url if (res.code === 0 && res.msg === 'success') {
else this.$message.error(res.msg) this.dataForm2.logo = res.data.url
} else this.$message.error(res.msg)
}, },
beforeAvatarUpload (file) { beforeAvatarUpload (file) {
const isJPG = file.type === 'image/jpeg' const isJPG = file.type === 'image/jpeg'
@ -366,36 +488,16 @@ export default {
computed: { computed: {
dataRule () { dataRule () {
return { return {
customerName: [ customerName: [{ required: true, message: '请输入客户名称' }],
{ required: true, message: '请输入客户名称' } organizationLevel: [{ required: true, message: '请选择组织级别' }],
], agencyName: [{ required: true, message: '请输入组织名称' }],
organizationLevel: [ level: [{ required: true, message: '请选择组织级别' }],
{ required: true, message: '请选择组织级别' } areaCode: [{ required: true, message: '请输入地区编码' }],
], province: [{ required: true, message: '请选择省份', trigger: 'blur' }],
agencyName: [ city: [{ required: true, message: '请选择城市', trigger: 'blur' }],
{ required: true, message: '请输入组织名称' } district: [{ required: true, message: '请选择区县', trigger: 'blur' }],
], realName: [{ required: true, message: '请输入姓名' }],
level: [ gender: [{ required: true, message: '请输入性别' }],
{ required: true, message: '请选择组织级别' }
],
areaCode: [
{ required: true, message: '请输入地区编码' }
],
province: [
{ required: true, message: '请选择省份', trigger: 'blur' }
],
city: [
{ required: true, message: '请选择城市', trigger: 'blur' }
],
district: [
{ required: true, message: '请选择区县', trigger: 'blur' }
],
realName: [
{ required: true, message: '请输入姓名' }
],
gender: [
{ required: true, message: '请输入性别' }
],
mobile: [ mobile: [
{ required: true, message: '请输入手机号' }, { required: true, message: '请输入手机号' },
{ validator: this.checkMobile } { validator: this.checkMobile }

Loading…
Cancel
Save