8 changed files with 1342 additions and 2 deletions
@ -0,0 +1,36 @@ |
|||||
|
export default [ |
||||
|
{ |
||||
|
key: 'categoryName', |
||||
|
title: '分类', |
||||
|
display: ['formA', 'formU', 'table', 'model'], |
||||
|
fixed: false, |
||||
|
block: true, |
||||
|
width: 120 |
||||
|
}, |
||||
|
{ |
||||
|
key: 'title', |
||||
|
title: '标题', |
||||
|
type: 'input', |
||||
|
display: ['formA', 'formU', 'table', 'model'], |
||||
|
fixed: false, |
||||
|
block: true, |
||||
|
width: 150 |
||||
|
}, |
||||
|
{ |
||||
|
key: 'updatedTime', |
||||
|
title: '更新时间', |
||||
|
display: ['formA', 'formU', 'table', 'model'], |
||||
|
fixed: false, |
||||
|
block: true, |
||||
|
width: 80 |
||||
|
}, |
||||
|
{ |
||||
|
key: 'createdName', |
||||
|
title: '创建人', |
||||
|
type: 'input', |
||||
|
display: ['formA', 'formU', 'table', 'model'], |
||||
|
fixed: false, |
||||
|
block: true, |
||||
|
width: 80 |
||||
|
} |
||||
|
] |
@ -0,0 +1,462 @@ |
|||||
|
<template> |
||||
|
<div class="div_main"> |
||||
|
<div class="div_btn"> |
||||
|
|
||||
|
<el-button type="default" |
||||
|
size="mini" |
||||
|
@click="diaCancel">取消返回</el-button> |
||||
|
<el-button v-if="formType!='D'" |
||||
|
type="primary" |
||||
|
size="mini" |
||||
|
@click="saveForm">保存发布</el-button> |
||||
|
|
||||
|
</div> |
||||
|
<div class="div_content"> |
||||
|
<el-form :inline="true" |
||||
|
:model="dataForm" |
||||
|
:rules="dataRule" |
||||
|
ref="dataForm" |
||||
|
:disabled="formType=='D'" |
||||
|
:label-width="'120px'"> |
||||
|
<el-form-item label="标题" |
||||
|
prop="title"> |
||||
|
<el-input class="item_width_1" |
||||
|
v-model="dataForm.title" |
||||
|
placeholder="标题"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="分类" |
||||
|
prop="type"> |
||||
|
<el-select class="item_width_1" |
||||
|
v-model="dataForm.categoryId" |
||||
|
placeholder="请选择"> |
||||
|
<el-option v-for="item in categoryList" |
||||
|
:key="item.categoryId" |
||||
|
:label="item.categoryName" |
||||
|
:value="item.categoryId"> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
|
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="发布单位" |
||||
|
prop="unit"> |
||||
|
<el-select class="item_width_1" |
||||
|
v-model="dataForm.orgId" |
||||
|
placeholder="请选择"> |
||||
|
<el-option v-for="(item,index) in orgList" |
||||
|
@click.native="orgChange(index)" |
||||
|
:key="item.orgId" |
||||
|
:label="item.orgName" |
||||
|
:value="item.orgId"> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
|
||||
|
</el-form> |
||||
|
|
||||
|
<div class="div_editor"> |
||||
|
<el-tabs v-model="activeName" |
||||
|
@tab-click="tabClick"> |
||||
|
<el-tab-pane style="height:500px" |
||||
|
v-for="item in moduleArray" |
||||
|
:key="item.moduleId" |
||||
|
:label="item.moduleName" |
||||
|
:name="item.moduleId"> |
||||
|
<quill-editor :ref="'text'+item.moduleId" |
||||
|
:disabled="formType=='D'" |
||||
|
class="ql-container" |
||||
|
:options="item.editorOption" |
||||
|
@change="onEditorChange" /> |
||||
|
|
||||
|
</el-tab-pane> |
||||
|
</el-tabs> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<el-form :inline="true" |
||||
|
:model="externalLink" |
||||
|
ref="externalLink" |
||||
|
:disabled="formType=='D'" |
||||
|
:label-width="'120px'"> |
||||
|
|
||||
|
<el-form-item label="外链地址" |
||||
|
prop="externalLink"> |
||||
|
<el-input class="item_width_1" |
||||
|
v-model="externalLink.externalLink" |
||||
|
placeholder="外链地址"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="地址说明" |
||||
|
prop="description"> |
||||
|
<el-input class="item_width_1" |
||||
|
v-model="externalLink.description" |
||||
|
placeholder="地址说明"></el-input> |
||||
|
</el-form-item> |
||||
|
<div> |
||||
|
<el-form-item class="block" |
||||
|
label="附件" |
||||
|
prop="attach"> |
||||
|
<el-upload class="upload-demo" |
||||
|
:action="uploadUlr" |
||||
|
:on-success="handleAvatarSuccess" |
||||
|
:on-change="handleChange" |
||||
|
:file-list="fileList"> |
||||
|
<el-button size="small" |
||||
|
type="primary">点击上传</el-button> |
||||
|
<div slot="tip" |
||||
|
class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> |
||||
|
</el-upload> |
||||
|
</el-form-item> |
||||
|
</div> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import { Loading } from 'element-ui' // 引入Loading服务 |
||||
|
import { requestPost } from '@/js/dai/request' |
||||
|
|
||||
|
import 'quill/dist/quill.core.css' |
||||
|
import 'quill/dist/quill.snow.css' |
||||
|
import 'quill/dist/quill.bubble.css' |
||||
|
|
||||
|
import { quillEditor } from 'vue-quill-editor' |
||||
|
|
||||
|
let loading// 加载动画 |
||||
|
export default { |
||||
|
data () { |
||||
|
return { |
||||
|
|
||||
|
formType: '', // 操作类型A/U D(详情) |
||||
|
guideId: '', // 父组件传来功能id |
||||
|
categoryList: [], |
||||
|
orgList: [], |
||||
|
|
||||
|
dataForm: { |
||||
|
guideId: '', |
||||
|
title: '', |
||||
|
categoryId: '', |
||||
|
orgId: '', |
||||
|
orgType: '', |
||||
|
orgName: '', |
||||
|
moduleList: [], |
||||
|
externalLinks: [], |
||||
|
attachmentList: [] |
||||
|
}, |
||||
|
externalLink: { |
||||
|
externalLink: "", |
||||
|
description: "" |
||||
|
}, |
||||
|
|
||||
|
content: '', |
||||
|
editorOption: { |
||||
|
placeholder: '编辑文章内容' |
||||
|
}, |
||||
|
activeName: "", |
||||
|
moduleArray: [], |
||||
|
selTabIndex: 0, |
||||
|
|
||||
|
fileList: [{ |
||||
|
name: 'food.jpeg', |
||||
|
url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100' |
||||
|
}, { |
||||
|
name: 'food2.jpeg', |
||||
|
url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100' |
||||
|
}], |
||||
|
uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadqrcodeV2', |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
mounted () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
|
||||
|
async initData (guideId, type) { |
||||
|
this.formType = type |
||||
|
this.guideId = guideId |
||||
|
|
||||
|
if (type === 'A') { |
||||
|
this.resetData() |
||||
|
|
||||
|
} else { |
||||
|
this.dataForm.guideId = guideId |
||||
|
this.loadFormData() |
||||
|
} |
||||
|
await this.loadOrg() |
||||
|
await this.getcategory() |
||||
|
await this.loadModule() |
||||
|
}, |
||||
|
|
||||
|
async getcategory () { |
||||
|
// const url = '/gov/guide/guideccategory/getcategory' |
||||
|
const url = 'http://yapi.elinkservice.cn/mock/102/gov/voice/guidecategory/getcategory' |
||||
|
|
||||
|
const params = { |
||||
|
queryOrigin: 'saveorupdate' |
||||
|
} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.categoryList = data |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
async loadOrg () { |
||||
|
// const url = '/gov/org/staff/orgList' |
||||
|
const url = 'http://yapi.elinkservice.cn/mock/102/gov/org/staff/orgList' |
||||
|
|
||||
|
const params = {} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.orgList = data |
||||
|
if (data.length > 0) { |
||||
|
this.dataForm.orgId = data[0].orgId |
||||
|
this.dataForm.orgType = data[0].orgType |
||||
|
this.dataForm.orgName = data[0].orgName |
||||
|
} |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//获取模块tab |
||||
|
async loadModule () { |
||||
|
// const url = '/gov/voice/guidemodule/list' |
||||
|
const url = 'http://yapi.elinkservice.cn/mock/102/gov/voice/guidemodule/list' |
||||
|
|
||||
|
const params = {} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.moduleArray = data |
||||
|
|
||||
|
this.moduleArray.forEach(element => { |
||||
|
element.editorOption = { |
||||
|
placeholder: '输入' + element.moduleName |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
if (data.length > 0) { |
||||
|
this.activeName = data[0].moduleId |
||||
|
} |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//单位下拉框改变 |
||||
|
orgChange (index) { |
||||
|
console.log(index) |
||||
|
this.dataForm.orgName = this.orgList[index].orgName |
||||
|
this.dataForm.orgType = this.orgList[index].orgType |
||||
|
}, |
||||
|
|
||||
|
tabClick (selTab) { |
||||
|
console.log(selTab.index) |
||||
|
this.selTabIndex = selTab.index |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
onEditorChange ({ editor, html, text }) { |
||||
|
this.moduleArray[this.selTabIndex].moduleContent = html |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
async loadFormData () { |
||||
|
const url = 'http://yapi.elinkservice.cn/mock/102/gov/voice/guide/detail' |
||||
|
// const url = '/gov/voice/guide/detail' |
||||
|
let _data = { |
||||
|
guideId: this.guideId |
||||
|
} |
||||
|
const params = {} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.dataForm = data |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
saveForm () { |
||||
|
|
||||
|
this.dataForm.moduleList = [] |
||||
|
this.moduleArray.forEach(element => { |
||||
|
if (element.moduleContent) { |
||||
|
this.dataForm.moduleList.push(element) |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
if (this.externalLink.externalLink && this.externalLink.description) { |
||||
|
this.dataForm.externalLinks = [] |
||||
|
this.dataForm.externalLinks.push(this.externalLink) |
||||
|
} else if (!this.externalLink.externalLink && !this.externalLink.description) { |
||||
|
this.dataForm.externalLinks = [] |
||||
|
} else { |
||||
|
this.$message({ |
||||
|
type: 'error', |
||||
|
message: '链接地址和地址说明必须同时填写' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
console.log(this.dataForm) |
||||
|
|
||||
|
return false |
||||
|
this.$refs['dataForm'].validate((valid, messageObj) => { |
||||
|
|
||||
|
if (!valid) { |
||||
|
app.util.validateRule(messageObj) |
||||
|
} else { |
||||
|
let url = '' |
||||
|
|
||||
|
if (this.type === 'U') { |
||||
|
// url = '/gov/voice/guide/update' |
||||
|
url = 'http://yapi.elinkservice.cn/mock/102/gov/voice/guide/update' |
||||
|
} else { |
||||
|
// url="/gov/voice/guide/add" |
||||
|
url = "http://yapi.elinkservice.cn/mock/102/gov/voice/guide/add" |
||||
|
|
||||
|
|
||||
|
} |
||||
|
window.app.ajax.post(url, this.dataForm, |
||||
|
(data, rspMsg) => { |
||||
|
this.$message({ |
||||
|
type: 'success', |
||||
|
message: '保存成功' |
||||
|
}) |
||||
|
this.$emit('dialogOk') |
||||
|
this.visible = false |
||||
|
}, |
||||
|
(rspMsg, data) => { |
||||
|
this.endLoading() |
||||
|
this.$message.error(rspMsg) |
||||
|
}) |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
handleClose () { |
||||
|
this.visible = false |
||||
|
}, |
||||
|
resetData () { |
||||
|
this.dataForm = { |
||||
|
guideId: '', |
||||
|
title: '', |
||||
|
categoryId: '', |
||||
|
orgId: '', |
||||
|
orgType: '', |
||||
|
orgName: '', |
||||
|
moduleList: [], |
||||
|
externalLinks: [], |
||||
|
attachmentList: [] |
||||
|
} |
||||
|
}, |
||||
|
// 取消 |
||||
|
diaCancel () { |
||||
|
this.resetData() |
||||
|
this.$emit('cancleBack') |
||||
|
}, |
||||
|
|
||||
|
handleChange (file, fileList) { |
||||
|
this.fileList = fileList.slice(-3); |
||||
|
}, |
||||
|
|
||||
|
handleAvatarSuccess (res, file) { |
||||
|
if (res.code === 0 && res.msg === 'success') { |
||||
|
this.dataForm2.logo = res.data.url |
||||
|
} else this.$message.error(res.msg) |
||||
|
}, |
||||
|
// 开启加载动画 |
||||
|
startLoading () { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: '正在加载……', // 加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
||||
|
}) |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading () { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close() |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
components: { |
||||
|
quillEditor |
||||
|
|
||||
|
}, |
||||
|
computed: { |
||||
|
dataRule () { |
||||
|
return { |
||||
|
type: [ |
||||
|
{ required: true, message: '分类不能为空', trigger: 'blur' } |
||||
|
], |
||||
|
unit: [ |
||||
|
{ required: true, message: '发布单位不能为空', trigger: 'blur' } |
||||
|
|
||||
|
], |
||||
|
title: [ |
||||
|
{ required: true, message: '标题不能为空', trigger: 'blur' } |
||||
|
|
||||
|
] |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
...mapGetters(['clientHeight', 'resolution']), |
||||
|
}, |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="css" scoped> |
||||
|
.div_btn { |
||||
|
z-index: 10; |
||||
|
position: absolute; |
||||
|
right: 50px; |
||||
|
top: 20px; |
||||
|
/* margin: 0 0 20px 0; */ |
||||
|
} |
||||
|
|
||||
|
.div_editor { |
||||
|
margin-left: 60px; |
||||
|
width: 90%; |
||||
|
} |
||||
|
|
||||
|
.div_editor >>> .el-tabs--card > .el-tabs__header .el-tabs__nav { |
||||
|
border: none; |
||||
|
} |
||||
|
.el-tabs__nav-wrap::after { |
||||
|
background-color: white; |
||||
|
} |
||||
|
.el-tabs__active-bar { |
||||
|
background-color: white; |
||||
|
} |
||||
|
|
||||
|
.div_content { |
||||
|
margin-top: 30px; |
||||
|
} |
||||
|
|
||||
|
.item_width_1 { |
||||
|
width: 300px; |
||||
|
} |
||||
|
.item_width_2 { |
||||
|
width: 500px; |
||||
|
} |
||||
|
.block { |
||||
|
display: block; |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
<style> |
||||
|
.aui-content .ql-container { |
||||
|
height: 400px; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,352 @@ |
|||||
|
<template> |
||||
|
<div class="role-container"> |
||||
|
<el-card class="flex1"> |
||||
|
|
||||
|
<div v-if="isManager"> |
||||
|
上下拖动可改变角色顺序 |
||||
|
<el-button style="margin-left:10px" |
||||
|
type="primary" |
||||
|
size="small" |
||||
|
@click="handleSaveSort">保存顺序</el-button> |
||||
|
<el-button type="primary" |
||||
|
size="small" |
||||
|
@click="handleAdd">新增</el-button> |
||||
|
</div> |
||||
|
<el-table ref="roleTable" |
||||
|
v-loading="loading1" |
||||
|
:data="tableData" |
||||
|
row-key="roleKey" |
||||
|
border |
||||
|
style="width: 100%;margin-top:20px"> |
||||
|
<el-table-column type="index" |
||||
|
header-align="left" |
||||
|
align="left" |
||||
|
width="50"></el-table-column> |
||||
|
|
||||
|
<el-table-column prop="categoryName" |
||||
|
header-align="left" |
||||
|
align="left" |
||||
|
label="分类名称" |
||||
|
width="150"></el-table-column> |
||||
|
|
||||
|
<el-table-column prop="status" |
||||
|
label="状态" |
||||
|
header-align="left" |
||||
|
align="left"> |
||||
|
<template slot-scope="scope"> |
||||
|
<p style="color:red" |
||||
|
v-if="scope.row.status==='disable'">{{'禁用'}}</p> |
||||
|
<p v-else>{{'启用'}}</p> |
||||
|
|
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column v-if="isManager" |
||||
|
width="450" |
||||
|
label="操作"> |
||||
|
<template slot-scope="scope"> |
||||
|
|
||||
|
<el-button v-if="scope.row.status==='enable'" |
||||
|
type="primary" |
||||
|
size="mini" |
||||
|
@click="handelChangeState(scope.row,'disable')">禁用</el-button> |
||||
|
<el-button v-if="scope.row.status==='disable'" |
||||
|
type="primary" |
||||
|
size="mini" |
||||
|
@click="handelChangeState(scope.row,'enable')">启用</el-button> |
||||
|
|
||||
|
<el-button type="primary" |
||||
|
size="mini" |
||||
|
@click="handleEdit(scope.row.roleKey, scope.row.roleName)">修改</el-button> |
||||
|
|
||||
|
<el-button type="primary" |
||||
|
size="mini" |
||||
|
@click="handleDel(scope.row)">删除</el-button> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
|
||||
|
</el-card> |
||||
|
|
||||
|
<!-- 修改弹出框 --> |
||||
|
<el-dialog :visible.sync="diaShow" |
||||
|
:close-on-click-modal="false" |
||||
|
:close-on-press-escape="false" |
||||
|
:title="diaTitle" |
||||
|
width="30%" |
||||
|
@closed="diaClose"> |
||||
|
<div class="div_duty" |
||||
|
v-if="diaShow"> |
||||
|
<span> 分类名称 </span> |
||||
|
<el-input style="margin-top:20px" |
||||
|
type="textarea" |
||||
|
:rows="2" |
||||
|
v-model="categoryName"></el-input> |
||||
|
<div class="div_btn"> |
||||
|
<el-button type="primary" |
||||
|
size="small" |
||||
|
@click="saveCategory()">保存</el-button> |
||||
|
<el-button size="small" |
||||
|
@click="diaShow=false">取消</el-button> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import Sortable from 'sortablejs' |
||||
|
import { requestPost, requestGet } from "@/js/dai/request"; |
||||
|
|
||||
|
export default { |
||||
|
name: 'RoleList', |
||||
|
props: {}, |
||||
|
data () { |
||||
|
return { |
||||
|
loading1: false, |
||||
|
|
||||
|
selCategoryId: '', |
||||
|
tableData: [], |
||||
|
isManager: false, |
||||
|
|
||||
|
//弹出框相关 |
||||
|
diaTitle: '新增分类', |
||||
|
categoryName: '', |
||||
|
diaShow: false, |
||||
|
|
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
mounted () { |
||||
|
this.loadList() |
||||
|
this.dragRoleSort() |
||||
|
|
||||
|
const roleList = this.$store.state.user.roleList |
||||
|
console.log(this.$store.state.user.roleList) |
||||
|
if (roleList.indexOf('root_manager') > -1) { |
||||
|
this.isManager = true |
||||
|
} else { |
||||
|
this.isManager = false |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
|
||||
|
//获取分类列表 |
||||
|
async loadList () { |
||||
|
console.log(this.description) |
||||
|
// const url = "/gov/voice/guideccategory/getcategory" |
||||
|
const url = "/gov/voice/guidecategory/page" |
||||
|
const params = { |
||||
|
} |
||||
|
const { data, code, msg } = await requestGet(url, params) |
||||
|
if (code === 0) { |
||||
|
this.tableData = data.list |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//新增 |
||||
|
handleAdd () { |
||||
|
this.diaTitle = '新增分类' |
||||
|
this.diaShow = true |
||||
|
this.categoryName = '' |
||||
|
this.selCategoryId = '' |
||||
|
}, |
||||
|
//编辑 |
||||
|
handleEdit (row) { |
||||
|
this.diaTitle = '编辑分类' |
||||
|
this.diaShow = true |
||||
|
this.selCategoryId = row.id |
||||
|
this.categoryName = row.categoryName |
||||
|
}, |
||||
|
|
||||
|
//保存分类 |
||||
|
async saveCategory () { |
||||
|
const url = "/gov/voice/guideccategory/update" |
||||
|
let params = {} |
||||
|
if (this.selCategoryId) { |
||||
|
params = { |
||||
|
categoryId: this.selCategoryId, |
||||
|
categoryName: this.categoryName |
||||
|
} |
||||
|
} else { |
||||
|
params = { |
||||
|
categoryName: this.categoryName |
||||
|
} |
||||
|
} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.loadList() |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//修改状态 |
||||
|
async handelChangeState (row, state) { |
||||
|
|
||||
|
const url = "/gov/voice/guideccategory/disable" |
||||
|
const params = { |
||||
|
status: state, |
||||
|
categoryId: row.id |
||||
|
} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.loadList() |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//删除分类 |
||||
|
async handelDel (row) { |
||||
|
const url = "/gov/voice/guidecategory" |
||||
|
const params = { |
||||
|
categoryId: row.id |
||||
|
} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.loadList() |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
//关闭角色职责弹出框 |
||||
|
diaClose () { |
||||
|
this.selCategoryId = '' |
||||
|
this.diaTitle = '' |
||||
|
this.categoryName = '' |
||||
|
this.diaShow = false |
||||
|
}, |
||||
|
|
||||
|
//显示角色职责弹出框 |
||||
|
handelChangeDuty (row) { |
||||
|
this.selCategoryId = row.id |
||||
|
this.description = row.description |
||||
|
this.roleName = row.roleName |
||||
|
this.diaShow = true |
||||
|
}, |
||||
|
handleChangeName (row) { |
||||
|
row.isEdit = true |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
//保存角色名称、职责 |
||||
|
async updateRole () { |
||||
|
console.log(this.description) |
||||
|
const url = "/epmetuser/govstaffrole/updatedefaultrole" |
||||
|
const params = { |
||||
|
roleId: this.selCategoryId, |
||||
|
roleName: this.roleName, |
||||
|
description: this.description |
||||
|
} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.diaShow = false |
||||
|
this.loadList() |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
//点击功能权限按钮 |
||||
|
toOperationConfig (roleKey, roleName) { |
||||
|
this.roleName = roleName |
||||
|
this.funcShow = true |
||||
|
this.opeList = [] |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
dragRoleSort () { |
||||
|
const el = this.$refs.roleTable.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0] |
||||
|
this.sortTable = Sortable.create(el, { |
||||
|
group: 'dragTable', |
||||
|
ghostClass: 'sortable-ghost', // Class name for the drop placeholder, |
||||
|
// setData: function(dataTransfer, dragEl) { |
||||
|
// dataTransfer.setData("Text", dragEl.textContent); |
||||
|
// }, |
||||
|
delay: 0, |
||||
|
onChange: evt => { |
||||
|
// console.log(evt) |
||||
|
}, |
||||
|
onEnd: evt => { |
||||
|
const targetRow = this.tableData.splice(evt.oldIndex, 1)[0] |
||||
|
this.tableData.splice(evt.newIndex, 0, targetRow) |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
//保存顺序 |
||||
|
handleSaveSort () { |
||||
|
let data = { |
||||
|
roleIdList: this.tableData.map(item => { |
||||
|
return item.id |
||||
|
}) |
||||
|
} |
||||
|
this.$http |
||||
|
.post('/epmetuser/govstaffrole/savedefaultsort', data) |
||||
|
.then(({ data: res }) => { |
||||
|
console.log('ressss', res) |
||||
|
if (res.code === 0 && res.msg === 'success') { |
||||
|
this.$message({ |
||||
|
type: 'success', |
||||
|
message: '保存成功' |
||||
|
}) |
||||
|
this.loadList() |
||||
|
} else { |
||||
|
this.$message({ |
||||
|
type: 'error', |
||||
|
message: res.msg |
||||
|
}) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped> |
||||
|
.role-container, |
||||
|
.role-flex { |
||||
|
display: flex; |
||||
|
} |
||||
|
.flex1 { |
||||
|
flex: 1; |
||||
|
} |
||||
|
.now-name { |
||||
|
/* display: flex; |
||||
|
justify-content: space-between; */ |
||||
|
margin-bottom: 10px; |
||||
|
margin-left: 10px; |
||||
|
} |
||||
|
.aui-wrapper .el-card + .el-card { |
||||
|
margin-top: 0; |
||||
|
} |
||||
|
.role-container .el-dialog__body { |
||||
|
padding: 0 20px 20px; |
||||
|
} |
||||
|
.div_duty { |
||||
|
height: 300px; |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
.div_btn { |
||||
|
position: absolute; |
||||
|
bottom: 30px; |
||||
|
right: 15px; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,482 @@ |
|||||
|
<template> |
||||
|
<div class="registerList"> |
||||
|
<el-card shadow="never" |
||||
|
class="aui-card--fill"> |
||||
|
<div v-show="!formShow" |
||||
|
class="mod-demo__demo}"> |
||||
|
<el-form :inline="true" |
||||
|
:model="tableParams" |
||||
|
@keyup.enter.native="loadData()"> |
||||
|
<div> |
||||
|
<el-form-item label="所属组织" |
||||
|
:label-width="labelWidth"> |
||||
|
<el-cascader v-model="tableParams.agencyId" |
||||
|
style="width:480px" |
||||
|
:options="options" |
||||
|
:props="optionProps" |
||||
|
clearable></el-cascader> |
||||
|
</el-form-item> |
||||
|
</div> |
||||
|
|
||||
|
<div> |
||||
|
<el-form-item label="问题分类" |
||||
|
:label-width="labelWidth"> |
||||
|
<el-select v-model="tableParams.categoryId" |
||||
|
placeholder="问题分类" |
||||
|
clearable> |
||||
|
<el-option v-for="item in categoryList" |
||||
|
:key="item.categoryId" |
||||
|
:label="item.categoryName" |
||||
|
:value="item.categoryId"> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="标题" |
||||
|
:label-width="labelWidth"> |
||||
|
<el-input v-model="tableParams.guideTitle" |
||||
|
placeholder="标题" |
||||
|
clearable> |
||||
|
|
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item style="margin-left:10px"> |
||||
|
<el-button @click="loadData()" |
||||
|
type="primary">查询</el-button> |
||||
|
</el-form-item> |
||||
|
<el-form-item style="margin-left:10px"> |
||||
|
<el-button @click="add()" |
||||
|
type="primary">新增</el-button> |
||||
|
</el-form-item> |
||||
|
</div> |
||||
|
</el-form> |
||||
|
|
||||
|
<c-table column-type="index" |
||||
|
ref="table" |
||||
|
:url="tableUrl" |
||||
|
:params="tableParams" |
||||
|
:operationWidth="80" |
||||
|
keyword="guidanceList" |
||||
|
:operations="operations" |
||||
|
:tableHeight="tableHeight" |
||||
|
@detail="detail" |
||||
|
@edit="edit" |
||||
|
@del="del"> |
||||
|
</c-table> |
||||
|
</div> |
||||
|
|
||||
|
<div v-show="formShow"> |
||||
|
<detail-form ref="ref_edit_form" |
||||
|
@cancleBack="cancleBack" |
||||
|
@refresh="loadData"></detail-form> |
||||
|
</div> |
||||
|
</el-card> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import CTable from '@c/CTable' |
||||
|
import DetailForm from './DetailForm' |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import { Loading } from 'element-ui' // 引入Loading服务 |
||||
|
import { requestPost } from '@/js/dai/request' |
||||
|
|
||||
|
let loading // 加载动画 |
||||
|
const customerId = localStorage.getItem('customerId') |
||||
|
export default { |
||||
|
data () { |
||||
|
return { |
||||
|
//查询条件标题宽度 |
||||
|
labelWidth: '70px', |
||||
|
formShow: false, |
||||
|
|
||||
|
optionProps: { |
||||
|
value: 'agencyId', |
||||
|
label: 'agencyName', |
||||
|
children: 'subAgencyList', |
||||
|
checkStrictly: true |
||||
|
}, |
||||
|
options: [ |
||||
|
{ |
||||
|
agencyId: 'zhinan', |
||||
|
agencyName: '指南', |
||||
|
subAgencyList: [{ |
||||
|
agencyId: 'shejiyuanze', |
||||
|
agencyName: '设计原则', |
||||
|
subAgencyList: [{ |
||||
|
agencyId: 'yizhi', |
||||
|
agencyName: '一致' |
||||
|
}, { |
||||
|
agencyId: 'fankui', |
||||
|
agencyName: '反馈' |
||||
|
}, { |
||||
|
agencyId: 'xiaolv', |
||||
|
agencyName: '效率' |
||||
|
}, { |
||||
|
agencyId: 'kekong', |
||||
|
agencyName: '可控' |
||||
|
}] |
||||
|
}, { |
||||
|
agencyId: 'daohang', |
||||
|
agencyName: '导航', |
||||
|
subAgencyList: [{ |
||||
|
agencyId: 'cexiangdaohang', |
||||
|
agencyName: '侧向导航' |
||||
|
}, { |
||||
|
agencyId: 'dingbudaohang', |
||||
|
agencyName: '顶部导航' |
||||
|
}] |
||||
|
}] |
||||
|
}, |
||||
|
{ |
||||
|
agencyId: 'zujian', |
||||
|
agencyName: '组件', |
||||
|
subAgencyList: [{ |
||||
|
agencyId: 'basic', |
||||
|
agencyName: 'Basic', |
||||
|
subAgencyList: [{ |
||||
|
agencyId: 'layout', |
||||
|
agencyName: 'Layout 布局' |
||||
|
}, { |
||||
|
agencyId: 'color', |
||||
|
agencyName: 'Color 色彩' |
||||
|
}, { |
||||
|
agencyId: 'typography', |
||||
|
agencyName: 'Typography 字体' |
||||
|
}, { |
||||
|
agencyId: 'icon', |
||||
|
agencyName: 'Icon 图标' |
||||
|
}, { |
||||
|
agencyId: 'button', |
||||
|
agencyName: 'Button 按钮' |
||||
|
}] |
||||
|
}, { |
||||
|
agencyId: 'form', |
||||
|
agencyName: 'Form', |
||||
|
subAgencyList: [{ |
||||
|
agencyId: 'radio', |
||||
|
agencyName: 'Radio 单选框' |
||||
|
}, { |
||||
|
agencyId: 'checkbox', |
||||
|
agencyName: 'Checkbox 多选框' |
||||
|
}, { |
||||
|
agencyId: 'input', |
||||
|
agencyName: 'Input 输入框' |
||||
|
}, { |
||||
|
agencyId: 'input-number', |
||||
|
agencyName: 'InputNumber 计数器' |
||||
|
}, { |
||||
|
agencyId: 'select', |
||||
|
agencyName: 'Select 选择器' |
||||
|
}, { |
||||
|
agencyId: 'cascader', |
||||
|
agencyName: 'Cascader 级联选择器' |
||||
|
}, { |
||||
|
agencyId: 'switch', |
||||
|
agencyName: 'Switch 开关' |
||||
|
}, { |
||||
|
agencyId: 'slider', |
||||
|
agencyName: 'Slider 滑块' |
||||
|
}, { |
||||
|
agencyId: 'time-picker', |
||||
|
agencyName: 'TimePicker 时间选择器' |
||||
|
}, { |
||||
|
agencyId: 'date-picker', |
||||
|
agencyName: 'DatePicker 日期选择器' |
||||
|
}, { |
||||
|
agencyId: 'datetime-picker', |
||||
|
agencyName: 'DateTimePicker 日期时间选择器' |
||||
|
}, { |
||||
|
agencyId: 'upload', |
||||
|
agencyName: 'Upload 上传' |
||||
|
}, { |
||||
|
agencyId: 'rate', |
||||
|
agencyName: 'Rate 评分' |
||||
|
}, { |
||||
|
agencyId: 'form', |
||||
|
agencyName: 'Form 表单' |
||||
|
}] |
||||
|
}, { |
||||
|
agencyId: 'data', |
||||
|
agencyName: 'Data', |
||||
|
subAgencyList: [{ |
||||
|
agencyId: 'table', |
||||
|
agencyName: 'Table 表格' |
||||
|
}, { |
||||
|
agencyId: 'tag', |
||||
|
agencyName: 'Tag 标签' |
||||
|
}, { |
||||
|
agencyId: 'progress', |
||||
|
agencyName: 'Progress 进度条' |
||||
|
}, { |
||||
|
agencyId: 'tree', |
||||
|
agencyName: 'Tree 树形控件' |
||||
|
}, { |
||||
|
agencyId: 'pagination', |
||||
|
agencyName: 'Pagination 分页' |
||||
|
}, { |
||||
|
agencyId: 'badge', |
||||
|
agencyName: 'Badge 标记' |
||||
|
}] |
||||
|
}, { |
||||
|
agencyId: 'notice', |
||||
|
agencyName: 'Notice', |
||||
|
subAgencyList: [{ |
||||
|
agencyId: 'alert', |
||||
|
agencyName: 'Alert 警告' |
||||
|
}, { |
||||
|
agencyId: 'loading', |
||||
|
agencyName: 'Loading 加载' |
||||
|
}, { |
||||
|
agencyId: 'message', |
||||
|
agencyName: 'Message 消息提示' |
||||
|
}, { |
||||
|
agencyId: 'message-box', |
||||
|
agencyName: 'MessageBox 弹框' |
||||
|
}, { |
||||
|
agencyId: 'notification', |
||||
|
agencyName: 'Notification 通知' |
||||
|
}] |
||||
|
}, { |
||||
|
agencyId: 'navigation', |
||||
|
agencyName: 'Navigation', |
||||
|
subAgencyList: [{ |
||||
|
agencyId: 'menu', |
||||
|
agencyName: 'NavMenu 导航菜单' |
||||
|
}, { |
||||
|
agencyId: 'tabs', |
||||
|
agencyName: 'Tabs 标签页' |
||||
|
}, { |
||||
|
agencyId: 'breadcrumb', |
||||
|
agencyName: 'Breadcrumb 面包屑' |
||||
|
}, { |
||||
|
agencyId: 'dropdown', |
||||
|
agencyName: 'Dropdown 下拉菜单' |
||||
|
}, { |
||||
|
agencyId: 'steps', |
||||
|
agencyName: 'Steps 步骤条' |
||||
|
}] |
||||
|
}, { |
||||
|
agencyId: 'others', |
||||
|
agencyName: 'Others', |
||||
|
subAgencyList: [{ |
||||
|
agencyId: 'dialog', |
||||
|
agencyName: 'Dialog 对话框' |
||||
|
}, { |
||||
|
agencyId: 'tooltip', |
||||
|
agencyName: 'Tooltip 文字提示' |
||||
|
}, { |
||||
|
agencyId: 'popover', |
||||
|
agencyName: 'Popover 弹出框' |
||||
|
}, { |
||||
|
agencyId: 'card', |
||||
|
agencyName: 'Card 卡片' |
||||
|
}, { |
||||
|
agencyId: 'carousel', |
||||
|
agencyName: 'Carousel 走马灯' |
||||
|
}, { |
||||
|
agencyId: 'collapse', |
||||
|
agencyName: 'Collapse 折叠面板' |
||||
|
}] |
||||
|
}] |
||||
|
} |
||||
|
], |
||||
|
categoryList: [], |
||||
|
|
||||
|
|
||||
|
// 列表相关 |
||||
|
// tableUrl: '/gov/guide/guide/list', |
||||
|
tableUrl: 'http://yapi.elinkservice.cn/mock/102/gov/voice/guide/list', |
||||
|
tableParams: { |
||||
|
agencyId: '', // |
||||
|
categoryId: '', //分类 |
||||
|
guideTitle: '' //标题 |
||||
|
}, |
||||
|
|
||||
|
operations: [ |
||||
|
{ |
||||
|
lable: '详情', // 按钮显示名称 |
||||
|
size: 'mini', |
||||
|
style: 'margin: 0 6px;', |
||||
|
type: 'text', |
||||
|
slot: '', |
||||
|
plain: false, |
||||
|
methodName: 'detail', // 回调方法名称 |
||||
|
isShow: (row) => { |
||||
|
return true |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
lable: '编辑', // 按钮显示名称 |
||||
|
size: 'mini', |
||||
|
style: 'margin: 0 6px;', |
||||
|
type: 'text', |
||||
|
slot: '', |
||||
|
plain: false, |
||||
|
methodName: 'edit', // 回调方法名称 |
||||
|
isShow: (row) => { |
||||
|
return true |
||||
|
// if (row.initState === 1) { |
||||
|
// return true |
||||
|
// } else { |
||||
|
// return false |
||||
|
// } |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
lable: '删除', // 按钮显示名称 |
||||
|
size: 'mini', |
||||
|
style: 'margin: 0 6px;', |
||||
|
type: 'text', |
||||
|
slot: '', |
||||
|
plain: false, |
||||
|
methodName: 'del', // 回调方法名称 |
||||
|
isShow: (row) => { |
||||
|
return true |
||||
|
} |
||||
|
} |
||||
|
], |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
components: { |
||||
|
CTable, |
||||
|
DetailForm |
||||
|
}, |
||||
|
activated () { |
||||
|
this.$nextTick(() => { |
||||
|
this.$refs.table.doLayout() // 解决表格错位 |
||||
|
}) |
||||
|
}, |
||||
|
mounted () { |
||||
|
this.initData() |
||||
|
console.log(customerId) |
||||
|
}, |
||||
|
computed: { |
||||
|
tableHeight () { |
||||
|
return this.clientHeight - 60 - 80 - 80 - 100 |
||||
|
}, |
||||
|
|
||||
|
...mapGetters(['clientHeight', 'env']) |
||||
|
}, |
||||
|
methods: { |
||||
|
async initData () { |
||||
|
this.startLoading() |
||||
|
await this.getAgencylist()//获取组织级别 |
||||
|
await this.getcategory()//获取分类 |
||||
|
await this.loadData()//获取指南列表 |
||||
|
this.endLoading() |
||||
|
}, |
||||
|
|
||||
|
loadData () { |
||||
|
this.$refs.table.loadData() |
||||
|
}, |
||||
|
|
||||
|
//新增 |
||||
|
add () { |
||||
|
this.formShow = true |
||||
|
this.$refs['ref_edit_form'].initData("", "A") |
||||
|
}, |
||||
|
|
||||
|
// 详情 |
||||
|
detail (row) { |
||||
|
this.formShow = true |
||||
|
this.$refs['ref_edit_form'].initData(row.guideId, "D") |
||||
|
}, |
||||
|
|
||||
|
edit (row) { |
||||
|
this.formShow = true |
||||
|
this.$refs['ref_edit_form'].initData(row.guideId, "U") |
||||
|
}, |
||||
|
async del (row) { |
||||
|
// const url = '/gov/voice/guidecategory/delete' |
||||
|
const url = 'http://yapi.elinkservice.cn/mock/102/gov/voice/guidecategory/delete' |
||||
|
|
||||
|
const params = { |
||||
|
categoryId: row.guideId |
||||
|
} |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.$message.success("删除成功") |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
cancleBack () { |
||||
|
this.formShow = false |
||||
|
}, |
||||
|
|
||||
|
async getAgencylist () { |
||||
|
// const url = '/gov/org/agency/agencylist' |
||||
|
const url = 'http://yapi.elinkservice.cn/mock/102/gov/org/agency/agencylist' |
||||
|
|
||||
|
const params = {} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.options = [] |
||||
|
this.options.push(data) |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
async getcategory () { |
||||
|
// const url = '/gov/guide/guideccategory/getcategory' |
||||
|
const url = 'http://yapi.elinkservice.cn/mock/102/gov/voice/guidecategory/getcategory' |
||||
|
|
||||
|
const params = { |
||||
|
queryOrigin: 'query' |
||||
|
} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.categoryList = data |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
// 开启加载动画 |
||||
|
startLoading () { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: '正在加载……', // 加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
||||
|
}) |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading () { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close() |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style lang="css" scoped> |
||||
|
.myNote { |
||||
|
display: -webkit-box; |
||||
|
text-overflow: ellipsis; |
||||
|
overflow: hidden; |
||||
|
-webkit-line-clamp: 3; |
||||
|
-webkit-box-orient: vertical; |
||||
|
} |
||||
|
/* .register .el-table .el-table__header-wrapper { |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
}*/ |
||||
|
/* |
||||
|
.register .el-table .el-table__fixed-body-wrapper { |
||||
|
height: calc(100% - 44px); |
||||
|
margin-top: 44px; |
||||
|
overflow-y: auto !important; |
||||
|
} */ |
||||
|
</style> |
||||
|
|
Loading…
Reference in new issue