文章管理,素材管理,客户管理接口对接
This commit is contained in:
parent
688a7a10b3
commit
55431028c2
@ -23,4 +23,11 @@ export function edit(data) {
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del }
|
||||
export function tree() {
|
||||
return request({
|
||||
url: 'aerocraftAdminApi/emArea/areaTree',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
export default { tree, add, edit, del }
|
||||
|
||||
@ -2,7 +2,7 @@ import request from '@/utils/request'
|
||||
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/cnCustomer',
|
||||
url: 'aerocraftAdminApi/cnCustomer',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
@ -10,17 +10,26 @@ export function add(data) {
|
||||
|
||||
export function del(id) {
|
||||
return request({
|
||||
url: `api/cnCustomer/${id}`,
|
||||
url: `aerocraftAdminApi/cnCustomer/${id}`,
|
||||
method: 'delete',
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export function enable(data) {
|
||||
return request({
|
||||
url: 'api/cnCustomer',
|
||||
url: 'aerocraftAdminApi/cnCustomer',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, enable, del }
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'aerocraftAdminApi/cnCustomer',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, enable, del, edit }
|
||||
|
||||
@ -1,13 +1,19 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-button v-permission="permission.edit" :loading="crud.status.cu === 2" :disabled="disabledEdit" size="mini" type="primary" icon="el-icon-edit" @click.stop="crud.toEdit(data)" />
|
||||
<el-popover v-model="pop" v-permission="permission.del" placement="top" width="180" trigger="manual" @show="onPopoverShow" @hide="onPopoverHide">
|
||||
<el-button v-if="showPop.includes('edit')&&!editText" v-permission="permission.edit" :loading="crud.status.cu === 2" :disabled="disabledEdit" size="mini" type="primary" icon="el-icon-edit" @click.stop="crud.toEdit(data)" />
|
||||
<el-button v-if="showPop.includes('edit')&&editText" v-permission="permission.edit" :loading="crud.status.cu === 2" :disabled="disabledEdit" size="mini" type="primary" @click.stop="crud.toEdit(data)">
|
||||
{{ editText }}
|
||||
</el-button>
|
||||
<el-popover v-if="showPop.includes('del')" v-model="pop" v-permission="permission.del" placement="top" width="180" trigger="manual" @show="onPopoverShow" @hide="onPopoverHide">
|
||||
<p>{{ msg }}</p>
|
||||
<div style="text-align: right; margin: 0">
|
||||
<el-button size="mini" type="text" @click="doCancel">取消</el-button>
|
||||
<el-button :loading="crud.dataStatus[crud.getDataId(data)].delete === 2" type="primary" size="mini" @click="crud.doDelete(data)">确定</el-button>
|
||||
</div>
|
||||
<el-button slot="reference" :disabled="disabledDle" type="danger" icon="el-icon-delete" size="mini" @click.stop="toDelete" />
|
||||
<el-button v-if="!delText" slot="reference" :disabled="disabledDle" type="danger" icon="el-icon-delete" size="mini" @click.stop="toDelete" />
|
||||
<el-button v-else slot="reference" :disabled="disabledDle" type="danger" size="mini" @click.stop="toDelete">
|
||||
{{ delText }}
|
||||
</el-button>
|
||||
</el-popover>
|
||||
</div>
|
||||
</template>
|
||||
@ -35,7 +41,19 @@ export default {
|
||||
msg: {
|
||||
type: String,
|
||||
default: '确定删除本条数据吗?'
|
||||
}
|
||||
},
|
||||
showPop: {
|
||||
type: Array,
|
||||
default: () => { return ['edit','del'] }
|
||||
},
|
||||
delText: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
editText: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
@ -26,16 +26,16 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
|
||||
<el-form-item label="模块名称:" prop="moduleName">
|
||||
<el-select size="default" @change="getLabels" v-model="form.moduleName" placeholder="请选择模块" clearable>
|
||||
<el-option :data-op="item.id" v-for="(item,index) in moduleList" :key="index" :label="item.moduleName" :value="item.moduleName"></el-option>
|
||||
<el-form-item label="模块名称:" prop="moduleId">
|
||||
<el-select size="default" @change="getLabels" v-model="form.moduleId" placeholder="请选择模块" clearable>
|
||||
<el-option :data-op="item.id" v-for="(item,index) in moduleList" :key="index" :label="item.moduleName" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
|
||||
<el-form-item label="标签名称:" prop="labelName">
|
||||
<el-select @change="handleChangeLabel" size="default" v-model="form.labelName" placeholder="请选择标签" clearable class="ml10">
|
||||
<el-option :data-op="item.id" v-for="(item,index) in labelList" :key="index" :label="item.name" :value="item.name"></el-option>
|
||||
<el-form-item label="标签名称:" prop="labelId">
|
||||
<el-select @change="handleChangeLabel" size="default" v-model="form.labelId" placeholder="请选择标签" clearable class="ml10">
|
||||
<el-option :data-op="item.id" v-for="(item,index) in labelList" :key="index" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -83,7 +83,7 @@
|
||||
import WangEditor from '@/components/WangEditor/index'
|
||||
import { add, edit } from '@/api/platform/article'
|
||||
import { all } from '@/api/platform/module'
|
||||
import { tree } from '@/api/platform/label'
|
||||
import { list } from '@/api/platform/label'
|
||||
import { upload } from '@/utils/upload'
|
||||
import { mapGetters } from 'vuex'
|
||||
import { single } from '@/api/platform/article'
|
||||
@ -112,14 +112,14 @@ export default {
|
||||
loading: false,
|
||||
isAdd: this.$route.path==='/platform/article/add',
|
||||
form:{
|
||||
labelName: '',
|
||||
moduleName: '',
|
||||
labelId: '',
|
||||
moduleId: '',
|
||||
title: '',
|
||||
articleType: '',
|
||||
photo: '',
|
||||
text: '',
|
||||
top: false,// 是否置顶,这里提交的时候要换成0或1
|
||||
cplabelId: '',
|
||||
labelId: '',
|
||||
fileArray:[]// 编辑进来时,如果已经上传了图片,则保存图片地址
|
||||
},
|
||||
// 模块列表
|
||||
@ -127,8 +127,8 @@ export default {
|
||||
// 标签列表
|
||||
labelList: [],
|
||||
rules:{
|
||||
moduleName: { required: true, message: '请选择模块', trigger: 'change' },
|
||||
labelName: { required: true, message: '请输入标签名称', trigger: 'blur' },
|
||||
moduleId: { required: true, message: '请选择模块', trigger: 'change' },
|
||||
labelId: { required: true, message: '请输入标签名称', trigger: 'blur' },
|
||||
title: { required: true, message: '请输入标题', trigger: 'blur' },
|
||||
articleType: { required: true, message: '请选择文章类型', trigger: 'change' },
|
||||
top: { required: true, message: '请选择是否置顶', trigger: 'blur' },
|
||||
@ -166,7 +166,7 @@ export default {
|
||||
const data = res.data;
|
||||
const url = '/file/图片/' + data.newFileName;
|
||||
this.form.photo = url;
|
||||
this.form.fileArray = [this.baseApi+url];
|
||||
this.form.fileArray = [{url:this.baseApi+url}];
|
||||
this.coverHide = true;
|
||||
}else{
|
||||
this.$message.error('图片上传失败!');
|
||||
@ -204,16 +204,16 @@ export default {
|
||||
},
|
||||
// 根据模块id查询标签
|
||||
getLabels(val){
|
||||
this.form.labelName = '';
|
||||
if(!val){this.labelList=[]; this.form.cplabelId = '';return;}
|
||||
this.form.labelId = '';
|
||||
if(!val){this.labelList=[]; this.form.labelId = '';return;}
|
||||
const op = event.currentTarget;
|
||||
tree(op.dataset.op).then(res => {
|
||||
list(op.dataset.op).then(res => {
|
||||
this.labelList = res;
|
||||
});
|
||||
},
|
||||
// 标签选择
|
||||
handleChangeLabel(val){
|
||||
this.form.cplabelId = val ? event.currentTarget.dataset.op : '';
|
||||
this.form.labelId = val ? event.currentTarget.dataset.op : '';
|
||||
},
|
||||
// 获取文章详情-根据id
|
||||
getArticleDetailById(id){
|
||||
@ -223,6 +223,10 @@ export default {
|
||||
if(res){
|
||||
res.top = res.top ? true : false;
|
||||
this.form = res;
|
||||
this.form.labelId = res.cplabelId;
|
||||
list(res.moduleId).then(resp => {
|
||||
this.labelList = resp;
|
||||
});
|
||||
if(res.photo) {
|
||||
this.coverHide = true;
|
||||
this.form.photo = res.photo;
|
||||
@ -254,6 +258,8 @@ export default {
|
||||
delete articleForm.fileArray;
|
||||
const ft = this.isAdd? add : edit;
|
||||
ft(articleForm).then(res => {
|
||||
console.log(res);
|
||||
|
||||
this.$message.success(`文章${this.isAdd?'添加':'编辑'}成功!`);
|
||||
this.cancel();
|
||||
})
|
||||
|
||||
@ -41,7 +41,7 @@
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
|
||||
<el-form-item label="浏览数:">
|
||||
{{ data.view || 0 }}
|
||||
{{ data.viewCount || 0 }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
|
||||
@ -85,7 +85,7 @@ export default {
|
||||
photo: '',
|
||||
text: '',
|
||||
top: '',
|
||||
view: '',
|
||||
viewCount: '',
|
||||
},
|
||||
loading: false,
|
||||
}
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
style="width: 200px">
|
||||
<el-option v-for="(item,index) in labels" :key="index" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
<el-input v-model="query.title" clearable size="small" placeholder="请输入标题" style="width: 200px;"
|
||||
<el-input v-model="query.titleKeyword" clearable size="small" placeholder="请输入标题" style="width: 200px;"
|
||||
class="filter-item" @keyup.enter.native="crud.toQuery"/>
|
||||
<rrOperation />
|
||||
<el-button v-permission="permission.add" class="filter-item" size="mini" type="primary"
|
||||
@ -24,7 +24,7 @@
|
||||
<!--表格渲染-->
|
||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;">
|
||||
<el-table-column type="index" align="center" width="55" label="序号" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="title" label="标题" align="center" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="title" label="标题" align="center" :formatter="commonFormatter" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="articleType" label="文章类型" align="center"
|
||||
:formatter="(row) => { let dot = dict.article_type.find(item => Number(item.value) === row.articleType); return dot?dot.label:''}" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="top" label="置顶" align="center">
|
||||
@ -33,14 +33,14 @@
|
||||
<el-tag v-else type="danger">否</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :show-overflow-tooltip="true" prop="moduleName" label="模块名称" align="center" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="labelName" label="标签名称" align="center" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="moduleName" label="模块名称" align="center" :formatter="commonFormatter" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="labelName" label="标签名称" align="center" :formatter="commonFormatter" />
|
||||
<el-table-column :show-overflow-tooltip="true" label="链接" align="center" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" style="border-radius: 10px;" @click="copyLink(scope.row)">复制</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :show-overflow-tooltip="true" prop="createTime" label="创建时间" align="center" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="createTime" label="创建时间" align="center" :formatter="commonFormatter" />
|
||||
<el-table-column label="操作" align="center" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="small" type="text" @click="toShowDetail(scope.row)">查看详情</el-button>
|
||||
@ -102,6 +102,10 @@ export default {
|
||||
this.$message.success('复制成功');
|
||||
aux.remove();
|
||||
},
|
||||
// 通用格式化
|
||||
commonFormatter(row, column){
|
||||
return row[column.property] || '暂无';
|
||||
},
|
||||
// 查询模块
|
||||
getModules(){
|
||||
all().then(res => {
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<div>
|
||||
<!-- 搜索 -->
|
||||
<el-input
|
||||
v-model="query.name"
|
||||
v-model="query.keyword"
|
||||
clearable
|
||||
size="small"
|
||||
placeholder="输入素材名称"
|
||||
|
||||
@ -5,10 +5,10 @@
|
||||
<el-divider direction="vertical" />
|
||||
<span>区域架构</span>
|
||||
</div>
|
||||
<div class="al-tree">
|
||||
<div class="al-tree" v-loading="lamLoading">
|
||||
<div class="boxShadow" @click="active = list[0].id; crud.title = '区域'" />
|
||||
<el-tree default-expand-all :data="list" :indent="20" icon-class="#"
|
||||
:props="{ children: 'children', label: 'label' }" @node-click="handleNodeClick">
|
||||
:props="{ children: 'sons', label: 'name' }" @node-click="handleNodeClick">
|
||||
<template slot-scope="{node,data}">
|
||||
<div style="width:100%;" class="treeData"
|
||||
:class="{ activeBlue: active === data.id, activeIndent: node.level === 3 || node.level === 4 }"
|
||||
@ -23,7 +23,7 @@
|
||||
<svg-icon v-else style="width: 1rem;height: 1rem;opacity: 0.8;"
|
||||
:icon-class="node.level === 1 ? 'gongsilanse' : 'tree-table'" />
|
||||
</div>
|
||||
<div :title="data.label">{{ data.label }}</div>
|
||||
<div :title="data.name">{{ data.name }}</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-tree>
|
||||
@ -53,13 +53,13 @@
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer" style="margin-top: -30px;">
|
||||
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
||||
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">新增</el-button>
|
||||
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">保存</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!--表格渲染-->
|
||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;">
|
||||
<el-table-column :show-overflow-tooltip="true" prop="name" :label="`${crud.title}名称`" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="num" :label="`${crud.title === '区域' ? '景区' : '人员'}数量`" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="name" align="center" :label="`${crud.title}名称`" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="scenicNum" align="center" :label="`${crud.title === '区域' ? '景区' : '人员'}数量`" />
|
||||
<el-table-column v-if="checkPer(['admin', 'area:edit', 'area:del'])" label="操作" width="115" align="center"
|
||||
fixed="right">
|
||||
<template slot-scope="scope">
|
||||
@ -98,52 +98,36 @@ export default {
|
||||
{ required: true, message: `名称不能为空`, trigger: 'blur' },
|
||||
],
|
||||
},
|
||||
list: [],
|
||||
// {
|
||||
// id: 1,
|
||||
// label: '爱尚云',
|
||||
// children: [{
|
||||
// id: 2,
|
||||
// label: '北京区域',
|
||||
// children: []
|
||||
// },
|
||||
// {
|
||||
// id: 3,
|
||||
// label: '上海区域',
|
||||
// children: []
|
||||
// },
|
||||
// {
|
||||
// id: 4,
|
||||
// label: '深圳区域',
|
||||
// children: []
|
||||
// },
|
||||
// {
|
||||
// id: 5,
|
||||
// label: '广州区域',
|
||||
// children: [{
|
||||
// id: 6,
|
||||
// label: '白云山景区',
|
||||
// children: []
|
||||
// }, {
|
||||
// id: 7,
|
||||
// label: '白水寨景区',
|
||||
// children: []
|
||||
// }, {
|
||||
// id: 8,
|
||||
// label: '越秀公园景区',
|
||||
// children: []
|
||||
// }]
|
||||
// }]
|
||||
// }],
|
||||
list: [{
|
||||
id: 0,
|
||||
name: '爱尚云',
|
||||
sons: []
|
||||
}],
|
||||
lamLoading: false,
|
||||
parentId: '',
|
||||
parentName: '',
|
||||
parentArr: []
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
const id = await this.getTree()
|
||||
// const id = await this.getTree()
|
||||
this.getTrees();
|
||||
},
|
||||
methods: {
|
||||
// 查询结构树
|
||||
async getTrees(){
|
||||
try {
|
||||
this.lamLoading = true;
|
||||
await crudArea.tree().then(async(res) => {
|
||||
res.id = 0;
|
||||
this.list[0] = res;
|
||||
await this.getTree();
|
||||
})
|
||||
this.lamLoading = false;
|
||||
} catch (error) {
|
||||
this.lamLoading = false;
|
||||
}
|
||||
},
|
||||
// 节点点击
|
||||
handleNodeClick(data) {
|
||||
console.log(data)
|
||||
@ -165,6 +149,9 @@ export default {
|
||||
[CRUD.HOOK.beforeRefresh](crud, form) {
|
||||
crud.query.current = crud.page.page;
|
||||
},
|
||||
[CRUD.HOOK.afterSubmit](crud, form) {
|
||||
this.getTrees();
|
||||
},
|
||||
getTree() {
|
||||
return new Promise(resolve => {
|
||||
// tree().then(res => {
|
||||
@ -177,7 +164,7 @@ export default {
|
||||
return {
|
||||
last: true,
|
||||
...item,
|
||||
children: setLast(item.children, item.id, item.label, level + 1),
|
||||
sons: setLast(item.sons || [], item.id, item.name, level + 1),
|
||||
parentId,
|
||||
parentName,
|
||||
level
|
||||
@ -186,7 +173,7 @@ export default {
|
||||
return {
|
||||
last: false,
|
||||
...item,
|
||||
children: setLast(item.children, item.id, item.label, level + 1),
|
||||
sons: setLast(item.sons || [], item.id, item.name, level + 1),
|
||||
parentId,
|
||||
parentName,
|
||||
level
|
||||
@ -202,8 +189,8 @@ export default {
|
||||
const setSelectList = (data) => {
|
||||
data.forEach((item) => {
|
||||
arr = [...arr, item]
|
||||
if (item.children) {
|
||||
setSelectList(item.children)
|
||||
if (item.sons) {
|
||||
setSelectList(item.sons)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -213,7 +200,7 @@ export default {
|
||||
resolve(this.active)
|
||||
})
|
||||
// })
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<div>
|
||||
<!-- 搜索 -->
|
||||
<el-input
|
||||
v-model="query.nickName"
|
||||
v-model="query.phone"
|
||||
clearable
|
||||
size="small"
|
||||
placeholder="输入手机号"
|
||||
@ -26,8 +26,8 @@
|
||||
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
|
||||
<el-row :gutter="10">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="姓名" prop="nickName">
|
||||
<el-input v-model="form.nickName" placeholder="请输入姓名"/>
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入姓名"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
@ -43,12 +43,20 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="用户类型" prop="userType">
|
||||
<el-select v-model="form.userType" placeholder="请选择用户类型" clearable>
|
||||
<el-option v-for="(item,index) in userTypes" :key="index" :label="item.label" :value="item.value" />
|
||||
<el-form-item label="用户类型" prop="customerType">
|
||||
<el-select v-model="form.customerType" placeholder="请选择用户类型" clearable>
|
||||
<el-option v-for="(item,index) in dict.customer_type" :key="item.id" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="用户状态" prop="status">
|
||||
<el-select v-model="form.status" placeholder="请选择用户类型" clearable>
|
||||
<el-option label="启用" :value="1" />
|
||||
<el-option label="停用" :value="0" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer" style="margin-top: -30px;">
|
||||
@ -58,38 +66,82 @@
|
||||
</el-dialog>
|
||||
<!--表格渲染-->
|
||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;">
|
||||
<el-table-column :show-overflow-tooltip="true" prop="nickName" label="姓名" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="name" label="姓名" :formatter="commonFormatter" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="gender" label="性别">
|
||||
<template slot-scope="scope">
|
||||
<el-tag size="medium" v-if="Number(scope.row.gender) === 0">男</el-tag>
|
||||
<el-tag size="medium" v-else type="danger">女</el-tag>
|
||||
<el-tag size="medium" :type="!scope.row.gender?'warning':scope.row.gender==='女'?'danger':''">
|
||||
{{ scope.row.gender || '未知' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :show-overflow-tooltip="true" prop="phone" label="手机号" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="userType" label="用户类型" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="createTime" label="创建时间" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="enable" label="用户状态">
|
||||
<el-table-column :show-overflow-tooltip="true" prop="phone" label="手机号" :formatter="commonFormatter" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="customerType" label="用户类型" :formatter="commonFormatter" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="createTime" label="创建时间" :formatter="commonFormatter" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="status" label="用户状态">
|
||||
<template slot-scope="scope">
|
||||
<el-tag size="medium" v-if="Number(scope.row.enable) === 1" type="success">启用</el-tag>
|
||||
<el-tag size="medium" v-if="Number(scope.row.status) === 1" type="success">启用</el-tag>
|
||||
<el-tag size="medium" v-else type="danger">停用</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="checkPer(['admin', 'customer:enable', 'customer:del'])" label="操作" align="center"
|
||||
fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-permission="permission.enable" size="mini" :type="Number(scope.row.enable) === 1 ?'info':'primary'"
|
||||
@click.stop="toEnable(scope.row)">{{ Number(scope.row.enable) === 1 ? '停用' : '启用' }}</el-button>
|
||||
<el-popover v-model="pop" v-permission="permission.del" placement="top" width="180" trigger="manual" @show="pop = false" @hide="pop = false">
|
||||
<p>确定删除本条数据吗?</p>
|
||||
<div style="text-align: right; margin: 0">
|
||||
<el-button size="mini" type="text" @click="pop = false;crud.cancelDelete(scope.row)">取消</el-button>
|
||||
<el-button :loading="crud.dataStatus[crud.getDataId(scope.row)].delete === 2" type="primary" size="mini" @click="crud.doDelete(scope.row)">确定</el-button>
|
||||
<div style="display: flex;flex-wrap: wrap;align-items: center;justify-content: center;">
|
||||
<el-button size="mini" type="success" @click="toCheck(scope.row)"
|
||||
style="margin-right: 0px;">查看详情</el-button>
|
||||
<el-button v-permission="permission.enable" size="mini"
|
||||
:type="Number(scope.row.status) === 1 ?'info':'primary'"
|
||||
@click.stop="toEnable(scope.row)" style="margin-right: 5px;">
|
||||
{{ Number(scope.row.status) === 1 ? '停用' : '启用' }}
|
||||
</el-button>
|
||||
<udOperation
|
||||
:data="scope.row"
|
||||
:permission="permission"
|
||||
:showPop="['edit']"
|
||||
editText="编辑"
|
||||
/>
|
||||
</div>
|
||||
<el-button slot="reference" type="danger" size="mini" @click.stop="pop = true">删除</el-button>
|
||||
</el-popover>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--查看弹窗-->
|
||||
<el-dialog append-to-body :before-close="()=>{checkForm={};showCheck=false;}" :visible.sync="showCheck"
|
||||
title="客户详情" width="400px">
|
||||
<el-form ref="form" :model="checkForm" :rules="rules" size="small" label-width="100px">
|
||||
<el-row :gutter="10">
|
||||
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||
<el-form-item label="姓名:">{{ checkForm.name }}</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||
<el-form-item label="性别:">{{ checkForm.gender||'未知' }}</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="手机号:">
|
||||
{{ checkForm.phone }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="用户类型:">
|
||||
{{ getCustomerType }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="用户状态:">
|
||||
<el-tag size="medium" v-if="Number(checkForm.status) === 1" type="success">启用</el-tag>
|
||||
<el-tag size="medium" v-else type="danger">停用</el-tag>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="创建时间:">
|
||||
{{ checkForm.createTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer" style="margin-top: -30px;">
|
||||
<el-button type="primary" @click="()=>{checkForm={};showCheck=false;}">确定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!--分页组件-->
|
||||
<pagination />
|
||||
</div>
|
||||
@ -99,13 +151,14 @@ import crudCustomer from '@/api/system/customer'
|
||||
import { isvalidPhone } from '@/utils/validate'
|
||||
import CRUD, { presenter, header, form, crud } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
const defaultForm = { phone: null, nickName: null, gender: null, userType: null }
|
||||
const defaultForm = { phone: null, name: null, gender: null, customerType: null, status: '' }
|
||||
export default {
|
||||
name: 'Customer',
|
||||
components: { rrOperation, pagination },
|
||||
components: { udOperation, rrOperation, pagination },
|
||||
// 数据字典
|
||||
dicts: ['common_gender'],
|
||||
dicts: ['common_gender','customer_type'],
|
||||
cruds() {
|
||||
return CRUD({ title: '客户', url: '/aerocraftAdminApi/cnCustomer', crudMethod: { ...crudCustomer }, optShow: { add: true, reset: true }})
|
||||
},
|
||||
@ -125,36 +178,68 @@ export default {
|
||||
permission: {
|
||||
add: ['admin', 'customer:add'],
|
||||
enable: ['admin', 'customer:enable'],
|
||||
edit: ['admin', 'customer:edit'],
|
||||
del: ['admin', 'customer:del']
|
||||
},
|
||||
pop: false,
|
||||
userTypes: [
|
||||
{ label: '普通用户', value: '普通用户' },
|
||||
{ label: '公司对接人', value: '公司对接人' }
|
||||
],
|
||||
rules: {
|
||||
gender: [
|
||||
{ required: true, message: '请选择性别', trigger: 'change' },
|
||||
],
|
||||
userType: [
|
||||
customerType: [
|
||||
{ required: true, message: '请选择用户类型', trigger: 'change' },
|
||||
],
|
||||
nickName: [
|
||||
name: [
|
||||
{ required: true, message: '请输入姓名', trigger: 'blur' },
|
||||
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
|
||||
],
|
||||
phone: [
|
||||
{ required: true, trigger: 'blur', validator: validPhone }
|
||||
],
|
||||
status: [
|
||||
{ required: true, message: '请选择用户状态', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
checkForm: {},
|
||||
showCheck: false,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// 查看客户类型
|
||||
getCustomerType() {
|
||||
if(this.checkForm.gender){
|
||||
const customerType = this.dict.customer_type.find(item=>item.value===this.checkForm.customerType);
|
||||
return customerType ? customerType.label : '暂无';
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
created() {
|
||||
},
|
||||
methods: {
|
||||
// 启/停用客户账号
|
||||
toEnable(row){
|
||||
row.enable = Number(row.enable) === 1 ? 0 : 1;
|
||||
try {
|
||||
row.status = Number(row.status) === 1 ? 0 : 1;
|
||||
crudCustomer.enable({status: row.status, id: row.id}).then(res => {
|
||||
this.$message.success(`该客户${row.status?'启用':'停用'}成功!`);
|
||||
})
|
||||
} catch (error) {
|
||||
this.$message.error('操作失败!');
|
||||
} finally {
|
||||
}
|
||||
},
|
||||
// 查看详情
|
||||
toCheck(row){
|
||||
this.checkForm = row;
|
||||
this.showCheck = true;
|
||||
},
|
||||
// 通用格式化
|
||||
commonFormatter(row, column) {
|
||||
return row[column.property] || '暂无';
|
||||
},
|
||||
[CRUD.HOOK.beforeToEdit](crud, form) {
|
||||
form.status = Number(form.status) || '';
|
||||
},
|
||||
[CRUD.HOOK.beforeRefresh](crud, form) {
|
||||
crud.query.current = crud.page.page;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user