master
lion 1 year ago
parent d67ccfe548
commit 349166c8c9

@ -0,0 +1,94 @@
<template>
<el-dialog class="common-dialog" :fullscreen='isfullscreen' :title="title" :modal="false" top="2vh" :visible.sync="diaShow" @close="coloseDia"
:width="width">
<div slot="title">
<span class="el-dialog__title">{{title}}</span>
<slot name="searchtype"></slot>
</div>
<div class="dialogConcent" :style="{height:wheight+'px'}">
<iframe id="iframeWin" :src="baseUrl+url" frameborder="0" scrolling="auto" align="center" class="iframeWeb">
</iframe>
</div>
<div slot="footer" class="dialog-footer">
<div>
<el-button size="small" @click="coloseDia"></el-button>
</div>
<slot name="footerbtn"></slot>
</div>
</el-dialog>
</template>
<script>
export default {
props: {
title: {
type: String,
default: "文件预览"
},
width: {
type: String,
default: "60%"
},
isShow: {
type: Boolean,
default: () => {
return false
}
},
type: {
type: String,
default: "showinfo"
},
},
data() {
return {
diaShow: this.isShow,
isfullscreen:false,
url:'',
baseUrl: `${process.env.VUE_APP_PREVIEW_API}?url=`,
wheight: "",
form:{
show:''
}
}
},
watch: {
isShow(val) {
this.diaShow = this.isShow;
},
},
methods: {
coloseDia() {
// this.url = ""
this.diaShow = false
this.url = ''
this.$emit('update:isShow', false)
}
}
}
</script>
<style scoped>
/deep/ .show{
flex-basis: 100%;
}
.dialogConcent {
overflow-y: hidden;
}
.iframeWeb {
text-align: center;
border: none;
display: block;
height: 100vh;
width: 100%;
}
</style>

@ -318,7 +318,6 @@ let base = {
});
}
}
// 遍历b对象将b中独有的属性按照a的顺序插入到a中
for (let key in requestObj) {
if (!form[key]) {

@ -74,8 +74,8 @@
methods: {
//
setPid(pid, pName) {
this.form.pid = pid?pid:0
this.form.pName = pName?pName:'根目录'
this.form.pid = pid ? pid : 0
this.form.pName = pName ? pName : '根目录'
},
submit() {
if (this.id) {
@ -102,8 +102,8 @@
show({
id: this.id,
table_name: this.table_name,
}).then(res => {
this.form = this.base.requestToForm(res,this.form)
}).then(res => {
this.form = this.base.requestToForm(res, this.form)
})
}
},
@ -119,6 +119,12 @@
} else {
this.id = ''
this.type = "add"
this.form = {
pName: '根目录',
name: '',
sort: 0,
pid: 0,
}
this.$refs['dialog'].reset()
}
},
@ -133,8 +139,9 @@
::v-deep .sort,
{
flex-basis: 100%;
}
::v-deep .xy-table-item-content{
width: calc(100% - 140px);
}
::v-deep .xy-table-item-content {
width: calc(100% - 140px);
}
</style>

@ -0,0 +1,149 @@
<template>
<div>
<div>
<div ref="lxHeader">
<lx-header icon="md-apps" :text="$route.meta.title" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<div slot="content">
<div class="searchwrap" style="display: flex;align-items: center;">
<div>
<el-input v-model="select.name" placeholder="请输入名称"></el-input>
</div>
<div>
<el-button type="primary" size="small" @click="select.page=1,getList()"></el-button>
</div>
<div>
<el-button type="primary" size="small" @click="editArea('add')"></el-button>
</div>
</div>
</div>
</lx-header>
</div>
</div>
<div>
<xy-table :list="list" :total="total" @pageIndexChange="pageIndexChange" @pageSizeChange="pageSizeChange"
:table-item="table_item">
<template v-slot:btns>
<el-table-column align='center' label="操作" width="240" header-align="center">
<template slot-scope="scope">
<!-- <el-button type="primary" size="small" @click="editArea('child',scope.row.id,scope.row.name)"></el-button> -->
<el-button type="primary" size="small" @click="editArea('editor',scope.row.id)"></el-button>
<el-popconfirm style="margin:0 10px" @confirm="deleteList(scope.row.id)" title="确定删除吗?">
<el-button type="danger" size="small" slot="reference">删除</el-button>
</el-popconfirm>
</template>
</el-table-column>
</template>
</xy-table>
</div>
<add-area ref="addArea" @refresh="getList"></add-area>
</div>
</template>
<script>
import addArea from './components/addArea.vue';
import {
index,
destroy
} from "@/api/system/baseForm.js"
export default {
components: {
addArea
},
data() {
return {
select: {
name: '',
table_name: 'areas',
page: 1,
page_size: 10,
},
total:0,
list: [],
table_item: [{
type:'index',
width:50
},{
prop: 'name',
label: '区域名称',
align: 'left',
},{
prop: 'sort',
label: '排序',
align: 'left',
}]
}
},
created() {
this.getList()
},
methods: {
editArea(type, id,pName) {
if (type == 'editor') {
this.$refs.addArea.id = id
}
this.$refs.addArea.type = type
this.$refs.addArea.isShow = true
},
pageIndexChange(e) {
this.select.page = e
this.getList()
},
pageSizeChange(e) {
this.select.page_size = e
this.select.page = 1
this.getList()
},
async getList() {
const res = await index({
page_size: this.select.page_size,
page: this.select.page,
table_name: this.select.table_name,
sort_type:'ASC',
sort_name:'sort',
filter: [{
"key": "name",
"op": "like",
"value": this.select.name
}],
})
this.list = res.data
this.total = res.total
},
deleteList(id) {
var that = this;
destroy({
id: id,
table_name: this.select.table_name
}).then(response => {
this.$Message.success('操作成功');
this.getList()
}).catch(error => {
console.log(error)
reject(error)
})
},
}
}
</script>
<style lang="scss" scoped>
.searchwrap {
display: flex;
align-items: center;
&>div {
display: flex;
align-items: center;
margin-right: 10px;
span {
min-width: 70px;
}
}
}
</style>

@ -0,0 +1,127 @@
<template>
<div>
<xy-dialog ref="dialog" :width="40" :is-show.sync="isShow" :type="'form'" :title="type === 'add' ? '新增区域' : '编辑区域'"
:form="form" :rules='rules' @submit="submit">
<template v-slot:name>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;">*</span>区域名称
</div>
<div class="xy-table-item-content">
<el-input v-model="form.name" placeholder="请输入区域名称" clearable style="width: 100%;"></el-input>
</div>
</div>
</template>
<template v-slot:sort>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;"></span>排序
</div>
<div class="xy-table-item-content">
<el-input v-model="form.sort" placeholder="请输入排序" type="number" clearable style="width: 100%;"></el-input>
</div>
</div>
</template>
</xy-dialog>
</div>
</template>
<script>
import {
save,
show,
index
} from "@/api/system/baseForm.js"
import {
deepCopy,
isNull
} from "@/utils";
export default {
components: {
},
data() {
return {
isShow: false,
type: 'add',
id: '',
table_name: 'areas',
list_types: [],
form: {
name: '',
sort: 0
},
rules: {
name: [{
required: true,
message: '请输入区域名称'
}]
}
}
},
created() {},
methods: {
submit() {
if (this.id) {
this.form.id = this.id
}
if (this.type == 'add') {
this.form.id = ''
}
console.log("this.form", this.form)
save({
table_name: this.table_name,
...this.form
}).then(res => {
this.$message({
type: 'success',
message: this.type === 'add' ? '新增成功' : '编辑成功'
})
this.isShow = false
this.$emit('refresh')
})
},
getDetail() {
show({
id: this.id,
table_name: this.table_name,
}).then(res => {
this.form = this.base.requestToForm(res,this.form)
})
},
},
watch: {
isShow(newVal) {
if (newVal) {
if (this.type === 'editor') {
this.getDetail()
}
} else {
this.id = ''
this.type = "add"
this.form = {
name: '',
sort: 0
}
this.$refs['dialog'].reset()
}
},
}
}
</script>
<style scoped lang="scss">
::v-deep .description,
::v-deep .name,
::v-deep .sort,
::v-deep .originize_type_id {
flex-basis: 100%;
}
::v-deep .xy-table-item-content {
width: calc(100% - 140px);
}
</style>

@ -1,31 +1,40 @@
<template>
<div>
<xy-dialog ref="dialog" :width="40" :is-show.sync="isShow" :type="'form'"
:title="type === 'add' ? '新增组织' : '编辑组织'" :form="form" :rules='rules' @submit="submit">
<xy-dialog ref="dialog" :width="40" :is-show.sync="isShow" :type="'form'" :title="type === 'add' ? '新增组织' : '编辑组织'"
:form="form" :rules='rules' @submit="submit">
<template v-slot:name>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;">*</span>组织名称
</div>
<div class="xy-table-item-content">
<el-input v-model="form.name" placeholder="请输入目录名称" clearable style="width: 100%;"></el-input>
<el-input v-model="form.name" placeholder="请输入组织名称" clearable style="width: 100%;"></el-input>
</div>
</div>
</template>
</template>
<template v-slot:originize_type_id>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;">*</span>组织类型
</div>
<div class="xy-table-item-content">
<el-select style="width:100%" v-model="form.originize_type_id" @change="changeTypes" placeholder="请选择">
<el-option
v-for="item in list_types"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
<div class="xy-table-item-content">
<el-select style="width:100%" v-model="form.originize_type_id" @change="changeTypes" placeholder="请选择">
<el-option v-for="item in list_types" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:area_id>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;">*</span>所属区域
</div>
<div class="xy-table-item-content">
<el-select style="width:100%" v-model="form.area_id" @change="changeAreas" placeholder="请选择">
<el-option v-for="item in list_areas" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</div>
</div>
</template>
@ -58,7 +67,7 @@
<script>
import {
save,
show,
show,
index
} from "@/api/system/baseForm.js"
import {
@ -74,29 +83,37 @@
isShow: false,
type: 'add',
id: '',
table_name: 'organizes',
list_types:[],
table_name: 'organizes',
list_types: [],
list_areas: [],
form: {
name: '',
originize_type_id:"",
name: '',
originize_type_id: "",
area_id: '',
sort: 0,
description: '',
originize_type_name:''
description: '',
originize_type_name: '',
area_name: ''
},
rules: {
name: [{
required: true,
message: '请输入组织名称'
}],
originize_type_id: [{
required: true,
message: '请选择组织类型'
}],
originize_type_id: [{
required: true,
message: '请选择组织类型'
}],
area_id: [{
required: true,
message: '请选择所属区域'
}]
}
}
},
created() {
this.getTypeList()
created() {
this.getTypeList()
this.getAreaList()
},
methods: {
submit() {
@ -125,27 +142,46 @@
id: this.id,
table_name: this.table_name,
}).then(res => {
this.form = this.base.requestToForm(res, this.form)
this.form.originize_type_id =res.originize_type_id?parseInt(res.originize_type_id):''
this.form = this.base.requestToForm(res, this.form)
this.form.originize_type_id = res.originize_type_id ? parseInt(res.originize_type_id) : ''
this.form.area_id = res.area_id ? parseInt(res.area_id) : ''
})
},
changeTypes(e) {
if (e) {
this.list_types.map(item => {
if (item.id == e) {
this.form.originize_type_name = item.name
this.form.originize_type_id = item.id
}
})
}
},
async getTypeList() {
const res = await index({
page_size: 999,
page: 1,
table_name: 'organize_types',
})
this.list_types = res.data
},
changeAreas(e) {
if (e) {
this.list_areas.map(item => {
if (item.id == e) {
this.form.area_name = item.name
this.form.area_id = item.id
}
})
}
},
async getAreaList() {
const res = await index({
page_size: 999,
page: 1,
table_name: 'areas',
})
},
changeTypes(e){
if(e){
this.list_types.map(item=>{
if(item.id==e){
this.form.originize_type_name = item.name
this.form.originize_type_id = item.id
}
})
}
},
async getTypeList() {
const res = await index({
page_size: 999,
page: 1,
table_name:'organize_types' ,
})
this.list_types = res.data
this.list_areas = res.data
},
},
watch: {
@ -157,6 +193,13 @@
} else {
this.id = ''
this.type = "add"
this.form = {
name: '',
originize_type_id: "",
sort: 0,
description: '',
originize_type_name: ''
}
this.$refs['dialog'].reset()
}
},
@ -168,11 +211,13 @@
<style scoped lang="scss">
::v-deep .description,
::v-deep .name,
::v-deep .sort,
::v-deep .originize_type_id{
::v-deep .sort,
::v-deep .originize_type_id,
::v-deep .area_id {
flex-basis: 100%;
}
::v-deep .xy-table-item-content{
width: calc(100% - 140px);
}
::v-deep .xy-table-item-content {
width: calc(100% - 140px);
}
</style>

@ -98,7 +98,8 @@
id: this.id,
table_name: this.table_name,
}).then(res => {
this.form = this.base.requestToForm(res, this.form)
this.form = this.base.requestToForm(res,this.form)
})
}
},
@ -110,7 +111,12 @@
}
} else {
this.id = ''
this.type = "add"
this.type = "add"
this.form = {
name: '',
sort: 0,
description: ''
}
this.$refs['dialog'].reset()
}
},

@ -47,7 +47,8 @@
return {
isShow: false,
id: '',
catalogList: [],
catalogList: [],
catalogListBefore:[],
defaultProps: {
children: 'children',
label: 'name'
@ -55,7 +56,8 @@
table_name: 'organize_types',
form: {
name: '',
catalog_ids: []
catalog_ids: [],
catalog_names:''
},
rules: {}
}
@ -72,14 +74,22 @@
sort_name: 'sort',
table_name: 'catalogs',
})
if (res.data.length > 0) {
if (res.data.length > 0) {
this.catalogListBefore = this.base.deepCopy(res.data)
this.catalogList = this.base.buildTree(res.data)
}
},
getSelectedNodes() {
const selectedItems = this.$refs.tree.getCheckedKeys()
this.form.catalog_ids = selectedItems
console.log("selectedItems", selectedItems)
this.form.catalog_ids = selectedItems
let names = []
this.catalogListBefore.map(item=>{
if(selectedItems.includes(item.id)){
names.push(item.name)
}
})
this.form.catalog_names = names.join(",")
console.log("selectedItems",this.catalogListBefore, selectedItems,this.form.catalog_names)
},
submit() {
console.log("this.form", this.form)
@ -101,7 +111,8 @@
id: this.id,
table_name: this.table_name,
}).then(res => {
this.form = this.base.deepCopy(res)
this.form = this.base.requestToForm(res,this.form)
// this.$refs.tree.setCurrentKey(this.res.catalog_ids);
if(res.catalog_ids){
this.$refs.tree.setCheckedKeys(res.catalog_ids,false)
@ -116,7 +127,12 @@
if (newVal) {
this.getDetail()
} else {
this.id = ''
this.id = ''
this.form = {
name: '',
catalog_ids: [],
catalog_names:''
}
this.$refs['dialog'].reset()
}
},

@ -74,6 +74,10 @@
prop: 'originize_type_name',
label: '组织类型',
align: 'left',
},{
prop: 'area_name',
label: '所属区域',
align: 'left',
}]
}
@ -102,7 +106,9 @@
const res = await index({
page_size: this.select.page_size,
page: this.select.page,
table_name: this.select.table_name,
table_name: this.select.table_name,
sort_type:'ASC',
sort_name:'sort',
filter: [{
"key": "name",
"op": "like",

@ -75,6 +75,11 @@
align: 'left',
width: 240
}, {
prop: 'catalog_names',
label: '授权目录',
align: 'left',
width: 240
},{
prop: 'description',
label: '描述',
align: 'left'
@ -110,7 +115,9 @@
const res = await index({
page_size: this.select.page_size,
page: this.select.page,
table_name: this.select.table_name,
table_name: this.select.table_name,
sort_type:'ASC',
sort_name:'sort',
filter: [{
"key": "name",
"op": "like",

@ -24,6 +24,40 @@
</div>
</div>
</template>
<template v-slot:area_ids>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;">*</span>所属区域
</div>
<div class="xy-table-item-content">
<el-select style="width:100%" v-model="form.area_ids" multiple placeholder="请选择">
<el-option
v-for="item in areaList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:tag_ids>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;">*</span>标签
</div>
<div class="xy-table-item-content">
<el-select style="width:100%" v-model="form.tag_ids" multiple placeholder="请选择">
<el-option
v-for="item in tagList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:catalog_id>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
@ -44,8 +78,7 @@
</div>
<div class="xy-table-item-content">
<el-upload :action="action" class='upload-demo' multiple :file-list="filesList" ref="pictureUpload"
:auto-upload="true" :data="uploadOther" :on-success="handlesuccess"
:on-remove="handleRemove">
:auto-upload="true" :data="uploadOther" :on-success="handlesuccess" :on-remove="handleRemove">
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</div>
@ -100,9 +133,13 @@
},
action: `${process.env.VUE_APP_UPLOAD_API}`,
filesList: [],
tagList: [],
areaList: [],
form: {
title: '',
date: '',
area_ids: [],
tag_ids: [],
catalog_id: '',
catalog_name: '',
files: [],
@ -113,16 +150,22 @@
required: true,
message: '请输入标题'
}],
// catalog_id: [{
// required: true,
// message: ''
// }],
area_ids: [{
required: true,
message: '请选择所属区域'
}],
tag_ids: [{
required: true,
message: '请选择标签'
}],
}
}
},
created() {
this.uploadOther.token = getToken();
this.getCatalogList()
this.getCatalogList()
this.getAreaList()
this.getTagList()
},
methods: {
async getCatalogList() {
@ -137,12 +180,34 @@
this.catalogList = this.base.buildTree(res.data)
}
},
async getAreaList() {
const res = await index({
page_size: 999,
page: 1,
sort_type: 'ASC',
sort_name: 'sort',
table_name: 'areas',
})
this.areaList = res.data
},
async getTagList() {
const res = await index({
page_size: 999,
page: 1,
sort_type: 'ASC',
sort_name: 'sort',
table_name: 'record_tags',
})
this.tagList = res.data
},
getSelectedNodes(data, node) {
console.log("data", data)
this.$refs.tree.setCheckedKeys([]); //
this.$refs.tree.setCheckedNodes([data]); //
this.form.catalog_name = data.name
this.form.catalog_id = data.id
this.$refs.tree.setCheckedNodes([data]); //
this.form.catalog_name = data.name
this.form.catalog_id = data.id
this.$forceUpdate()
},
handleRemove(file, fileList) {
@ -163,11 +228,11 @@
} else {
this.form.id = ''
}
if(this.base.isNull(this.form.catalog_id)){
this.$Message.warning("请选择所属目录")
return
}
if (this.base.isNull(this.form.catalog_id)) {
this.$Message.warning("请选择所属目录")
return
}
let _files = []
if (this.filesList.length > 0) {
@ -183,7 +248,7 @@
this.form.files = []
}
console.log("this.form", this.form)
console.log("this.form", this.form)
// return
save({
table_name: this.table_name,
@ -202,18 +267,23 @@
show({
id: this.id,
table_name: this.table_name,
}).then(res => {
this.form = this.base.requestToForm(res,this.form)
this.checkArr = res.catalog_id ? [res.catalog_id] : []
if(res.files_upload_details && res.files_upload_details.length>0){
this.filesList = []
res.files_upload_details.map(item=>{
this.filesList.push({
name:item.original_name,
id:item.id,
url:item.url
})
})
}).then(res => {
console.log("res---",res)
this.form = this.base.requestToForm(res, this.form)
console.log("form---",this.form)
this.checkArr = res.catalog_id ? [res.catalog_id] : [],
this.form.area_ids = res.area_ids?res.area_ids:[]
this.form.tag_ids = res.tag_ids?res.tag_ids:[]
this.form.files = res.files?res.files:[]
if (res.files_upload_details && res.files_upload_details.length > 0) {
this.filesList = []
res.files_upload_details.map(item => {
this.filesList.push({
name: item.original_name,
id: item.id,
url: item.url
})
})
}
this.showTinymce = true
console.log("this.form", this.form)
@ -233,14 +303,16 @@
this.id = ''
this.showTinymce = false
this.checkArr = []
this.filesList = []
this.form = {
title: '',
date: '',
catalog_id: '',
catalog_name: '',
files: [],
content: '',
this.filesList = []
this.form = {
title: '',
date: '',
area_ids: [],
tag_ids: [],
catalog_id: '',
catalog_name: '',
files: [],
content: '',
}
this.$refs['dialog'].reset()
}
@ -256,8 +328,9 @@
::v-deep .catalog_id,
::v-deep .content,
::v-deep .files,
{
flex-basis: 100%;
::v-deep .area_ids,
::v-deep .tag_ids {
flex-basis: 100%;
}
::v-deep .catalog_id .xy-table-item {

@ -0,0 +1,156 @@
<template>
<div>
<xy-dialog ref="dialog" :width="40" :is-show.sync="isShow" :type="'form'"
:title="type === 'add' ? '新增标签' : '编辑标签'" :form="form" :rules='rules' @submit="submit">
<template v-slot:name>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;">*</span>标签名称
</div>
<div class="xy-table-item-content">
<el-input v-model="form.name" placeholder="请输入标签名称" clearable style="width: 100%;"></el-input>
</div>
</div>
</template>
<template v-slot:user_ids>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;">*</span>授权人员
</div>
<div class="xy-table-item-content">
<el-select style="width:100%" @change="changeUser" v-model="form.user_ids" multiple collapse-tags placeholder="请选择">
<el-option
v-for="item in list_users"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:sort>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;"></span>排序
</div>
<div class="xy-table-item-content">
<el-input v-model="form.sort" placeholder="请输入排序" type="number" clearable style="width: 100%;"></el-input>
</div>
</div>
</template>
</xy-dialog>
</div>
</template>
<script>
import {
save,
show,
} from "@/api/system/baseForm.js"
import {
listCommonuser
} from "@/api/common.js"
export default {
components: {
},
data() {
return {
isShow: false,
type: 'add',
id: '',
table_name: 'record_tags',
list_users:[],
form: {
name: '',
user_ids:[],
sort: 0,
},
rules: {
name: [{
required: true,
message: '请输入标签名称'
}]
}
}
},
created() {
this.getUserList()
},
methods: {
changeUser(e){
console.log("e",e)
this.form.user_ids = e
},
submit() {
if (this.id) {
this.form.id = this.id
}
if (this.type == 'add') {
this.form.id = ''
}
console.log("this.form", this.form)
save({
table_name: this.table_name,
...this.form
}).then(res => {
this.$message({
type: 'success',
message: this.type === 'add' ? '新增成功' : '编辑成功'
})
this.isShow = false
this.$emit('refresh')
})
},
getDetail() {
show({
id: this.id,
table_name: this.table_name,
}).then(res => {
this.form = this.base.requestToForm(res,this.form)
this.form.user_ids = res.user_ids?res.user_ids:[]
})
},
async getUserList() {
const res = await listCommonuser({
page_size: 999,
page: 1,
})
this.list_users = res.data
},
},
watch: {
isShow(newVal) {
if (newVal) {
if (this.type === 'editor') {
this.getDetail()
}
} else {
this.id = ''
this.type = "add"
this.form = {
name: '',
user_ids:[],
sort: 0,
}
this.$refs['dialog'].reset()
}
},
}
}
</script>
<style scoped lang="scss">
::v-deep .user_ids,
::v-deep .name,
::v-deep .sort{
flex-basis: 100%;
}
::v-deep .xy-table-item-content{
width: calc(100% - 140px);
}
</style>

@ -0,0 +1,126 @@
<template>
<div>
<xy-dialog ref="dialog" :width="60" :is-show.sync="isShow" :type="'normal'" :title="form.title">
<template v-slot:default>
<div class="article">
<div class="article-title">{{form.title}}</div>
<div v-if="form.tag_ids">
<!-- <el-tag></el-tag> -->
</div>
<div class="article-time">
<div v-if="form.date">{{form.date}}</div>
<div v-if="form.catalog_name">{{form.catalog_name}}</div>
<div v-if="form.area_ids">
</div>
</div>
<div class="article-files" v-if="form.files_upload_details && form.files_upload_details.length>0">
<div v-for="(item,index) in form.files_upload_details">
附件{{index+1}}
<a :href="item.url" target="_blank">{{item.original_name}}</a>
<el-link target="_blank" style="margin:0 10px;" @click="toshowFile(item.url)" type="primary">
预览
</el-link>
</div>
</div>
<div class="article-html" v-if="form.content">
<div v-html="form.content"></div>
</div>
</div>
</template>
<template v-slot:footerContent>
<Button ghost type="primary" @click='isShow=false'>关闭</Button>
</template>
</xy-dialog>
<viewFile ref="viewFile"></viewFile>
</div>
</template>
<script>
import {
show
} from "@/api/system/baseForm.js"
import viewFile from '@/components/viewFile/viewFile.vue'
export default {
components: {
viewFile
},
data() {
return {
isShow: false,
id: '',
table_name: 'records',
form: {}
}
},
created() {
},
methods: {
getDetail() {
show({
id: this.id,
table_name: this.table_name,
}).then(res => {
this.form = this.base.deepCopy(res)
console.log("this.form",this.form)
})
},
toshowFile(url) {
this.$refs.viewFile.url = url
this.$refs.viewFile.diaShow = true
},
},
watch: {
isShow(newVal) {
if (newVal) {
this.getDetail()
} else {
this.id = ''
this.form = {}
}
},
}
}
</script>
<style scoped lang="scss">
.article {
&>div {
margin: 10px;
}
&-title {
font-size: 24px;
text-align: center;
font-weight: bold;
color: #000;
}
&-time {
display: flex;
justify-content: center;
font-size: 20px;
color: rgba(0, 0, 0, 0.6);
&>div {
margin: 0 10px;
}
}
&-files {
color: blue;
cursor: pointer;
text-decoration: underline;
text-indent: 2em;
}
&-html {
line-height: 1.5;
font-size: 20px;
}
}
</style>

@ -35,6 +35,8 @@
<el-table-column align='center' label="操作" width="240" header-align="center">
<template slot-scope="scope">
<!-- <el-button type="primary" size="small" @click="editIndex('child',scope.row.id,scope.row.name)"></el-button> -->
<el-button type="primary" size="small" @click="showIndex('show',scope.row.id)"></el-button>
<el-button type="primary" size="small" @click="editIndex('editor',scope.row.id)"></el-button>
<el-popconfirm style="margin:0 10px" @confirm="deleteList(scope.row.id)" title="确定删除吗?">
<el-button type="danger" size="small" slot="reference">删除</el-button>
@ -48,18 +50,21 @@
</div>
<add-record ref="addRecord" @refresh="getList"></add-record>
<show-record ref="showRecord"></show-record>
</div>
</template>
<script>
import addRecord from './components/addRecord.vue';
import showRecord from './components/showRecord.vue';
import {
index,
destroy
} from "@/api/system/baseForm.js"
export default {
components: {
addRecord
addRecord,
showRecord
},
data() {
return {
@ -127,13 +132,22 @@
},
editIndex(type, id, pName) {
editIndex(type, id) {
if (type == 'editor') {
this.$refs.addRecord.id = id
}
}
// if(this.select.catalog_id){
// this.$refs.addRecord.setCatalogId(this.select.catalog_id)
// }
this.$refs.addRecord.type = type
this.$refs.addRecord.isShow = true
},
showIndex(type, id) {
this.$refs.showRecord.id = id
this.$refs.showRecord.type = type
this.$refs.showRecord.isShow = true
},
pageIndexChange(e) {
this.select.page = e
this.getList()
@ -201,8 +215,8 @@
&_left {
width: 30%;
background: #fff;
padding:10px;
background: #fff;
padding: 10px;
}
&_right {

@ -0,0 +1,150 @@
<template>
<div>
<div>
<div ref="lxHeader">
<lx-header icon="md-apps" :text="$route.meta.title" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<div slot="content">
<div class="searchwrap" style="display: flex;align-items: center;">
<div>
<el-input v-model="select.name" placeholder="请输入名称"></el-input>
</div>
<div>
<el-button type="primary" size="small" @click="select.page=1,getList()"></el-button>
</div>
<div>
<el-button type="primary" size="small" @click="editIndex('add')"></el-button>
</div>
</div>
</div>
</lx-header>
</div>
</div>
<div>
<xy-table :list="list" :total="total" @pageIndexChange="pageIndexChange" @pageSizeChange="pageSizeChange"
:table-item="table_item">
<template v-slot:btns>
<el-table-column align='center' label="操作" width="240" header-align="center">
<template slot-scope="scope">
<!-- <el-button type="primary" size="small" @click="editIndex('child',scope.row.id,scope.row.name)"></el-button> -->
<el-button type="primary" size="small" @click="editIndex('editor',scope.row.id)"></el-button>
<el-popconfirm style="margin:0 10px" @confirm="deleteList(scope.row.id)" title="确定删除吗?">
<el-button type="danger" size="small" slot="reference">删除</el-button>
</el-popconfirm>
</template>
</el-table-column>
</template>
</xy-table>
</div>
<add-tags ref="addTags" @refresh="getList"></add-tags>
</div>
</template>
<script>
import addTags from './components/addTags.vue';
import {
index,
destroy
} from "@/api/system/baseForm.js"
export default {
components: {
addTags
},
data() {
return {
select: {
name: '',
table_name: 'record_tags',
page: 1,
page_size: 10,
},
total:0,
list: [],
table_item: [{
type:'index',
width:50
},{
prop: 'name',
label: '标签名称',
align: 'left',
width:240
},{
prop: 'user_ids',
label: '授权人员',
align: 'left',
}]
}
},
created() {
this.getList()
},
methods: {
editIndex(type, id,pName) {
if (type == 'editor') {
this.$refs.addTags.id = id
}
this.$refs.addTags.type = type
this.$refs.addTags.isShow = true
},
pageIndexChange(e) {
this.select.page = e
this.getList()
},
pageSizeChange(e) {
this.select.page_size = e
this.select.page = 1
this.getList()
},
async getList() {
const res = await index({
page_size: this.select.page_size,
page: this.select.page,
table_name: this.select.table_name,
sort_type:'ASC',
sort_name:'sort',
filter: [{
"key": "name",
"op": "like",
"value": this.select.name
}],
})
this.list = res.data
this.total = res.total
},
deleteList(id) {
var that = this;
destroy({
id: id,
table_name: this.select.table_name
}).then(response => {
this.$Message.success('操作成功');
this.getList()
}).catch(error => {
console.log(error)
reject(error)
})
},
}
}
</script>
<style lang="scss" scoped>
.searchwrap {
display: flex;
align-items: center;
&>div {
display: flex;
align-items: center;
margin-right: 10px;
span {
min-width: 70px;
}
}
}
</style>

@ -19,6 +19,8 @@
<el-table :data="tableData" class="v-table" :height="tableHeight" border style="width: 100%">
<el-table-column type="index" align="center">
</el-table-column>
<el-table-column prop="originze_name" label="组织" width="180">
</el-table-column>
<el-table-column prop="name" label="用户" width="180">
</el-table-column>
<el-table-column prop="username" label="用户名">
@ -66,6 +68,11 @@
<el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="组织" prop="originze_id">
<el-select v-model="form.originze_id" @change="changeOriginze" clearable>
<el-option v-for="item in originzeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="resetForm('form')"> </el-button>
@ -88,6 +95,9 @@
list
} from "../../api/system/role.js";
import {listdept} from "@/api/system/department"
import {
index
} from "@/api/system/baseForm.js"
export default {
components: {
LxHeader
@ -96,6 +106,7 @@
this.initLoad();
var that = this;
this.getDepartmentList();
this.getOrganizeList()
this.loadRole(function() {
that.load();
});
@ -106,6 +117,7 @@
return {
roleList: [],
departmentList: [],
originzeList:[],
checkAll: false,
isIndeterminate: true,
dialogFormVisible: false,
@ -116,6 +128,8 @@
username: "",
password: "",
department_id: "",
originze_id:'',
originze_name:''
},
rules: {
name: [{
@ -134,6 +148,11 @@
required: true,
message: '请输入密码',
trigger: 'blur',
}],
originze_id:[{
required: true,
message: '请选择组织',
trigger: 'blur',
}]
},
tableHeight: 0,
@ -195,6 +214,27 @@
const res = await listdept();
this.departmentList = res;
},
async getOrganizeList() {
const res = await index({
page_size: 999,
page: 1,
table_name: 'organizes'
})
this.originzeList = res.data;
},
changeOriginze(e){
if(e){
this.originzeList.map(item=>{
if(item.id===e){
this.form.originze_id = e
this.form.originze_name = item.name
}
})
}else{
this.form.originze_id = ''
this.form.originze_name = ''
}
},
hasRoles(roles, id) {
return roles.filter((p, i) => {
return p.id == id

Loading…
Cancel
Save