增加功能页面:项目、服务、权限、代理商
This commit is contained in:
parent
22beb2ce31
commit
1da2e35468
|
|
@ -1,12 +1,12 @@
|
|||
<template>
|
||||
|
||||
<vxe-modal class="vxe-table--ignore-clear" id="myModal" @close="modalClose" v-model="visible" :width="width" :height="height"
|
||||
min-width="600" min-height="400" show-zoom resize remember storage transfer>
|
||||
min-width="600" min-height="400" show-zoom resize transfer>
|
||||
<template #title>
|
||||
<span>{{ title }}</span>
|
||||
</template>
|
||||
<template #default>
|
||||
<component :is="app" :dataId="dataId" :pageMode="pageMode" @callback="handleCallback"></component>
|
||||
<component :is="app" :dataId="dataId" :pageOptions="pageOptions" :pageMode="pageMode" @callback="handleCallback"></component>
|
||||
</template>
|
||||
</vxe-modal>
|
||||
|
||||
|
|
@ -18,12 +18,13 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
width:800,
|
||||
height:500,
|
||||
height:800,
|
||||
visible: false,
|
||||
title: "提示",
|
||||
callback: null,
|
||||
dataId: "",
|
||||
pageMode: "", //add edit select
|
||||
pageOptions:{},
|
||||
app: null
|
||||
};
|
||||
},
|
||||
|
|
@ -31,16 +32,19 @@ export default {
|
|||
|
||||
|
||||
open(options) {
|
||||
const { page, title, callback, pageMode, dataId,width = 800,height = 500 } = options || {};
|
||||
|
||||
const { page, title, callback, pageMode, dataId,width = 800,height = 600 , pageOptions = {} } = options || {};
|
||||
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.dataId = dataId;
|
||||
this.pageMode = pageMode;
|
||||
this.title = title;
|
||||
this.pageOptions = pageOptions;
|
||||
this.app = page;
|
||||
this.callback = callback;
|
||||
this.visible = true;
|
||||
setTimeout(() => {
|
||||
this.visible = true;
|
||||
}, 10);
|
||||
},
|
||||
handleCallback(e) {
|
||||
const { callback } = this;
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ var mk = {
|
|||
|
||||
...apis,
|
||||
|
||||
config: config,
|
||||
|
||||
config: config,
|
||||
|
||||
dialog: dialog
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ export default {
|
|||
}
|
||||
return;
|
||||
}
|
||||
resolve(result.data);
|
||||
resolve(result);
|
||||
}).catch((error)=>{
|
||||
if(loading){
|
||||
modal.hideLoading();
|
||||
|
|
@ -41,7 +41,7 @@ export default {
|
|||
|
||||
},
|
||||
|
||||
getPagedData: function({url, method = 'post', data, config}){
|
||||
getPagedData: function({url, method = 'post', data,callback, config}){
|
||||
|
||||
return new Promise((resolve, reject)=>{
|
||||
|
||||
|
|
@ -50,8 +50,7 @@ export default {
|
|||
}
|
||||
if(data.end_time && typeof(data.end_time) == "string"){
|
||||
data.end_time =parseInt(new Date(data.end_time).getTime()/1000);
|
||||
}
|
||||
console.log(data)
|
||||
}
|
||||
request(url, method, data, config).then(response=>{
|
||||
if(!response){
|
||||
reject && reject(response);
|
||||
|
|
@ -72,6 +71,10 @@ export default {
|
|||
return;
|
||||
}
|
||||
resolve(result.data);
|
||||
|
||||
if(callback){
|
||||
callback(result.data);
|
||||
}
|
||||
}).catch((error)=>{
|
||||
resolve({
|
||||
total:0,
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ export default {
|
|||
|
||||
};
|
||||
|
||||
pageData.formOptions = Object.assign(this.$mk.config.defaults.formOptions, pageData.formOptions);
|
||||
pageData.formOptions = Object.assign({},this.$mk.config.defaults.formOptions, pageData.formOptions);
|
||||
|
||||
return pageData;
|
||||
},
|
||||
|
|
@ -117,7 +117,7 @@ export default {
|
|||
id: this.dataId
|
||||
}
|
||||
}).then(a => {
|
||||
this.formOptions.data = a.AdminUser;
|
||||
this.formOptions.data = a.data.AdminUser;
|
||||
}).catch((a)=>{
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ export default {
|
|||
}
|
||||
};
|
||||
|
||||
pageData.gridOptions = Object.assign(this.$mk.config.defaults.gridOptions, pageData.gridOptions);
|
||||
pageData.gridOptions = Object.assign({},this.$mk.config.defaults.gridOptions, pageData.gridOptions);
|
||||
|
||||
return pageData;
|
||||
},
|
||||
|
|
|
|||
|
|
@ -0,0 +1,176 @@
|
|||
<template>
|
||||
<div class="page-body">
|
||||
|
||||
<vxe-form :data="formOptions.data" ref="xForm" :title-width="formOptions.titleWidth"
|
||||
:title-align="formOptions.titleAlign" :rules="formOptions.rules" :items="formOptions.items" titleColon>
|
||||
<template #auth_stop_date="{}">
|
||||
<a-date-picker v-model="auth_stop_date" />
|
||||
</template>
|
||||
</vxe-form>
|
||||
|
||||
|
||||
<div>
|
||||
<a-button type="primary" @click="ok">确定</a-button>
|
||||
<a-button @click="cancel">取消</a-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BASE_URL from '@/services/base/api.js';
|
||||
|
||||
export default {
|
||||
name: 'BaseAgentEdit',
|
||||
|
||||
props: {
|
||||
pageMode: {
|
||||
type: String,
|
||||
default: "edit"
|
||||
},
|
||||
dataId: {
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
data() {
|
||||
|
||||
// 页面数据变量
|
||||
var pageData = {
|
||||
|
||||
|
||||
actions: {
|
||||
create: `${BASE_URL.BASE_URL}/BaseAgent/v1/create`,
|
||||
update: `${BASE_URL.BASE_URL}/BaseAgent/v1/update`,
|
||||
get: `${BASE_URL.BASE_URL}/BaseAgent/v1/detail`
|
||||
},
|
||||
|
||||
auth_stop_date:'',
|
||||
|
||||
formOptions: {
|
||||
data: {
|
||||
"title": "",
|
||||
"short_name": "",
|
||||
"logo": "",
|
||||
"desc": "",
|
||||
"company_type": "",
|
||||
"auth_stop_date": new Date("2080-01-01").getTime() /1000,
|
||||
"status": 1,
|
||||
"token": ""
|
||||
},
|
||||
|
||||
titleWidth: 100,
|
||||
titleAlign: 'right',
|
||||
|
||||
rules: {
|
||||
title: [
|
||||
{ required: true, message: '请输入名称' }
|
||||
],
|
||||
company_type: [
|
||||
{ required: true, message: '请输入代理商类型' }
|
||||
],
|
||||
|
||||
},
|
||||
|
||||
items: [
|
||||
{
|
||||
title: '左侧',
|
||||
children: [
|
||||
{ field: 'title', title: '代理商名称', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入代理商名称' } } },
|
||||
{ field: 'short_name', title: '代理商简写', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入代理商简写' } } },
|
||||
{ field: 'company_type', title: '代理商类型', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入代理商类型' } } },
|
||||
|
||||
{ title: '截止时间', span: 24, slots: { default: 'auth_stop_date' } },
|
||||
{ field: 'desc', title: '描述', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入描述' } } },
|
||||
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
pageData.formOptions = Object.assign({},this.$mk.config.defaults.formOptions, pageData.formOptions);
|
||||
|
||||
return pageData;
|
||||
},
|
||||
created() {
|
||||
if (this.dataId) {
|
||||
this.$mk.post({
|
||||
url: this.actions.get,
|
||||
loading: "加载中...",
|
||||
data: {
|
||||
id: this.dataId
|
||||
}
|
||||
}).then(a => {
|
||||
this.formOptions.data = a.data.BaseAgent;
|
||||
|
||||
if(this.formOptions.data.auth_stop_date){
|
||||
var d = new Date(this.formOptions.data.auth_stop_date * 1000);
|
||||
this.auth_stop_date = d.getFullYear() +"-"+(d.getMonth()+1) +"-"+d.getDate() ;
|
||||
}
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
// 函数
|
||||
methods: {
|
||||
|
||||
|
||||
loadData() {
|
||||
},
|
||||
|
||||
ok() {
|
||||
|
||||
let save = () => {
|
||||
let action = this.pageMode == "add" ? this.actions.create : this.actions.update;
|
||||
let postdata = this.pageMode == "add" ? Object.assign({ id: this.dataId }, this.formOptions.data) : Object.assign({}, this.formOptions.data);
|
||||
if(this.auth_stop_date){
|
||||
postdata.auth_stop_date = parseInt(new Date(this.auth_stop_date).getTime()/1000);
|
||||
}
|
||||
|
||||
this.$mk.post({
|
||||
url: action,
|
||||
loading: "保存中...",
|
||||
data: postdata
|
||||
}).then(() => {
|
||||
this.$mk.success("保存成功");
|
||||
this.$emit("callback", { success: true });
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
};
|
||||
|
||||
this.$refs.xForm.validate((a) => {
|
||||
|
||||
if (a) {
|
||||
let count = 0;
|
||||
for (let name in a) {
|
||||
a[name];
|
||||
count++;
|
||||
}
|
||||
this.$mk.error(`存在${count}项错误,请检查`);
|
||||
} else {
|
||||
save();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
|
||||
cancel() {
|
||||
this.$emit("callback", {});
|
||||
}
|
||||
},
|
||||
// 监听属性
|
||||
watch: {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<style>
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,280 @@
|
|||
<template>
|
||||
<div class="page-body">
|
||||
|
||||
<!-- 工具条 -->
|
||||
<div class="mk-toolbar">
|
||||
<a-button type="primary" @click="pageAdd">
|
||||
新增
|
||||
</a-button>
|
||||
<a-button @click="pageEdit">编辑</a-button>
|
||||
<a-dropdown>
|
||||
<a-menu slot="overlay" @click="handleMenuClick">
|
||||
<a-menu-item key="delete">
|
||||
删除
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
<a-button> 操作
|
||||
<a-icon type="down" />
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- 搜索区 -->
|
||||
<vxe-form :data="searchFormData" :items="searchFormItems" titleColon @submit="onSearch">
|
||||
<template #date="{}">
|
||||
|
||||
<a-form-item label="创建时间" :style="{ display: 'inline-block',width:120 }">
|
||||
</a-form-item>
|
||||
<a-form-item :style="{ display: 'inline-block', width: 'calc(100% - 120px )' }">
|
||||
<a-range-picker @change="onDateChange" />
|
||||
</a-form-item>
|
||||
|
||||
|
||||
|
||||
</template>
|
||||
</vxe-form>
|
||||
|
||||
|
||||
<!-- 表格区 -->
|
||||
<vxe-grid ref='xGrid' v-bind="gridOptions"></vxe-grid>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BASE_URL from '@/services/base/api.js';
|
||||
|
||||
let editPage = () => import("./edit");
|
||||
|
||||
export default {
|
||||
name: 'BaseAgentList',
|
||||
data() {
|
||||
|
||||
// 页面数据变量
|
||||
var pageData = {
|
||||
|
||||
keyName : 'id',
|
||||
actions: {
|
||||
getList: `${BASE_URL.BASE_URL}/BaseAgent/v1/list`,
|
||||
delete: `${BASE_URL.BASE_URL}/BaseAgent/v1/batchDelete`
|
||||
},
|
||||
|
||||
start_time :0,
|
||||
end_time :0,
|
||||
|
||||
//搜索区
|
||||
searchFormData: {
|
||||
name: '',
|
||||
nick_name: '',
|
||||
},
|
||||
searchRules: [
|
||||
{ key: "title", mode: "like" },
|
||||
{ key: "short_name", mode: "like" }
|
||||
],
|
||||
|
||||
|
||||
|
||||
searchFormItems: [
|
||||
{
|
||||
title: '左侧',
|
||||
span: 20,
|
||||
children: [
|
||||
{ field: 'title', title: '代理商名称', span: 7, itemRender: { name: '$input', props: { placeholder: '请输入名称' } } },
|
||||
{ field: 'short_name', title: '代理商简写', span: 7, itemRender: { name: '$input', props: { placeholder: '请输入昵称' } } },
|
||||
{ span: 10, slots: { default: 'date' } }
|
||||
]
|
||||
},
|
||||
{ align: 'right', span: 4, itemRender: { name: '$buttons', children: [{ props: { type: 'submit', content: '搜索', status: 'primary' } }, { props: { type: 'reset', content: '重置' } }] } }
|
||||
],
|
||||
|
||||
|
||||
|
||||
//数据区
|
||||
gridOptions: {
|
||||
height: 600,
|
||||
id: 'datagrid_1',
|
||||
|
||||
proxyConfig: {
|
||||
sort: true, // 启用排序代理,当点击排序时会自动触发 query 行为
|
||||
filter: true, // 启用筛选代理,当点击筛选时会自动触发 query 行为
|
||||
props: {
|
||||
result: 'list', // 配置响应结果列表字段
|
||||
total: 'total' // 配置响应结果总页数字段
|
||||
},
|
||||
// 接收Promise
|
||||
ajax: {
|
||||
// 当点击工具栏查询按钮或者手动提交指令 query或reload 时会被触发
|
||||
query: (options) => {
|
||||
const { page, sorts } = options;
|
||||
var params = {};
|
||||
params.page = page.currentPage;
|
||||
params.limit = page.pageSize;
|
||||
params.order_bys = [];
|
||||
params.search_rules = this.getSearchParms();
|
||||
if (sorts) {
|
||||
sorts.forEach((v) => {
|
||||
params.order_bys.push({
|
||||
column: v.property,
|
||||
order: v.order
|
||||
})
|
||||
});
|
||||
}
|
||||
return this.loadData({ params });
|
||||
}
|
||||
}
|
||||
},
|
||||
columns: [
|
||||
{ type: 'checkbox', width: 50 },
|
||||
{ type: 'seq', width: 50 },
|
||||
{ field: 'title', sortable: true, title: '代理商名称' },
|
||||
{ field: 'short_name', sortable: true, title: '代理商简写', showHeaderOverflow: true },
|
||||
{ field: 'desc', sortable: true, title: '描述', showHeaderOverflow: true }
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
pageData.gridOptions = Object.assign({},this.$mk.config.defaults.gridOptions, pageData.gridOptions);
|
||||
|
||||
return pageData;
|
||||
},
|
||||
// 监听 - 页面每次【加载时】执行
|
||||
onLoad() {
|
||||
|
||||
},
|
||||
// 函数
|
||||
methods: {
|
||||
onDateChange(date) {
|
||||
if(date && date.length){
|
||||
this.start_time = parseInt(date[0]._d.getTime()/ 1000);
|
||||
this.end_time = parseInt(date[1]._d.getTime()/ 1000);
|
||||
}else{
|
||||
this.start_time = 0;
|
||||
this.end_time = 0;
|
||||
}
|
||||
|
||||
},
|
||||
getSearchParms() {
|
||||
var rules = [];
|
||||
let findMode = k => {
|
||||
for (let i in this.searchRules) {
|
||||
if (this.searchRules[i].key == k) return this.searchRules[i].mode;
|
||||
}
|
||||
return "equal";
|
||||
};
|
||||
|
||||
for (let key in this.searchFormData) {
|
||||
let value = this.searchFormData[key];
|
||||
if (value) {
|
||||
let mode = findMode(key);
|
||||
if(mode == "like"){
|
||||
value = "%" + value +"%";
|
||||
}
|
||||
rules.push({
|
||||
column: key,
|
||||
mode: mode,
|
||||
value: value
|
||||
});
|
||||
}
|
||||
}
|
||||
return rules;
|
||||
},
|
||||
getSelectdRow() {
|
||||
let row = this.$refs.xGrid.getCurrentRecord();
|
||||
if (!row) {
|
||||
let rows = this.$refs.xGrid.getCheckboxRecords();
|
||||
if (rows && rows.length) { row = rows[0]; }
|
||||
}
|
||||
return row;
|
||||
},
|
||||
loadData({ params }) {
|
||||
|
||||
params.start_time = this.start_time;
|
||||
params.end_time = this.end_time;
|
||||
|
||||
|
||||
return this.$mk.getPagedData({ url: this.actions.getList, data: params });
|
||||
},
|
||||
|
||||
pageAdd() {
|
||||
this.$mk.dialog.open({
|
||||
page: editPage,
|
||||
title: "新增代理商信息",
|
||||
pageMode: "add",
|
||||
dataId: 0,
|
||||
callback: ({ success }) => {
|
||||
success && this.$refs.xGrid.commitProxy('query')
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
pageEdit() {
|
||||
let row = this.getSelectdRow();
|
||||
if (!row) {
|
||||
this.$mk.msg("请选择行");
|
||||
return;
|
||||
}
|
||||
this.$mk.dialog.open({
|
||||
page: editPage,
|
||||
title: "编辑代理商信息",
|
||||
pageMode: "edit",
|
||||
dataId: row[this.keyName],
|
||||
callback: ({ success }) => {
|
||||
success && this.$refs.xGrid.commitProxy('query')
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
handleMenuClick(e) {
|
||||
if (e.key == "delete") {
|
||||
|
||||
let rows = this.$refs.xGrid.getCheckboxRecords();
|
||||
let ids = [];
|
||||
rows.forEach((row) => {
|
||||
ids.push(row[this.keyName]);
|
||||
|
||||
});
|
||||
|
||||
if (!ids.length) {
|
||||
this.$mk.error("请选择行");
|
||||
return;
|
||||
}
|
||||
|
||||
this.$mk.confirm('您确定要删除吗?').then(type => {
|
||||
if (type == 'confirm') {
|
||||
this.$mk.post({
|
||||
url: this.actions.delete,
|
||||
loading: "删除中...",
|
||||
data: {
|
||||
ids: ids
|
||||
}
|
||||
}).then(() => {
|
||||
this.$mk.success("删除成功");
|
||||
this.onSearch();
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
onSearch() {
|
||||
this.$refs.xGrid.commitProxy('query')
|
||||
}
|
||||
},
|
||||
// 监听属性
|
||||
watch: {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<style>
|
||||
.page-body {
|
||||
padding: 10px 10px;
|
||||
background: white;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,160 @@
|
|||
<template>
|
||||
<div class="page-body">
|
||||
|
||||
<vxe-form :data="formOptions.data" ref="xForm" :title-width="formOptions.titleWidth"
|
||||
:title-align="formOptions.titleAlign" :rules="formOptions.rules" :items="formOptions.items" titleColon>
|
||||
<template #myregion="{}">
|
||||
<a-input-search placeholder="input search text" enter-button />
|
||||
</template>
|
||||
</vxe-form>
|
||||
|
||||
|
||||
<div>
|
||||
<a-button type="primary" @click="ok">确定</a-button>
|
||||
<a-button @click="cancel">取消</a-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BASE_URL from '@/services/base/api.js';
|
||||
|
||||
export default {
|
||||
name: 'BaseCompanyEdit',
|
||||
|
||||
props: {
|
||||
pageMode: {
|
||||
type: String,
|
||||
default: "edit"
|
||||
},
|
||||
dataId: {
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
data() {
|
||||
|
||||
// 页面数据变量
|
||||
var pageData = {
|
||||
|
||||
actions: {
|
||||
create: `${BASE_URL.BASE_URL}/BaseCompany/v1/create`,
|
||||
update: `${BASE_URL.BASE_URL}/BaseCompany/v1/update`,
|
||||
get: `${BASE_URL.BASE_URL}/BaseCompany/v1/detail`
|
||||
},
|
||||
|
||||
formOptions: {
|
||||
data: {
|
||||
"name": "",
|
||||
"nick_name": "",
|
||||
"avatar": "",
|
||||
"email": "",
|
||||
"mobile": "",
|
||||
"password": "",
|
||||
"status": 1,
|
||||
"is_super": 0,
|
||||
"level": 1,
|
||||
"token": ""
|
||||
},
|
||||
|
||||
titleWidth: 100,
|
||||
titleAlign: 'right',
|
||||
|
||||
rules: {
|
||||
name: [
|
||||
{ required: true, message: '请输入名称' }
|
||||
]
|
||||
},
|
||||
|
||||
items: [
|
||||
{
|
||||
title: '左侧',
|
||||
children: [
|
||||
{ field: 'name', title: '名称', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入名称' } } },
|
||||
{ field: 'mobile', title: '联系电话', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入联系电话' } } },
|
||||
{ field: 'nick_name', title: '昵称', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入昵称' } } },
|
||||
{ field: 'email', title: 'email', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入email' } } }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
pageData.formOptions = Object.assign({},this.$mk.config.defaults.formOptions, pageData.formOptions);
|
||||
|
||||
return pageData;
|
||||
},
|
||||
created() {
|
||||
if (this.dataId) {
|
||||
this.$mk.post({
|
||||
url: this.actions.get,
|
||||
loading : "加载中...",
|
||||
data : {
|
||||
id: this.dataId
|
||||
}
|
||||
}).then(a => {
|
||||
this.formOptions.data = a.data.BaseCompany;
|
||||
}).catch((a)=>{
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
// 函数
|
||||
methods: {
|
||||
|
||||
|
||||
loadData() {
|
||||
},
|
||||
|
||||
ok() {
|
||||
|
||||
let save = () => {
|
||||
let action = this.pageMode == "add" ? this.actions.create : this.actions.update;
|
||||
let postdata = this.pageMode == "add" ? Object.assign({ id: this.dataId }, this.formOptions.data) : Object.assign({}, this.formOptions.data);
|
||||
|
||||
this.$mk.post({
|
||||
url: action,
|
||||
loading: "保存中...",
|
||||
data: postdata
|
||||
}).then(() => {
|
||||
this.$mk.success("保存成功");
|
||||
this.$emit("callback", { success: true });
|
||||
}).catch((a)=>{
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
};
|
||||
|
||||
this.$refs.xForm.validate((a) => {
|
||||
|
||||
if (a) {
|
||||
let count = 0;
|
||||
for (let name in a) {
|
||||
a[name];
|
||||
count++;
|
||||
}
|
||||
this.$mk.error(`存在${count}项错误,请检查`);
|
||||
} else {
|
||||
save();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
|
||||
cancel() {
|
||||
this.$emit("callback", {});
|
||||
}
|
||||
},
|
||||
// 监听属性
|
||||
watch: {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<style>
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,281 @@
|
|||
<template>
|
||||
<div class="page-body">
|
||||
|
||||
<!-- 工具条 -->
|
||||
<div class="mk-toolbar">
|
||||
<a-button type="primary" @click="pageAdd">
|
||||
新增
|
||||
</a-button>
|
||||
<a-button @click="pageEdit">编辑</a-button>
|
||||
<a-dropdown>
|
||||
<a-menu slot="overlay" @click="handleMenuClick">
|
||||
<a-menu-item key="delete">
|
||||
删除
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
<a-button> 操作
|
||||
<a-icon type="down" />
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- 搜索区 -->
|
||||
<vxe-form :data="searchFormData" :items="searchFormItems" titleColon @submit="onSearch">
|
||||
<template #date="{}">
|
||||
|
||||
<a-form-item label="创建时间" :style="{ display: 'inline-block',width:120 }">
|
||||
</a-form-item>
|
||||
<a-form-item :style="{ display: 'inline-block', width: 'calc(100% - 120px )' }">
|
||||
<a-range-picker @change="onDateChange" />
|
||||
</a-form-item>
|
||||
|
||||
|
||||
|
||||
</template>
|
||||
</vxe-form>
|
||||
|
||||
|
||||
<!-- 表格区 -->
|
||||
<vxe-grid ref='xGrid' v-bind="gridOptions"></vxe-grid>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BASE_URL from '@/services/base/api.js';
|
||||
|
||||
let editPage = () => import("./edit");
|
||||
|
||||
export default {
|
||||
name: 'BaseCompanyList',
|
||||
data() {
|
||||
|
||||
// 页面数据变量
|
||||
var pageData = {
|
||||
|
||||
keyName : 'id',
|
||||
actions: {
|
||||
getList: `${BASE_URL.BASE_URL}/BaseCompany/v1/list`,
|
||||
delete: `${BASE_URL.BASE_URL}/BaseCompany/v1/batchDelete`
|
||||
},
|
||||
|
||||
start_time :0,
|
||||
end_time :0,
|
||||
|
||||
//搜索区
|
||||
searchFormData: {
|
||||
name: '',
|
||||
nick_name: '',
|
||||
},
|
||||
searchRules: [
|
||||
{ key: "name", mode: "like" },
|
||||
{ key: "nick_name", mode: "like" }
|
||||
],
|
||||
|
||||
|
||||
|
||||
searchFormItems: [
|
||||
{
|
||||
title: '左侧',
|
||||
span: 20,
|
||||
children: [
|
||||
{ field: 'name', title: '名称', span: 7, itemRender: { name: '$input', props: { placeholder: '请输入名称' } } },
|
||||
{ field: 'nick_name', title: '昵称', span: 7, itemRender: { name: '$input', props: { placeholder: '请输入昵称' } } },
|
||||
{ span: 10, slots: { default: 'date' } }
|
||||
]
|
||||
},
|
||||
{ align: 'right', span: 4, itemRender: { name: '$buttons', children: [{ props: { type: 'submit', content: '搜索', status: 'primary' } }, { props: { type: 'reset', content: '重置' } }] } }
|
||||
],
|
||||
|
||||
|
||||
|
||||
//数据区
|
||||
gridOptions: {
|
||||
height: 600,
|
||||
id: 'datagrid_1',
|
||||
|
||||
proxyConfig: {
|
||||
sort: true, // 启用排序代理,当点击排序时会自动触发 query 行为
|
||||
filter: true, // 启用筛选代理,当点击筛选时会自动触发 query 行为
|
||||
props: {
|
||||
result: 'list', // 配置响应结果列表字段
|
||||
total: 'total' // 配置响应结果总页数字段
|
||||
},
|
||||
// 接收Promise
|
||||
ajax: {
|
||||
// 当点击工具栏查询按钮或者手动提交指令 query或reload 时会被触发
|
||||
query: (options) => {
|
||||
const { page, sorts } = options;
|
||||
var params = {};
|
||||
params.page = page.currentPage;
|
||||
params.limit = page.pageSize;
|
||||
params.order_bys = [];
|
||||
params.search_rules = this.getSearchParms();
|
||||
if (sorts) {
|
||||
sorts.forEach((v) => {
|
||||
params.order_bys.push({
|
||||
column: v.property,
|
||||
order: v.order
|
||||
})
|
||||
});
|
||||
}
|
||||
return this.loadData({ params });
|
||||
}
|
||||
}
|
||||
},
|
||||
columns: [
|
||||
{ type: 'checkbox', width: 50 },
|
||||
{ type: 'seq', width: 50 },
|
||||
{ field: 'name', sortable: true, title: '名称' },
|
||||
{ field: 'nick_name', sortable: true, title: '昵称', showHeaderOverflow: true },
|
||||
{ field: 'email', sortable: true, title: 'email', showHeaderOverflow: true },
|
||||
{ field: 'mobile', sortable: true, title: '电话', showHeaderOverflow: true }
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
pageData.gridOptions = Object.assign({},this.$mk.config.defaults.gridOptions, pageData.gridOptions);
|
||||
|
||||
return pageData;
|
||||
},
|
||||
// 监听 - 页面每次【加载时】执行
|
||||
onLoad() {
|
||||
|
||||
},
|
||||
// 函数
|
||||
methods: {
|
||||
onDateChange(date) {
|
||||
if(date && date.length){
|
||||
this.start_time = parseInt(date[0]._d.getTime()/ 1000);
|
||||
this.end_time = parseInt(date[1]._d.getTime()/ 1000);
|
||||
}else{
|
||||
this.start_time = 0;
|
||||
this.end_time = 0;
|
||||
}
|
||||
|
||||
},
|
||||
getSearchParms() {
|
||||
var rules = [];
|
||||
let findMode = k => {
|
||||
for (let i in this.searchRules) {
|
||||
if (this.searchRules[i].key == k) return this.searchRules[i].mode;
|
||||
}
|
||||
return "equal";
|
||||
};
|
||||
|
||||
for (let key in this.searchFormData) {
|
||||
let value = this.searchFormData[key];
|
||||
if (value) {
|
||||
let mode = findMode(key);
|
||||
if(mode == "like"){
|
||||
value = "%" + value +"%";
|
||||
}
|
||||
rules.push({
|
||||
column: key,
|
||||
mode: mode,
|
||||
value: value
|
||||
});
|
||||
}
|
||||
}
|
||||
return rules;
|
||||
},
|
||||
getSelectdRow() {
|
||||
let row = this.$refs.xGrid.getCurrentRecord();
|
||||
if (!row) {
|
||||
let rows = this.$refs.xGrid.getCheckboxRecords();
|
||||
if (rows && rows.length) { row = rows[0]; }
|
||||
}
|
||||
return row;
|
||||
},
|
||||
loadData({ params }) {
|
||||
|
||||
params.start_time = this.start_time;
|
||||
params.end_time = this.end_time;
|
||||
|
||||
|
||||
return this.$mk.getPagedData({ url: this.actions.getList, data: params });
|
||||
},
|
||||
|
||||
pageAdd() {
|
||||
this.$mk.dialog.open({
|
||||
page: editPage,
|
||||
title: "新增公司信息",
|
||||
pageMode: "add",
|
||||
dataId: 0,
|
||||
callback: ({ success }) => {
|
||||
success && this.$refs.xGrid.commitProxy('query')
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
pageEdit() {
|
||||
let row = this.getSelectdRow();
|
||||
if (!row) {
|
||||
this.$mk.msg("请选择行");
|
||||
return;
|
||||
}
|
||||
this.$mk.dialog.open({
|
||||
page: editPage,
|
||||
title: "编辑公司信息",
|
||||
pageMode: "edit",
|
||||
dataId: row[this.keyName],
|
||||
callback: ({ success }) => {
|
||||
success && this.$refs.xGrid.commitProxy('query')
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
handleMenuClick(e) {
|
||||
if (e.key == "delete") {
|
||||
|
||||
let rows = this.$refs.xGrid.getCheckboxRecords();
|
||||
let ids = [];
|
||||
rows.forEach((row) => {
|
||||
ids.push(row[this.keyName]);
|
||||
|
||||
});
|
||||
|
||||
if (!ids.length) {
|
||||
this.$mk.error("请选择行");
|
||||
return;
|
||||
}
|
||||
|
||||
this.$mk.confirm('您确定要删除吗?').then(type => {
|
||||
if (type == 'confirm') {
|
||||
this.$mk.post({
|
||||
url: this.actions.delete,
|
||||
loading: "删除中...",
|
||||
data: {
|
||||
ids: ids
|
||||
}
|
||||
}).then(() => {
|
||||
this.$mk.success("删除成功");
|
||||
this.onSearch();
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
onSearch() {
|
||||
this.$refs.xGrid.commitProxy('query')
|
||||
}
|
||||
},
|
||||
// 监听属性
|
||||
watch: {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<style>
|
||||
.page-body {
|
||||
padding: 10px 10px;
|
||||
background: white;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,351 @@
|
|||
<template>
|
||||
<div class="page-body">
|
||||
|
||||
<a-tabs default-active-key="1" class="formtabs">
|
||||
<a-tab-pane key="1" tab="基本信息">
|
||||
|
||||
|
||||
<vxe-form :data="formOptions.data" ref="xForm" :title-width="formOptions.titleWidth"
|
||||
:title-align="formOptions.titleAlign" :rules="formOptions.rules" :items="formOptions.items" titleColon>
|
||||
<template #myregion="{}">
|
||||
<a-input-search placeholder="input search text" enter-button />
|
||||
</template>
|
||||
</vxe-form>
|
||||
|
||||
<div>
|
||||
<a-button type="primary" @click="ok">确定</a-button>
|
||||
<a-button @click="cancel">取消</a-button>
|
||||
</div>
|
||||
|
||||
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2" tab="服务管理" force-render v-if="isEdit">
|
||||
|
||||
<div class="mk-toolbar">
|
||||
<a-button type="primary" @click="pageAdd">增加服务</a-button>
|
||||
<a-button @click="pageDel">删除服务</a-button>
|
||||
</div>
|
||||
<vxe-grid ref='gridService' v-bind="gridServiceOptions">
|
||||
<template #status="{ row }">
|
||||
<a-switch :checked="row.status ? true : false" @change="onSwitch(row, 'status')" />
|
||||
</template>
|
||||
</vxe-grid>
|
||||
|
||||
</a-tab-pane>
|
||||
|
||||
</a-tabs>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BASE_URL from '@/services/base/api.js';
|
||||
|
||||
|
||||
let serviceListPage = () => import("../BaseService/list");
|
||||
|
||||
export default {
|
||||
|
||||
props: {
|
||||
pageMode: {
|
||||
type: String,
|
||||
default: "edit"
|
||||
},
|
||||
dataId: {
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
data() {
|
||||
|
||||
// 页面数据变量
|
||||
var pageData = {
|
||||
|
||||
actions: {
|
||||
create: `${BASE_URL.BASE_URL}/BaseConfig/v1/create`,
|
||||
update: `${BASE_URL.BASE_URL}/BaseConfig/v1/update`,
|
||||
get: `${BASE_URL.BASE_URL}/BaseConfig/v1/detail`,
|
||||
serviceList: `${BASE_URL.BASE_URL}/BaseConfig/v1/service/list`,
|
||||
serviceAdd: `${BASE_URL.BASE_URL}/BaseConfig/v1/service/add`,
|
||||
serviceDel: `${BASE_URL.BASE_URL}/BaseConfig/v1/service/detele`,
|
||||
serviceOpen: `${BASE_URL.BASE_URL}/BaseConfig/v1/service/open`,
|
||||
serviceClose: `${BASE_URL.BASE_URL}/BaseConfig/v1/service/close`
|
||||
},
|
||||
|
||||
keyName: 'id',
|
||||
isEdit: false,
|
||||
formOptions: {
|
||||
data: {
|
||||
"title": "",
|
||||
"desc": "",
|
||||
"logo": "",
|
||||
"domain": "",
|
||||
"devdomain": "",
|
||||
"appid": "0",
|
||||
"appsecret": "",
|
||||
"token": "1",
|
||||
"status": 1,
|
||||
"accessexpire": 0
|
||||
},
|
||||
|
||||
titleWidth: 100,
|
||||
titleAlign: 'right',
|
||||
|
||||
rules: {
|
||||
title: [
|
||||
{ required: true, message: '请输入标题' }
|
||||
],
|
||||
desc: [
|
||||
{ required: true, message: '请输入描述' }
|
||||
],
|
||||
},
|
||||
|
||||
items: [
|
||||
{
|
||||
title: '左侧',
|
||||
children: [
|
||||
{ field: 'title', title: '项目名', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入项目名' } } },
|
||||
{ field: 'desc', title: '描述', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入描述' } } },
|
||||
{ field: 'logo', title: 'logo', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入LOGO' } } },
|
||||
{ field: 'domain', title: 'domain', span: 24, itemRender: { name: '$input' } },
|
||||
{ field: 'devdomain', title: 'devdomain', span: 24, itemRender: { name: '$input' } },
|
||||
{ field: 'appid', title: 'appid', span: 24, itemRender: { name: '$input' } },
|
||||
{ field: 'appsecret', title: 'appsecret', span: 24, itemRender: { name: '$input' } },
|
||||
{ field: 'token', title: 'token', span: 24, itemRender: { name: '$input' } }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
|
||||
//服务管理 - 数据区
|
||||
gridServiceOptions: {
|
||||
height: 600,
|
||||
id: 'datagrid_service_1',
|
||||
|
||||
proxyConfig: {
|
||||
sort: true, // 启用排序代理,当点击排序时会自动触发 query 行为
|
||||
filter: true, // 启用筛选代理,当点击筛选时会自动触发 query 行为
|
||||
props: {
|
||||
result: 'list', // 配置响应结果列表字段
|
||||
total: 'total' // 配置响应结果总页数字段
|
||||
},
|
||||
// 接收Promise
|
||||
ajax: {
|
||||
// 当点击工具栏查询按钮或者手动提交指令 query或reload 时会被触发
|
||||
query: (options) => {
|
||||
const { page, sorts } = options;
|
||||
var params = {};
|
||||
params.page = page.currentPage;
|
||||
params.limit = page.pageSize;
|
||||
params.order_bys = [];
|
||||
params.search_rules = [];
|
||||
if (sorts) {
|
||||
sorts.forEach((v) => {
|
||||
params.order_bys.push({
|
||||
column: v.property,
|
||||
order: v.order
|
||||
})
|
||||
});
|
||||
}
|
||||
return this.loadDetailData1({ params });
|
||||
}
|
||||
}
|
||||
},
|
||||
columns: [
|
||||
{ type: 'checkbox', width: 50 },
|
||||
{ type: 'seq', width: 50 },
|
||||
{ field: 'name', sortable: true, title: '服务名' },
|
||||
{ field: 'title', sortable: true, title: '标题', showHeaderOverflow: true },
|
||||
{ field: 'port', sortable: true, title: '端口', showHeaderOverflow: true },
|
||||
{ field: 'status', sortable: true, title: '是否启用', slots: { default: 'status' } }
|
||||
]
|
||||
}
|
||||
|
||||
};
|
||||
pageData.gridServiceOptions = Object.assign({}, this.$mk.config.defaults.gridOptions, pageData.gridServiceOptions);
|
||||
pageData.formOptions = Object.assign({}, this.$mk.config.defaults.formOptions, pageData.formOptions);
|
||||
|
||||
return pageData;
|
||||
},
|
||||
created() {
|
||||
|
||||
let dataId = this.getDataId();
|
||||
if (dataId) {
|
||||
this.$mk.post({
|
||||
url: this.actions.get,
|
||||
loading: "加载中...",
|
||||
data: {
|
||||
id: parseInt(dataId)
|
||||
}
|
||||
}).then(a => {
|
||||
this.formOptions.data = a.data.BaseConfig;
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
|
||||
this.isEdit = true;
|
||||
}
|
||||
|
||||
},
|
||||
// 函数
|
||||
methods: {
|
||||
|
||||
|
||||
onSwitch(row) {
|
||||
row.status = row.status ? 0 : 1;
|
||||
this.$mk.post({
|
||||
url: row.status ? this.actions.serviceOpen : this.actions.serviceClose,
|
||||
data: { id: row.id },
|
||||
}).then(() => {
|
||||
this.$mk.msg(row.status ? "开启服务完成" : "停止服务完成");
|
||||
this.$emit("callback", { success: true });
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
|
||||
},
|
||||
getDataId() {
|
||||
|
||||
let dataId = this.dataId;
|
||||
if (this.$route.params.id) {
|
||||
dataId = this.$route.params.id;
|
||||
}
|
||||
return parseInt(dataId || 0);
|
||||
},
|
||||
loadDetailData1({ params }) {
|
||||
|
||||
|
||||
params.start_time = 0;
|
||||
params.end_time = 0;
|
||||
params.beid = this.getDataId();
|
||||
|
||||
return this.$mk.getPagedData({ url: this.actions.serviceList, data: params });
|
||||
},
|
||||
back(){
|
||||
if(!this.isEdit){
|
||||
this.$closePage({
|
||||
closeRoute:"/BaseConfig/BaseConfigAdd"
|
||||
});
|
||||
}else{
|
||||
this.$closePage({
|
||||
closeRoute:"/BaseConfig/BaseConfigUpdate"
|
||||
});
|
||||
}
|
||||
this.$openPage('/BaseConfig/BaseConfigList')
|
||||
},
|
||||
ok() {
|
||||
|
||||
let save = () => {
|
||||
let action = !this.isEdit ? this.actions.create : this.actions.update;
|
||||
let postdata = !this.isEdit ? Object.assign({ id: this.dataId }, this.formOptions.data) : Object.assign({}, this.formOptions.data);
|
||||
if (this.isEdit) {
|
||||
postdata = { BaseConfig: postdata }
|
||||
}
|
||||
this.$mk.post({
|
||||
url: action,
|
||||
loading: "保存中...",
|
||||
data: postdata,
|
||||
}).then(() => {
|
||||
this.$mk.success("保存成功");
|
||||
if(!this.isEdit){
|
||||
this.back();
|
||||
}
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
};
|
||||
|
||||
this.$refs.xForm.validate((a) => {
|
||||
|
||||
if (a) {
|
||||
let count = 0;
|
||||
for (let name in a) {
|
||||
a[name];
|
||||
count++;
|
||||
}
|
||||
this.$mk.error(`存在${count}项错误,请检查`);
|
||||
} else {
|
||||
save();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
pageDel() {
|
||||
let rows = this.$refs.gridService.getCheckboxRecords();
|
||||
let ids = [];
|
||||
rows.forEach((row) => {
|
||||
ids.push(row[this.keyName]);
|
||||
|
||||
});
|
||||
|
||||
if (!ids.length) {
|
||||
this.$mk.error("请选择行");
|
||||
return;
|
||||
}
|
||||
|
||||
this.$mk.confirm('您确定要移除服务吗?').then(type => {
|
||||
if (type == 'confirm') {
|
||||
this.$mk.post({
|
||||
url: this.actions.serviceDel,
|
||||
loading: "移除服务中...",
|
||||
data: {
|
||||
ids: ids
|
||||
}
|
||||
}).then(() => {
|
||||
this.$mk.success("移除服务成功");
|
||||
this.$refs.gridService.commitProxy('query')
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
pageAdd() {
|
||||
this.$mk.dialog.open({
|
||||
page: serviceListPage,
|
||||
title: "选择要添加的服务",
|
||||
pageMode: "select",
|
||||
width: 1000,
|
||||
height: 870,
|
||||
dataId: 0,
|
||||
callback: ({ data }) => {
|
||||
|
||||
this.$mk.post({
|
||||
url: this.actions.serviceAdd,
|
||||
loading: "添加中...",
|
||||
data: {
|
||||
"beid": this.getDataId(),
|
||||
"service_id": data.ids
|
||||
},
|
||||
}).then(() => {
|
||||
this.$mk.success("添加成功");
|
||||
|
||||
this.$refs.gridService.commitProxy('query')
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
cancel() {
|
||||
this.back();
|
||||
}
|
||||
},
|
||||
// 监听属性
|
||||
watch: {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<style>
|
||||
.formtabs .ant-tabs-tabpane {
|
||||
background: white;
|
||||
padding: 12px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,280 @@
|
|||
<template>
|
||||
<div class="page-body">
|
||||
|
||||
<!-- 工具条 -->
|
||||
<div class="mk-toolbar">
|
||||
<a-button type="primary" @click="pageAdd">
|
||||
新增
|
||||
</a-button>
|
||||
<a-button @click="pageEdit">编辑</a-button>
|
||||
<a-dropdown>
|
||||
<a-menu slot="overlay" @click="handleMenuClick">
|
||||
<a-menu-item key="delete">
|
||||
删除
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
|
||||
|
||||
|
||||
<a-button> 操作
|
||||
<a-icon type="down" />
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- 搜索区 -->
|
||||
<vxe-form :data="searchFormData" :items="searchFormItems" titleColon @submit="onSearch">
|
||||
<template #date="{}">
|
||||
|
||||
<a-form-item label="创建时间" :style="{ display: 'inline-block', width: 120 }">
|
||||
</a-form-item>
|
||||
<a-form-item :style="{ display: 'inline-block', width: 'calc(100% - 120px )' }">
|
||||
<a-range-picker @change="onDateChange" />
|
||||
</a-form-item>
|
||||
|
||||
|
||||
|
||||
</template>
|
||||
</vxe-form>
|
||||
|
||||
|
||||
<!-- 表格区 -->
|
||||
<vxe-grid ref='xGrid' v-bind="gridOptions"></vxe-grid>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BASE_URL from '@/services/base/api.js';
|
||||
|
||||
export default {
|
||||
name: 'BaseConfigList',
|
||||
|
||||
|
||||
data() {
|
||||
|
||||
// 页面数据变量
|
||||
var pageData = {
|
||||
|
||||
keyName: 'id',
|
||||
actions: {
|
||||
getList: `${BASE_URL.BASE_URL}/BaseConfig/v1/list`,
|
||||
delete: `${BASE_URL.BASE_URL}/BaseConfig/v1/batchDelete`
|
||||
},
|
||||
|
||||
start_time: 0,
|
||||
end_time: 0,
|
||||
|
||||
//搜索区
|
||||
searchFormData: {
|
||||
name: '',
|
||||
nick_name: '',
|
||||
},
|
||||
searchRules: [
|
||||
{ key: "title", mode: "like" },
|
||||
{ key: "desc", mode: "like" }
|
||||
],
|
||||
|
||||
|
||||
|
||||
searchFormItems: [
|
||||
{
|
||||
title: '左侧',
|
||||
span: 20,
|
||||
children: [
|
||||
{ field: 'title', title: '标题', span: 7, itemRender: { name: '$input', props: { placeholder: '请输入标题' } } },
|
||||
{ field: 'desc', title: '描述', span: 7, itemRender: { name: '$input', props: { placeholder: '请输入描述' } } },
|
||||
{ span: 10, slots: { default: 'date' } }
|
||||
]
|
||||
},
|
||||
{ align: 'right', span: 4, itemRender: { name: '$buttons', children: [{ props: { type: 'submit', content: '搜索', status: 'primary' } }, { props: { type: 'reset', content: '重置' } }] } }
|
||||
],
|
||||
|
||||
|
||||
|
||||
//数据区
|
||||
gridOptions: {
|
||||
height: 600,
|
||||
id: 'datagrid_1',
|
||||
|
||||
proxyConfig: {
|
||||
sort: true, // 启用排序代理,当点击排序时会自动触发 query 行为
|
||||
filter: true, // 启用筛选代理,当点击筛选时会自动触发 query 行为
|
||||
props: {
|
||||
result: 'list', // 配置响应结果列表字段
|
||||
total: 'total' // 配置响应结果总页数字段
|
||||
},
|
||||
// 接收Promise
|
||||
ajax: {
|
||||
// 当点击工具栏查询按钮或者手动提交指令 query或reload 时会被触发
|
||||
query: (options) => {
|
||||
const { page, sorts } = options;
|
||||
var params = {};
|
||||
params.page = page.currentPage;
|
||||
params.limit = page.pageSize;
|
||||
params.order_bys = [];
|
||||
params.search_rules = this.getSearchParms();
|
||||
if (sorts) {
|
||||
sorts.forEach((v) => {
|
||||
params.order_bys.push({
|
||||
column: v.property,
|
||||
order: v.order
|
||||
})
|
||||
});
|
||||
}
|
||||
return this.loadData({ params });
|
||||
}
|
||||
}
|
||||
},
|
||||
columns: [
|
||||
{ type: 'checkbox', width: 50 },
|
||||
{ type: 'seq', width: 50 },
|
||||
{ field: 'title', sortable: true, title: '标题' },
|
||||
{ field: 'desc', sortable: true, title: '描述', showHeaderOverflow: true },
|
||||
{ field: 'logo', sortable: true, title: 'logo', showHeaderOverflow: true },
|
||||
{ field: 'domain', sortable: true, title: 'domain', showHeaderOverflow: true },
|
||||
{ field: 'devdomain', sortable: true, title: 'devdomain', showHeaderOverflow: true },
|
||||
{ field: 'token', sortable: true, title: 'token', showHeaderOverflow: true }
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
pageData.gridOptions = Object.assign(this.$mk.config.defaults.gridOptions, pageData.gridOptions);
|
||||
|
||||
return pageData;
|
||||
},
|
||||
// 监听 - 页面每次【加载时】执行
|
||||
onLoad() {
|
||||
|
||||
},
|
||||
// 函数
|
||||
methods: {
|
||||
|
||||
|
||||
onDateChange(date) {
|
||||
if (date && date.length) {
|
||||
this.start_time = parseInt(date[0]._d.getTime() / 1000);
|
||||
this.end_time = parseInt(date[1]._d.getTime() / 1000);
|
||||
} else {
|
||||
this.start_time = 0;
|
||||
this.end_time = 0;
|
||||
}
|
||||
|
||||
},
|
||||
getSearchParms() {
|
||||
var rules = [];
|
||||
let findMode = k => {
|
||||
for (let i in this.searchRules) {
|
||||
if (this.searchRules[i].key == k) return this.searchRules[i].mode;
|
||||
}
|
||||
return "equal";
|
||||
};
|
||||
|
||||
for (let key in this.searchFormData) {
|
||||
let value = this.searchFormData[key];
|
||||
if (value) {
|
||||
let mode = findMode(key);
|
||||
if (mode == "like") {
|
||||
value = "%" + value + "%";
|
||||
}
|
||||
rules.push({
|
||||
column: key,
|
||||
mode: mode,
|
||||
value: value
|
||||
});
|
||||
}
|
||||
}
|
||||
return rules;
|
||||
},
|
||||
getSelectdRow() {
|
||||
let row = this.$refs.xGrid.getCurrentRecord();
|
||||
if (!row) {
|
||||
let rows = this.$refs.xGrid.getCheckboxRecords();
|
||||
if (rows && rows.length) { row = rows[0]; }
|
||||
}
|
||||
return row;
|
||||
},
|
||||
loadData({ params }) {
|
||||
|
||||
params.start_time = this.start_time;
|
||||
params.end_time = this.end_time;
|
||||
|
||||
|
||||
return this.$mk.getPagedData({ url: this.actions.getList, data: params });
|
||||
},
|
||||
|
||||
pageAdd() {
|
||||
|
||||
this.$openPage("/BaseConfig/BaseConfigAdd");
|
||||
|
||||
},
|
||||
|
||||
pageEdit() {
|
||||
let row = this.getSelectdRow();
|
||||
if (!row) {
|
||||
this.$mk.msg("请选择行");
|
||||
return;
|
||||
}
|
||||
|
||||
this.$openPage("/BaseConfig/BaseConfigUpdate/" + row[this.keyName]);
|
||||
|
||||
},
|
||||
|
||||
handleMenuClick(e) {
|
||||
if (e.key == "delete") {
|
||||
|
||||
let rows = this.$refs.xGrid.getCheckboxRecords();
|
||||
let ids = [];
|
||||
rows.forEach((row) => {
|
||||
ids.push(row[this.keyName]);
|
||||
|
||||
});
|
||||
|
||||
if (!ids.length) {
|
||||
this.$mk.error("请选择行");
|
||||
return;
|
||||
}
|
||||
|
||||
this.$mk.confirm('您确定要删除吗?').then(type => {
|
||||
if (type == 'confirm') {
|
||||
this.$mk.post({
|
||||
url: this.actions.delete,
|
||||
loading: "删除中...",
|
||||
data: {
|
||||
ids: ids
|
||||
}
|
||||
}).then(() => {
|
||||
this.$mk.success("删除成功");
|
||||
this.onSearch();
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
onSearch() {
|
||||
this.$refs.xGrid.commitProxy('query')
|
||||
}
|
||||
},
|
||||
// 监听属性
|
||||
watch: {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<style>
|
||||
.page-body {
|
||||
padding: 10px 10px;
|
||||
background: white;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,154 @@
|
|||
<template>
|
||||
<div class="page-body">
|
||||
|
||||
<vxe-form :data="formOptions.data" ref="xForm" :title-width="formOptions.titleWidth"
|
||||
:title-align="formOptions.titleAlign" :rules="formOptions.rules" :items="formOptions.items" titleColon>
|
||||
<template #myregion="{}">
|
||||
<a-input-search placeholder="input search text" enter-button />
|
||||
</template>
|
||||
</vxe-form>
|
||||
|
||||
|
||||
<div>
|
||||
<a-button type="primary" @click="ok">确定</a-button>
|
||||
<a-button @click="cancel">取消</a-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BASE_URL from '@/services/base/api.js';
|
||||
|
||||
export default {
|
||||
name: 'BasePermissionEdit',
|
||||
|
||||
props: {
|
||||
pageMode: {
|
||||
type: String,
|
||||
default: "edit"
|
||||
},
|
||||
dataId: {
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
data() {
|
||||
|
||||
// 页面数据变量
|
||||
var pageData = {
|
||||
|
||||
actions: {
|
||||
create: `${BASE_URL.BASE_URL}/BasePermission/v1/base/permission/create`,
|
||||
update: `${BASE_URL.BASE_URL}/BasePermission/v1/base/permission/update`,
|
||||
get: `${BASE_URL.BASE_URL}/BasePermission/v1/base/permission/detail`
|
||||
},
|
||||
|
||||
formOptions: {
|
||||
data: {
|
||||
"title": "",
|
||||
"service": "",
|
||||
"permission_code": "",
|
||||
"desc": ""
|
||||
},
|
||||
|
||||
titleWidth: 100,
|
||||
titleAlign: 'right',
|
||||
|
||||
rules: {
|
||||
title: [
|
||||
{ required: true, message: '请输入权限名' }
|
||||
]
|
||||
},
|
||||
|
||||
items: [
|
||||
{
|
||||
title: '左侧',
|
||||
children: [
|
||||
{ field: 'title', title: '权限名', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入权限名' } } },
|
||||
{ field: 'permission_code', title: '编号', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入编号' } } },
|
||||
{ field: 'service', title: 'service', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入service' } } },
|
||||
{ field: 'desc', title: '描述', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入描述' } } }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
pageData.formOptions = Object.assign(this.$mk.config.defaults.formOptions, pageData.formOptions);
|
||||
|
||||
return pageData;
|
||||
},
|
||||
created() {
|
||||
if (this.dataId) {
|
||||
this.$mk.post({
|
||||
url: this.actions.get,
|
||||
loading: "加载中...",
|
||||
data: {
|
||||
id: this.dataId
|
||||
}
|
||||
}).then(a => {
|
||||
this.formOptions.data = a.data.base_permission;
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
// 函数
|
||||
methods: {
|
||||
|
||||
|
||||
loadData() {
|
||||
},
|
||||
|
||||
ok() {
|
||||
|
||||
let save = () => {
|
||||
let action = this.pageMode == "add" ? this.actions.create : this.actions.update;
|
||||
let postdata = this.pageMode == "add" ? Object.assign({ id: this.dataId }, this.formOptions.data) : Object.assign({}, this.formOptions.data);
|
||||
|
||||
this.$mk.post({
|
||||
url: action,
|
||||
loading: "保存中...",
|
||||
data: postdata
|
||||
}).then(() => {
|
||||
this.$mk.success("保存成功");
|
||||
this.$emit("callback", { success: true });
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
};
|
||||
|
||||
this.$refs.xForm.validate((a) => {
|
||||
|
||||
if (a) {
|
||||
let count = 0;
|
||||
for (let name in a) {
|
||||
a[name];
|
||||
count++;
|
||||
}
|
||||
this.$mk.error(`存在${count}项错误,请检查`);
|
||||
} else {
|
||||
save();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
|
||||
cancel() {
|
||||
this.$emit("callback", {});
|
||||
}
|
||||
},
|
||||
// 监听属性
|
||||
watch: {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<style>
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,281 @@
|
|||
<template>
|
||||
<div class="page-body">
|
||||
|
||||
<!-- 工具条 -->
|
||||
<div class="mk-toolbar">
|
||||
<a-button type="primary" @click="pageAdd">
|
||||
新增
|
||||
</a-button>
|
||||
<a-button @click="pageEdit">编辑</a-button>
|
||||
<a-dropdown>
|
||||
<a-menu slot="overlay" @click="handleMenuClick">
|
||||
<a-menu-item key="delete">
|
||||
删除
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
<a-button> 操作
|
||||
<a-icon type="down" />
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- 搜索区 -->
|
||||
<vxe-form :data="searchFormData" :items="searchFormItems" titleColon @submit="onSearch">
|
||||
<template #date="{}">
|
||||
|
||||
<a-form-item label="创建时间" :style="{ display: 'inline-block',width:120 }">
|
||||
</a-form-item>
|
||||
<a-form-item :style="{ display: 'inline-block', width: 'calc(100% - 120px )' }">
|
||||
<a-range-picker @change="onDateChange" />
|
||||
</a-form-item>
|
||||
|
||||
|
||||
|
||||
</template>
|
||||
</vxe-form>
|
||||
|
||||
|
||||
<!-- 表格区 -->
|
||||
<vxe-grid ref='xGrid' v-bind="gridOptions"></vxe-grid>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BASE_URL from '@/services/base/api.js';
|
||||
|
||||
let editPage = () => import("./edit");
|
||||
|
||||
export default {
|
||||
name: 'BasePermissionList',
|
||||
data() {
|
||||
|
||||
// 页面数据变量
|
||||
var pageData = {
|
||||
|
||||
keyName : 'id',
|
||||
actions: {
|
||||
getList: `${BASE_URL.BASE_URL}/BasePermission/v1/base/permission/list`,
|
||||
delete: `${BASE_URL.BASE_URL}/BasePermission/v1/base/permission/batchDelete`
|
||||
},
|
||||
|
||||
start_time :0,
|
||||
end_time :0,
|
||||
|
||||
//搜索区
|
||||
searchFormData: {
|
||||
title: '',
|
||||
permission_code: '',
|
||||
},
|
||||
searchRules: [
|
||||
{ key: "title", mode: "like" },
|
||||
{ key: "permission_code", mode: "like" }
|
||||
],
|
||||
|
||||
|
||||
|
||||
searchFormItems: [
|
||||
{
|
||||
title: '左侧',
|
||||
span: 20,
|
||||
children: [
|
||||
{ field: 'title', title: '权限名', span: 7, itemRender: { name: '$input', props: { placeholder: '请输入权限名' } } },
|
||||
{ field: 'permission_code', title: '编号', span: 7, itemRender: { name: '$input', props: { placeholder: '请输入编号' } } },
|
||||
{ span: 10, slots: { default: 'date' } }
|
||||
]
|
||||
},
|
||||
{ align: 'right', span: 4, itemRender: { name: '$buttons', children: [{ props: { type: 'submit', content: '搜索', status: 'primary' } }, { props: { type: 'reset', content: '重置' } }] } }
|
||||
],
|
||||
|
||||
|
||||
|
||||
//数据区
|
||||
gridOptions: {
|
||||
height: 600,
|
||||
id: 'datagrid_1',
|
||||
|
||||
proxyConfig: {
|
||||
sort: true, // 启用排序代理,当点击排序时会自动触发 query 行为
|
||||
filter: true, // 启用筛选代理,当点击筛选时会自动触发 query 行为
|
||||
props: {
|
||||
result: 'BasePermission', // 配置响应结果列表字段
|
||||
total: 'total' // 配置响应结果总页数字段
|
||||
},
|
||||
// 接收Promise
|
||||
ajax: {
|
||||
// 当点击工具栏查询按钮或者手动提交指令 query或reload 时会被触发
|
||||
query: (options) => {
|
||||
const { page, sorts } = options;
|
||||
var params = {};
|
||||
params.page = page.currentPage;
|
||||
params.limit = page.pageSize;
|
||||
params.order_bys = [];
|
||||
params.search_rules = this.getSearchParms();
|
||||
if (sorts) {
|
||||
sorts.forEach((v) => {
|
||||
params.order_bys.push({
|
||||
column: v.property,
|
||||
order: v.order
|
||||
})
|
||||
});
|
||||
}
|
||||
return this.loadData({ params });
|
||||
}
|
||||
}
|
||||
},
|
||||
columns: [
|
||||
{ type: 'checkbox', width: 50 },
|
||||
{ type: 'seq', width: 50 },
|
||||
{ field: 'title', sortable: true, title: '权限名' },
|
||||
{ field: 'permission_code', sortable: true, title: '编号', showHeaderOverflow: true },
|
||||
{ field: 'service', sortable: true, title: 'service', showHeaderOverflow: true },
|
||||
{ field: 'desc', sortable: true, title: '描述', showHeaderOverflow: true }
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
pageData.gridOptions = Object.assign({},this.$mk.config.defaults.gridOptions, pageData.gridOptions);
|
||||
|
||||
return pageData;
|
||||
},
|
||||
// 监听 - 页面每次【加载时】执行
|
||||
onLoad() {
|
||||
|
||||
},
|
||||
// 函数
|
||||
methods: {
|
||||
onDateChange(date) {
|
||||
if(date && date.length){
|
||||
this.start_time = parseInt(date[0]._d.getTime()/ 1000);
|
||||
this.end_time = parseInt(date[1]._d.getTime()/ 1000);
|
||||
}else{
|
||||
this.start_time = 0;
|
||||
this.end_time = 0;
|
||||
}
|
||||
|
||||
},
|
||||
getSearchParms() {
|
||||
var rules = [];
|
||||
let findMode = k => {
|
||||
for (let i in this.searchRules) {
|
||||
if (this.searchRules[i].key == k) return this.searchRules[i].mode;
|
||||
}
|
||||
return "equal";
|
||||
};
|
||||
|
||||
for (let key in this.searchFormData) {
|
||||
let value = this.searchFormData[key];
|
||||
if (value) {
|
||||
let mode = findMode(key);
|
||||
if(mode == "like"){
|
||||
value = "%" + value +"%";
|
||||
}
|
||||
rules.push({
|
||||
column: key,
|
||||
mode: mode,
|
||||
value: value
|
||||
});
|
||||
}
|
||||
}
|
||||
return rules;
|
||||
},
|
||||
getSelectdRow() {
|
||||
let row = this.$refs.xGrid.getCurrentRecord();
|
||||
if (!row) {
|
||||
let rows = this.$refs.xGrid.getCheckboxRecords();
|
||||
if (rows && rows.length) { row = rows[0]; }
|
||||
}
|
||||
return row;
|
||||
},
|
||||
loadData({ params }) {
|
||||
|
||||
params.start_time = this.start_time;
|
||||
params.end_time = this.end_time;
|
||||
|
||||
|
||||
return this.$mk.getPagedData({ url: this.actions.getList, data: params });
|
||||
},
|
||||
|
||||
pageAdd() {
|
||||
this.$mk.dialog.open({
|
||||
page: editPage,
|
||||
title: "新增权限信息",
|
||||
pageMode: "add",
|
||||
dataId: 0,
|
||||
callback: ({ success }) => {
|
||||
success && this.$refs.xGrid.commitProxy('query')
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
pageEdit() {
|
||||
let row = this.getSelectdRow();
|
||||
if (!row) {
|
||||
this.$mk.msg("请选择行");
|
||||
return;
|
||||
}
|
||||
this.$mk.dialog.open({
|
||||
page: editPage,
|
||||
title: "编辑权限信息",
|
||||
pageMode: "edit",
|
||||
dataId: row[this.keyName],
|
||||
callback: ({ success }) => {
|
||||
success && this.$refs.xGrid.commitProxy('query')
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
handleMenuClick(e) {
|
||||
if (e.key == "delete") {
|
||||
|
||||
let rows = this.$refs.xGrid.getCheckboxRecords();
|
||||
let ids = [];
|
||||
rows.forEach((row) => {
|
||||
ids.push(row[this.keyName]);
|
||||
|
||||
});
|
||||
|
||||
if (!ids.length) {
|
||||
this.$mk.error("请选择行");
|
||||
return;
|
||||
}
|
||||
|
||||
this.$mk.confirm('您确定要删除吗?').then(type => {
|
||||
if (type == 'confirm') {
|
||||
this.$mk.post({
|
||||
url: this.actions.delete,
|
||||
loading: "删除中...",
|
||||
data: {
|
||||
ids: ids
|
||||
}
|
||||
}).then(() => {
|
||||
this.$mk.success("删除成功");
|
||||
this.onSearch();
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
onSearch() {
|
||||
this.$refs.xGrid.commitProxy('query')
|
||||
}
|
||||
},
|
||||
// 监听属性
|
||||
watch: {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<style>
|
||||
.page-body {
|
||||
padding: 10px 10px;
|
||||
background: white;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,365 @@
|
|||
<template>
|
||||
<div class="page-body">
|
||||
|
||||
|
||||
|
||||
|
||||
<a-tabs default-active-key="1" class="formtabs">
|
||||
<a-tab-pane key="1" tab="基本信息">
|
||||
|
||||
|
||||
<vxe-form :data="formOptions.data" ref="xForm" :title-width="formOptions.titleWidth"
|
||||
:title-align="formOptions.titleAlign" :rules="formOptions.rules" :items="formOptions.items" titleColon>
|
||||
<template #myregion="{}">
|
||||
<a-input-search placeholder="input search text" enter-button />
|
||||
</template>
|
||||
</vxe-form>
|
||||
|
||||
<div>
|
||||
<a-button type="primary" @click="ok">确定</a-button>
|
||||
<a-button @click="cancel">取消</a-button>
|
||||
</div>
|
||||
|
||||
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2" tab="路由管理" force-render v-if="isEdit">
|
||||
|
||||
<div class="mk-toolbar">
|
||||
<a-button type="primary" @click="pageAdd">增加路由</a-button>
|
||||
</div>
|
||||
<vxe-grid ref='gridRouter' v-bind="gridRouterOptions">
|
||||
<template #op="{ row }">
|
||||
<vxe-button status="primary" icon="vxe-icon-edit" @click="pageEdit(row)">编辑</vxe-button>
|
||||
<vxe-button icon="vxe-icon-delete" @click="pageDel(row)">删除</vxe-button>
|
||||
</template>
|
||||
</vxe-grid>
|
||||
|
||||
</a-tab-pane>
|
||||
|
||||
</a-tabs>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BASE_URL from '@/services/base/api.js';
|
||||
|
||||
|
||||
let routerEditPage = () => import("./routerEdit");
|
||||
|
||||
export default {
|
||||
|
||||
props: {
|
||||
pageMode: {
|
||||
type: String,
|
||||
default: "edit"
|
||||
},
|
||||
dataId: {
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
data() {
|
||||
|
||||
// 页面数据变量
|
||||
var pageData = {
|
||||
|
||||
actions: {
|
||||
create: `${BASE_URL.BASE_URL}/BaseService/v1/create`,
|
||||
update: `${BASE_URL.BASE_URL}/BaseService/v1/update`,
|
||||
get: `${BASE_URL.BASE_URL}/BaseService/v1/detail`,
|
||||
routerList: `${BASE_URL.BASE_URL}/BaseService/v1/router/list`,
|
||||
routerDel: `${BASE_URL.BASE_URL}/BaseService/v1/router/batchDelete`,
|
||||
},
|
||||
|
||||
keyName: 'id',
|
||||
isEdit: false,
|
||||
formOptions: {
|
||||
data: {
|
||||
"name": "",
|
||||
"title": "",
|
||||
"desc": "",
|
||||
"port": 80,
|
||||
"version": "",
|
||||
"status": 1,
|
||||
"token": ""
|
||||
},
|
||||
|
||||
|
||||
titleWidth: 100,
|
||||
titleAlign: 'right',
|
||||
|
||||
rules: {
|
||||
name: [
|
||||
{ required: true, message: '请输入服务名' }
|
||||
],
|
||||
title: [
|
||||
{ required: true, message: '请输入标题' }
|
||||
],
|
||||
},
|
||||
|
||||
|
||||
items: [
|
||||
{
|
||||
title: '左侧',
|
||||
children: [
|
||||
{ field: 'name', title: '服务名', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入服务名' } } },
|
||||
{ field: 'title', title: '服务标题', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入服务标题' } } },
|
||||
{ field: 'desc', title: '描述', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入描述' } } },
|
||||
{ field: 'port', title: '端口', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入端口' } } },
|
||||
{ field: 'version', title: '版本号', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入版本号' } } }
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
},
|
||||
|
||||
|
||||
//路由管理 - 数据区
|
||||
gridRouterOptions: {
|
||||
height: 600,
|
||||
id: 'datagrid_router_1',
|
||||
|
||||
proxyConfig: {
|
||||
sort: true, // 启用排序代理,当点击排序时会自动触发 query 行为
|
||||
filter: true, // 启用筛选代理,当点击筛选时会自动触发 query 行为
|
||||
props: {
|
||||
result: 'routers', // 配置响应结果列表字段
|
||||
total: 'total' // 配置响应结果总页数字段
|
||||
},
|
||||
// 接收Promise
|
||||
ajax: {
|
||||
// 当点击工具栏查询按钮或者手动提交指令 query或reload 时会被触发
|
||||
query: (options) => {
|
||||
const { page, sorts } = options;
|
||||
var params = {};
|
||||
params.page = page.currentPage;
|
||||
params.limit = page.pageSize;
|
||||
params.order_bys = [];
|
||||
params.search_rules = [];
|
||||
if (sorts) {
|
||||
sorts.forEach((v) => {
|
||||
params.order_bys.push({
|
||||
column: v.property,
|
||||
order: v.order
|
||||
})
|
||||
});
|
||||
}
|
||||
return this.loadDetailData1({ params });
|
||||
}
|
||||
}
|
||||
},
|
||||
treeConfig: {
|
||||
transform: true,
|
||||
expandAll: true,
|
||||
rowField: 'id',
|
||||
parentField: 'parent_id'
|
||||
},
|
||||
checkboxConfig: {
|
||||
reserve: true,
|
||||
highlight: true
|
||||
},
|
||||
columns: [
|
||||
{ field: 'router', treeNode: true, sortable: true, title: '路由名' },
|
||||
{ field: 'name', sortable: true, title: '路由标题', showHeaderOverflow: true },
|
||||
{ field: 'path', sortable: true, title: '路径', showHeaderOverflow: true },
|
||||
{ field: 'parent_router.name', sortable: true, title: '上级路由', showHeaderOverflow: true },
|
||||
{ title: '操作', slots: { default: 'op' } }
|
||||
]
|
||||
}
|
||||
|
||||
};
|
||||
pageData.gridRouterOptions = Object.assign({}, this.$mk.config.defaults.gridOptions, pageData.gridRouterOptions);
|
||||
pageData.formOptions = Object.assign({}, this.$mk.config.defaults.formOptions, pageData.formOptions);
|
||||
|
||||
return pageData;
|
||||
},
|
||||
created() {
|
||||
let dataId = this.getDataId();
|
||||
|
||||
if (dataId) {
|
||||
this.$mk.post({
|
||||
url: this.actions.get,
|
||||
loading: "加载中...",
|
||||
data: {
|
||||
id: parseInt(dataId)
|
||||
}
|
||||
}).then(a => {
|
||||
this.formOptions.data = a.data.BaseService;
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
|
||||
this.isEdit = true;
|
||||
}
|
||||
|
||||
},
|
||||
// 函数
|
||||
methods: {
|
||||
|
||||
|
||||
getDataId() {
|
||||
|
||||
let dataId = this.dataId;
|
||||
if (this.$route.params.id) {
|
||||
dataId = this.$route.params.id;
|
||||
}
|
||||
|
||||
return parseInt(dataId || 0);
|
||||
},
|
||||
loadDetailData1({ params }) {
|
||||
|
||||
|
||||
params.start_time = 0;
|
||||
params.end_time = 0;
|
||||
params.service_id = this.getDataId();
|
||||
|
||||
return this.$mk.getPagedData({
|
||||
url: this.actions.routerList, data: params, callback: () => {
|
||||
|
||||
setTimeout(() => {
|
||||
this.$refs.gridRouter.setAllTreeExpand(true);
|
||||
}, 100);
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
back() {
|
||||
if (!this.isEdit) {
|
||||
this.$closePage({
|
||||
closeRoute: "/BaseService/BaseServiceAdd"
|
||||
});
|
||||
} else {
|
||||
this.$closePage({
|
||||
closeRoute: "/BaseService/BaseServiceUpdate"
|
||||
});
|
||||
}
|
||||
this.$openPage('/BaseService/BaseServiceList')
|
||||
},
|
||||
ok() {
|
||||
|
||||
let save = () => {
|
||||
let action = !this.isEdit ? this.actions.create : this.actions.update;
|
||||
let postdata = !this.isEdit ? Object.assign({ id: this.dataId }, this.formOptions.data) : Object.assign({}, this.formOptions.data);
|
||||
if (this.isEdit) {
|
||||
postdata = { BaseService: postdata }
|
||||
}
|
||||
this.$mk.post({
|
||||
url: action,
|
||||
loading: "保存中...",
|
||||
data: postdata,
|
||||
}).then(() => {
|
||||
this.$mk.success("保存成功");
|
||||
|
||||
if (!this.isEdit) {
|
||||
this.back();
|
||||
}
|
||||
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
};
|
||||
|
||||
this.$refs.xForm.validate((a) => {
|
||||
|
||||
if (a) {
|
||||
let count = 0;
|
||||
for (let name in a) {
|
||||
a[name];
|
||||
count++;
|
||||
}
|
||||
this.$mk.error(`存在${count}项错误,请检查`);
|
||||
} else {
|
||||
save();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
pageDel(row) {
|
||||
let ids = [row.id];
|
||||
|
||||
this.$mk.confirm('您确定要移除路由吗?').then(type => {
|
||||
if (type == 'confirm') {
|
||||
this.$mk.post({
|
||||
url: this.actions.routerDel,
|
||||
loading: "移除路由中...",
|
||||
data: {
|
||||
ids: ids
|
||||
}
|
||||
}).then(() => {
|
||||
this.$mk.success("移除路由成功");
|
||||
this.$refs.gridRouter.commitProxy('query')
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
pageAdd() {
|
||||
this.$mk.dialog.open({
|
||||
page: routerEditPage,
|
||||
title: "添加路由",
|
||||
pageMode: "add",
|
||||
pageOptions: {
|
||||
service_id: this.getDataId()
|
||||
},
|
||||
width: 800,
|
||||
height: 600,
|
||||
dataId: 0,
|
||||
callback: ({ success }) => {
|
||||
if (success) {
|
||||
this.$refs.gridRouter.commitProxy('query')
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
getSelectdRow(grid) {
|
||||
let row = grid.getCurrentRecord();
|
||||
if (!row) {
|
||||
let rows = grid.getCheckboxRecords();
|
||||
if (rows && rows.length) { row = rows[0]; }
|
||||
}
|
||||
return row;
|
||||
},
|
||||
|
||||
pageEdit(row) {
|
||||
this.$mk.dialog.open({
|
||||
page: routerEditPage,
|
||||
title: "编辑路由",
|
||||
pageMode: "edit",
|
||||
pageOptions: {
|
||||
service_id: this.getDataId()
|
||||
},
|
||||
width: 800,
|
||||
height: 600,
|
||||
dataId: row.id,
|
||||
callback: ({ success }) => {
|
||||
if (success) {
|
||||
this.$refs.gridRouter.commitProxy('query')
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
cancel() {
|
||||
this.back();
|
||||
}
|
||||
},
|
||||
// 监听属性
|
||||
watch: {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<style>
|
||||
.formtabs .ant-tabs-tabpane {
|
||||
background: white;
|
||||
padding: 12px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,293 @@
|
|||
<template>
|
||||
<div class="page-body">
|
||||
|
||||
<!-- 工具条 -->
|
||||
<div class="mk-toolbar" v-if="pageMode != 'select'">
|
||||
<a-button type="primary" @click="pageAdd">
|
||||
新增
|
||||
</a-button>
|
||||
<a-button @click="pageEdit">编辑</a-button>
|
||||
<a-dropdown>
|
||||
<a-menu slot="overlay" @click="handleMenuClick">
|
||||
<a-menu-item key="delete">
|
||||
删除
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
<a-button> 操作
|
||||
<a-icon type="down" />
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
</div>
|
||||
|
||||
<div class="mk-toolbar" v-if="pageMode == 'select'">
|
||||
<a-button type="primary" @click="pageSelect">
|
||||
选择
|
||||
</a-button>
|
||||
</div>
|
||||
|
||||
<!-- 搜索区 -->
|
||||
<vxe-form :data="searchFormData" :items="searchFormItems" titleColon @submit="onSearch">
|
||||
<template #date="{}">
|
||||
|
||||
<a-form-item label="创建时间" :style="{ display: 'inline-block',width:120 }">
|
||||
</a-form-item>
|
||||
<a-form-item :style="{ display: 'inline-block', width: 'calc(100% - 120px )' }">
|
||||
<a-range-picker @change="onDateChange" />
|
||||
</a-form-item>
|
||||
|
||||
|
||||
|
||||
</template>
|
||||
</vxe-form>
|
||||
|
||||
|
||||
<!-- 表格区 -->
|
||||
<vxe-grid ref='xGrid' v-bind="gridOptions"></vxe-grid>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BASE_URL from '@/services/base/api.js';
|
||||
export default {
|
||||
name :'BaseServiceList',
|
||||
|
||||
props: {
|
||||
pageMode: {
|
||||
type: String,
|
||||
default: "edit"
|
||||
}
|
||||
},
|
||||
|
||||
data() {
|
||||
|
||||
// 页面数据变量
|
||||
var pageData = {
|
||||
|
||||
keyName : 'id',
|
||||
actions: {
|
||||
getList: `${BASE_URL.BASE_URL}/BaseService/v1/list`,
|
||||
delete: `${BASE_URL.BASE_URL}/BaseService/v1/batchDelete`
|
||||
},
|
||||
|
||||
start_time :0,
|
||||
end_time :0,
|
||||
|
||||
//搜索区
|
||||
searchFormData: {
|
||||
name: '',
|
||||
nick_name: '',
|
||||
},
|
||||
searchRules: [
|
||||
{ key: "name", mode: "like" },
|
||||
{ key: "title", mode: "like" }
|
||||
],
|
||||
|
||||
|
||||
|
||||
searchFormItems: [
|
||||
{
|
||||
title: '左侧',
|
||||
span: 20,
|
||||
children: [
|
||||
{ field: 'name', title: '名称', span: 7, itemRender: { name: '$input', props: { placeholder: '请输入名称' } } },
|
||||
{ field: 'title', title: '标题', span: 7, itemRender: { name: '$input', props: { placeholder: '请输入标题' } } },
|
||||
{ span: 10, slots: { default: 'date' } }
|
||||
]
|
||||
},
|
||||
{ align: 'right', span: 4, itemRender: { name: '$buttons', children: [{ props: { type: 'submit', content: '搜索', status: 'primary' } }, { props: { type: 'reset', content: '重置' } }] } }
|
||||
],
|
||||
|
||||
|
||||
|
||||
//数据区
|
||||
gridOptions: {
|
||||
height: 600,
|
||||
id: 'datagrid_1',
|
||||
|
||||
proxyConfig: {
|
||||
sort: true, // 启用排序代理,当点击排序时会自动触发 query 行为
|
||||
filter: true, // 启用筛选代理,当点击筛选时会自动触发 query 行为
|
||||
props: {
|
||||
result: 'list', // 配置响应结果列表字段
|
||||
total: 'total' // 配置响应结果总页数字段
|
||||
},
|
||||
// 接收Promise
|
||||
ajax: {
|
||||
// 当点击工具栏查询按钮或者手动提交指令 query或reload 时会被触发
|
||||
query: (options) => {
|
||||
const { page, sorts } = options;
|
||||
var params = {};
|
||||
params.page = page.currentPage;
|
||||
params.limit = page.pageSize;
|
||||
params.order_bys = [];
|
||||
params.search_rules = this.getSearchParms();
|
||||
if (sorts) {
|
||||
sorts.forEach((v) => {
|
||||
params.order_bys.push({
|
||||
column: v.property,
|
||||
order: v.order
|
||||
})
|
||||
});
|
||||
}
|
||||
return this.loadData({ params });
|
||||
}
|
||||
}
|
||||
},
|
||||
columns: [
|
||||
{ type: 'checkbox', width: 50 },
|
||||
{ type: 'seq', width: 50 },
|
||||
{ field: 'name', sortable: true, title: '名称' },
|
||||
{ field: 'title', sortable: true, title: '标题', showHeaderOverflow: true },
|
||||
{ field: 'desc', sortable: true, title: '描述', showHeaderOverflow: true },
|
||||
{ field: 'port', sortable: true, title: '端口', showHeaderOverflow: true },
|
||||
{ field: 'version', sortable: true, title: '版本', showHeaderOverflow: true }
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
pageData.gridOptions = Object.assign(this.$mk.config.defaults.gridOptions, pageData.gridOptions);
|
||||
|
||||
return pageData;
|
||||
},
|
||||
// 监听 - 页面每次【加载时】执行
|
||||
onLoad() {
|
||||
|
||||
},
|
||||
// 函数
|
||||
methods: {
|
||||
onDateChange(date) {
|
||||
if(date && date.length){
|
||||
this.start_time = parseInt(date[0]._d.getTime()/ 1000);
|
||||
this.end_time = parseInt(date[1]._d.getTime()/ 1000);
|
||||
}else{
|
||||
this.start_time = 0;
|
||||
this.end_time = 0;
|
||||
}
|
||||
|
||||
},
|
||||
getSearchParms() {
|
||||
var rules = [];
|
||||
let findMode = k => {
|
||||
for (let i in this.searchRules) {
|
||||
if (this.searchRules[i].key == k) return this.searchRules[i].mode;
|
||||
}
|
||||
return "equal";
|
||||
};
|
||||
|
||||
for (let key in this.searchFormData) {
|
||||
let value = this.searchFormData[key];
|
||||
if (value) {
|
||||
let mode = findMode(key);
|
||||
if(mode == "like"){
|
||||
value = "%" + value +"%";
|
||||
}
|
||||
rules.push({
|
||||
column: key,
|
||||
mode: mode,
|
||||
value: value
|
||||
});
|
||||
}
|
||||
}
|
||||
return rules;
|
||||
},
|
||||
getSelectdRow() {
|
||||
let row = this.$refs.xGrid.getCurrentRecord();
|
||||
if (!row) {
|
||||
let rows = this.$refs.xGrid.getCheckboxRecords();
|
||||
if (rows && rows.length) { row = rows[0]; }
|
||||
}
|
||||
return row;
|
||||
},
|
||||
loadData({ params }) {
|
||||
|
||||
params.start_time = this.start_time;
|
||||
params.end_time = this.end_time;
|
||||
|
||||
|
||||
return this.$mk.getPagedData({ url: this.actions.getList, data: params });
|
||||
},
|
||||
|
||||
pageAdd() {
|
||||
|
||||
|
||||
this.$openPage("/BaseService/BaseServiceAdd");
|
||||
},
|
||||
|
||||
pageEdit() {
|
||||
let row = this.getSelectdRow();
|
||||
if (!row) {
|
||||
this.$mk.msg("请选择行");
|
||||
return;
|
||||
}
|
||||
this.$openPage("/BaseService/BaseServiceUpdate/" + row[this.keyName]);
|
||||
},
|
||||
|
||||
pageSelect(){
|
||||
let rows = this.$refs.xGrid.getCheckboxRecords();
|
||||
let ids = [];
|
||||
rows.forEach((row) => {
|
||||
ids.push(row[this.keyName]);
|
||||
|
||||
});
|
||||
|
||||
if (!ids.length) {
|
||||
this.$mk.error("请选择行");
|
||||
return;
|
||||
}
|
||||
this.$emit("callback", { data: {ids:ids} });
|
||||
|
||||
},
|
||||
|
||||
handleMenuClick(e) {
|
||||
if (e.key == "delete") {
|
||||
|
||||
let rows = this.$refs.xGrid.getCheckboxRecords();
|
||||
let ids = [];
|
||||
rows.forEach((row) => {
|
||||
ids.push(row[this.keyName]);
|
||||
|
||||
});
|
||||
|
||||
if (!ids.length) {
|
||||
this.$mk.error("请选择行");
|
||||
return;
|
||||
}
|
||||
|
||||
this.$mk.confirm('您确定要删除吗?').then(type => {
|
||||
if (type == 'confirm') {
|
||||
this.$mk.post({
|
||||
url: this.actions.delete,
|
||||
loading: "删除中...",
|
||||
data: {
|
||||
ids: ids
|
||||
}
|
||||
}).then(() => {
|
||||
this.$mk.success("删除成功");
|
||||
this.onSearch();
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
onSearch() {
|
||||
this.$refs.xGrid.commitProxy('query')
|
||||
}
|
||||
},
|
||||
// 监听属性
|
||||
watch: {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<style>
|
||||
.page-body {
|
||||
padding: 10px 10px;
|
||||
background: white;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,286 @@
|
|||
<template>
|
||||
<div class="page-body router-edit-page">
|
||||
|
||||
<vxe-form :data="formOptions.data" ref="xForm" :title-width="formOptions.titleWidth"
|
||||
:title-align="formOptions.titleAlign" :rules="formOptions.rules" :items="formOptions.items" titleColon>
|
||||
<template #parent_router="{}">
|
||||
<vxe-pulldown ref="pulldownParent" transfer>
|
||||
<template #default>
|
||||
<vxe-input v-model="parentName" suffix-icon="vxe-icon-search" placeholder="选择上级路由"
|
||||
@keyup="pulldownKeyupEvent" @focus="pulldownFocusEvent" @suffix-click="pulldownSuffixClick"></vxe-input>
|
||||
</template>
|
||||
<template #dropdown>
|
||||
<div class="my-dropdown">
|
||||
<vxe-grid ref="gridParent" v-bind="gridRouterParentOptions" @cell-click="pulldownCellClickEvent">
|
||||
</vxe-grid>
|
||||
</div>
|
||||
</template>
|
||||
</vxe-pulldown>
|
||||
</template>
|
||||
|
||||
|
||||
|
||||
</vxe-form>
|
||||
|
||||
|
||||
<div>
|
||||
<a-button type="primary" @click="ok">确定</a-button>
|
||||
<a-button @click="cancel">取消</a-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BASE_URL from '@/services/base/api.js';
|
||||
|
||||
export default {
|
||||
|
||||
props: {
|
||||
pageMode: {
|
||||
type: String,
|
||||
default: "edit"
|
||||
},
|
||||
pageOptions: {
|
||||
type: Object
|
||||
},
|
||||
dataId: {
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
data() {
|
||||
|
||||
// 页面数据变量
|
||||
var pageData = {
|
||||
|
||||
actions: {
|
||||
create: `${BASE_URL.BASE_URL}/BaseService/v1/router/create`,
|
||||
update: `${BASE_URL.BASE_URL}/BaseService/v1/router/update`,
|
||||
get: `${BASE_URL.BASE_URL}/BaseService/v1/router/detail`,
|
||||
list: `${BASE_URL.BASE_URL}/BaseService/v1/router/list`
|
||||
},
|
||||
|
||||
service_id: 0,
|
||||
parentName: '',
|
||||
|
||||
formOptions: {
|
||||
data: {
|
||||
"service_id": 1,
|
||||
"router": "",
|
||||
"parent_id": 0,
|
||||
"name": "",
|
||||
"path": "",
|
||||
"icon": "",
|
||||
"component": "",
|
||||
"sort": 1,
|
||||
"permission": "",
|
||||
"link": "",
|
||||
"redirect": "",
|
||||
"role": "",
|
||||
"route_type": 0,
|
||||
"invisible": 0,
|
||||
"status": 1
|
||||
},
|
||||
|
||||
titleWidth: 100,
|
||||
titleAlign: 'right',
|
||||
|
||||
rules: {
|
||||
router: [
|
||||
{ required: true, message: '请输入路由名' }
|
||||
],
|
||||
name: [
|
||||
{ required: true, message: '请输入路由标题' }
|
||||
],
|
||||
path: [
|
||||
{ required: true, message: '请输入路由路径' }
|
||||
],
|
||||
},
|
||||
|
||||
items: [
|
||||
{
|
||||
title: '左侧',
|
||||
children: [
|
||||
{ field: 'router', title: '路由名', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入路由名' } } },
|
||||
{ title: '上级路由', span: 24, slots: { default: 'parent_router' } },
|
||||
{ field: 'name', title: '路由标题', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入路由标题' } } },
|
||||
{ field: 'path', title: '路径', span: 24, itemRender: { name: '$input', props: { placeholder: '请输入路径' } } }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
|
||||
gridRouterParentOptions: {
|
||||
height: 400,
|
||||
id: 'datagrid_router_parent_1',
|
||||
|
||||
proxyConfig: {
|
||||
sort: true, // 启用排序代理,当点击排序时会自动触发 query 行为
|
||||
filter: true, // 启用筛选代理,当点击筛选时会自动触发 query 行为
|
||||
props: {
|
||||
result: 'routers', // 配置响应结果列表字段
|
||||
total: 'total' // 配置响应结果总页数字段
|
||||
},
|
||||
// 接收Promise
|
||||
ajax: {
|
||||
// 当点击工具栏查询按钮或者手动提交指令 query或reload 时会被触发
|
||||
query: (options) => {
|
||||
const { page, sorts } = options;
|
||||
var params = {};
|
||||
params.page = page.currentPage;
|
||||
params.limit = page.pageSize;
|
||||
params.order_bys = [];
|
||||
params.search_rules = [];
|
||||
if (sorts) {
|
||||
sorts.forEach((v) => {
|
||||
params.order_bys.push({
|
||||
column: v.property,
|
||||
order: v.order
|
||||
})
|
||||
});
|
||||
}
|
||||
return this.loadParentGrid({ params });
|
||||
}
|
||||
}
|
||||
},
|
||||
sortConfig: {
|
||||
},
|
||||
treeConfig: {
|
||||
transform: true,
|
||||
expandAll: true,
|
||||
rowField: 'id',
|
||||
parentField: 'parent_id'
|
||||
},
|
||||
checkboxConfig: {
|
||||
reserve: true,
|
||||
highlight: true
|
||||
},
|
||||
columns: [
|
||||
{ field: 'router', treeNode: true, sortable: true, title: '路由名' },
|
||||
{ field: 'name', sortable: true, title: '路由标题', showHeaderOverflow: true },
|
||||
{ field: 'path', sortable: true, title: '路径', showHeaderOverflow: true },
|
||||
{ field: 'parent_router.name', sortable: true, title: '上级路由', showHeaderOverflow: true }
|
||||
]
|
||||
}
|
||||
|
||||
};
|
||||
pageData.gridRouterParentOptions = Object.assign({}, this.$mk.config.defaults.gridOptions, pageData.gridRouterParentOptions);
|
||||
pageData.formOptions = Object.assign(this.$mk.config.defaults.formOptions, pageData.formOptions);
|
||||
|
||||
return pageData;
|
||||
},
|
||||
created() {
|
||||
|
||||
this.service_id = this.pageOptions.service_id;
|
||||
|
||||
if (this.dataId) {
|
||||
this.$mk.post({
|
||||
url: this.actions.get,
|
||||
loading: "加载中...",
|
||||
data: {
|
||||
id: this.dataId
|
||||
}
|
||||
}).then(a => {
|
||||
this.formOptions.data = a.data.router;
|
||||
if(this.formOptions.data.parent_router){
|
||||
this.parentName = this.formOptions.data.parent_router.name;
|
||||
}
|
||||
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
// 函数
|
||||
methods: {
|
||||
|
||||
|
||||
loadData() {
|
||||
},
|
||||
|
||||
loadParentGrid({ params }) {
|
||||
|
||||
|
||||
params.start_time = 0;
|
||||
params.end_time = 0;
|
||||
params.service_id = this.service_id;
|
||||
|
||||
return this.$mk.getPagedData({ url: this.actions.list, data: params });
|
||||
},
|
||||
|
||||
ok() {
|
||||
|
||||
let save = () => {
|
||||
let action = this.pageMode == "add" ? this.actions.create : this.actions.update;
|
||||
let postdata = this.pageMode == "add" ? Object.assign({ id: this.dataId }, this.formOptions.data) : Object.assign({}, this.formOptions.data);
|
||||
|
||||
postdata.service_id = this.service_id;
|
||||
if (this.pageMode != "add") {
|
||||
//postdata = { BaseService:postdata}
|
||||
}
|
||||
this.$mk.post({
|
||||
url: action,
|
||||
loading: "保存中...",
|
||||
data: postdata,
|
||||
}).then(() => {
|
||||
this.$mk.success("保存成功");
|
||||
this.$emit("callback", { success: true });
|
||||
}).catch((a) => {
|
||||
this.$mk.error(a.data.msg);
|
||||
});
|
||||
};
|
||||
|
||||
this.$refs.xForm.validate((a) => {
|
||||
|
||||
if (a) {
|
||||
let count = 0;
|
||||
for (let name in a) {
|
||||
a[name];
|
||||
count++;
|
||||
}
|
||||
this.$mk.error(`存在${count}项错误,请检查`);
|
||||
} else {
|
||||
save();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
|
||||
cancel() {
|
||||
this.$emit("callback", {});
|
||||
},
|
||||
|
||||
|
||||
pulldownFocusEvent() {
|
||||
this.$refs.pulldownParent.showPanel()
|
||||
},
|
||||
pulldownKeyupEvent() {
|
||||
|
||||
},
|
||||
pulldownSuffixClick() {
|
||||
this.$refs.pulldownParent.togglePanel()
|
||||
},
|
||||
pulldownCellClickEvent({ row }) {
|
||||
this.formOptions.data.parent_id = row.id;
|
||||
this.parentName = row.name;
|
||||
this.$refs.pulldownParent.hidePanel()
|
||||
},
|
||||
},
|
||||
// 监听属性
|
||||
watch: {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<style>
|
||||
.router-edit-page .vxe-pulldown {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
|
||||
|
||||
|
||||
// 视图组件
|
||||
const view = {
|
||||
tabs: () => import('@/layouts/tabs'),
|
||||
blank: () => import('@/layouts/BlankView'),
|
||||
page: () => import('@/layouts/PageView')
|
||||
}
|
||||
|
||||
|
||||
// 路由组件注册
|
||||
const BaseAgentRouterMap = {
|
||||
BaseAgent:{
|
||||
name: '代理管理',
|
||||
icon: 'idcard',
|
||||
component: view.page,
|
||||
meta: {
|
||||
},
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseAgentList:{
|
||||
name: '代理管理',
|
||||
icon: 'idcard',
|
||||
path: '/BaseAgent/BaseAgentList',
|
||||
component: () => import('@/pages/Middle/Base/BaseAgent/list'),
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseAgentAdd:{
|
||||
name: '代理管理',
|
||||
icon: 'idcard',
|
||||
path: '/BaseAgent/BaseAgentAdd',
|
||||
component: () => import('@/pages/Middle/Base/BaseAgent/edit'),
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseAgentUpdate:{
|
||||
name: '代理管理',
|
||||
icon: 'idcard',
|
||||
path: '/BaseAgent/BaseAgentUpdate/:id',
|
||||
component: () => import('@/pages/Middle/Base/BaseAgent/edit'),
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseAgentDetail:{
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
export default BaseAgentRouterMap
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
|
||||
|
||||
|
||||
// 视图组件
|
||||
const view = {
|
||||
tabs: () => import('@/layouts/tabs'),
|
||||
blank: () => import('@/layouts/BlankView'),
|
||||
page: () => import('@/layouts/PageView')
|
||||
}
|
||||
|
||||
|
||||
// 路由组件注册
|
||||
const BaseCompanyRouterMap = {
|
||||
BaseCompany:{
|
||||
name: '公司管理',
|
||||
icon: 'idcard',
|
||||
component: view.page,
|
||||
meta: {
|
||||
},
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseCompanyList:{
|
||||
name: '公司管理',
|
||||
icon: 'idcard',
|
||||
path: '/BaseCompany/BaseCompanyList',
|
||||
component: () => import('@/pages/Middle/Base/BaseCompany/list'),
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseCompanyAdd:{
|
||||
name: '公司管理',
|
||||
icon: 'idcard',
|
||||
path: '/BaseCompany/BaseCompanyAdd',
|
||||
component: () => import('@/pages/Middle/Base/BaseCompany/edit'),
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseCompanyUpdate:{
|
||||
name: '公司管理',
|
||||
icon: 'idcard',
|
||||
path: '/BaseCompany/BaseCompanyUpdate/:id',
|
||||
component: () => import('@/pages/Middle/Base/BaseCompany/edit'),
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseCompanyDetail:{
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
export default BaseCompanyRouterMap
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
|
||||
|
||||
|
||||
// 视图组件
|
||||
const view = {
|
||||
tabs: () => import('@/layouts/tabs'),
|
||||
blank: () => import('@/layouts/BlankView'),
|
||||
page: () => import('@/layouts/PageView')
|
||||
}
|
||||
|
||||
|
||||
// 路由组件注册
|
||||
const BaseConfigRouterMap = {
|
||||
BaseConfig:{
|
||||
name: '项目管理',
|
||||
icon: 'idcard',
|
||||
component: view.page,
|
||||
meta: {
|
||||
},
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseConfigList:{
|
||||
name: '项目列表',
|
||||
icon: 'idcard',
|
||||
path: '/BaseConfig/BaseConfigList',
|
||||
component: () => import('@/pages/Middle/Base/BaseConfig/list'),
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseConfigAdd:{
|
||||
name: '项目管理编辑',
|
||||
icon: 'idcard',
|
||||
path: '/BaseConfig/BaseConfigAdd',
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
component: () => import('@/pages/Middle/Base/BaseConfig/edit'),
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseConfigUpdate:{
|
||||
name: '项目管理编辑',
|
||||
icon: 'idcard',
|
||||
path: '/BaseConfig/BaseConfigUpdate/:id',
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
component: () => import('@/pages/Middle/Base/BaseConfig/edit'),
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseConfigDetail:{
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default BaseConfigRouterMap
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
|
||||
|
||||
|
||||
// 视图组件
|
||||
const view = {
|
||||
tabs: () => import('@/layouts/tabs'),
|
||||
blank: () => import('@/layouts/BlankView'),
|
||||
page: () => import('@/layouts/PageView')
|
||||
}
|
||||
|
||||
|
||||
// 路由组件注册
|
||||
const BasePermissionRouterMap = {
|
||||
BasePermission:{
|
||||
name: '权限管理',
|
||||
icon: 'idcard',
|
||||
component: view.page,
|
||||
meta: {
|
||||
},
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BasePermissionList:{
|
||||
name: '权限管理',
|
||||
icon: 'idcard',
|
||||
path: '/BasePermission/BasePermissionList',
|
||||
component: () => import('@/pages/Middle/Base/BasePermission/list'),
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BasePermissionAdd:{
|
||||
name: '权限管理',
|
||||
icon: 'idcard',
|
||||
path: '/BasePermission/BasePermissionAdd',
|
||||
component: () => import('@/pages/Middle/Base/BasePermission/edit'),
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BasePermissionUpdate:{
|
||||
name: '权限管理',
|
||||
icon: 'idcard',
|
||||
path: '/BasePermission/BasePermissionUpdate/:id',
|
||||
component: () => import('@/pages/Middle/Base/BasePermission/edit'),
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BasePermissionDetail:{
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
export default BasePermissionRouterMap
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
|
||||
|
||||
|
||||
// 视图组件
|
||||
const view = {
|
||||
tabs: () => import('@/layouts/tabs'),
|
||||
blank: () => import('@/layouts/BlankView'),
|
||||
page: () => import('@/layouts/PageView')
|
||||
}
|
||||
|
||||
|
||||
// 路由组件注册
|
||||
const BaseServiceRouterMap = {
|
||||
BaseService:{
|
||||
name: '服务管理',
|
||||
icon: 'idcard',
|
||||
component: view.page,
|
||||
meta: {
|
||||
},
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseServiceList:{
|
||||
name: '服务管理',
|
||||
icon: 'idcard',
|
||||
path: '/BaseService/BaseServiceList',
|
||||
component: () => import('@/pages/Middle/Base/BaseService/list'),
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseServiceAdd:{
|
||||
name: '服务管理',
|
||||
icon: 'idcard',
|
||||
path: '/BaseService/BaseServiceAdd',
|
||||
component: () => import('@/pages/Middle/Base/BaseService/edit'),
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseServiceUpdate:{
|
||||
name: '服务管理',
|
||||
icon: 'idcard',
|
||||
path: '/BaseService/BaseServiceUpdate/:id',
|
||||
component: () => import('@/pages/Middle/Base/BaseService/edit'),
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
authority: {
|
||||
permission:[],
|
||||
}
|
||||
},
|
||||
BaseServiceDetail:{
|
||||
meta: {
|
||||
invisible:true,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
export default BaseServiceRouterMap
|
||||
|
|
@ -16,10 +16,8 @@ const routesConfig = [
|
|||
name: '403'
|
||||
},
|
||||
|
||||
]
|
||||
|
||||
]
|
||||
const options = {
|
||||
routes: parseRoutes(routesConfig, routerMap)
|
||||
}
|
||||
|
||||
}
|
||||
export default options
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@ Router.prototype.push = function push(location) { // 重写原型对象中的pus
|
|||
function initRouter(isAsync) { // 初始化路由
|
||||
const options = isAsync ? require('./async/config.async').default : require('./config').default // 引入路由配置
|
||||
formatRoutes(options.routes) // 格式化路由
|
||||
console.log(options)
|
||||
return new Router(options) // 返回路由实例
|
||||
}
|
||||
export { loginIgnore, initRouter } // 导出路由配置和初始化路由方法
|
||||
|
|
|
|||
|
|
@ -3,13 +3,11 @@ import BaseRouterMap from './async/base.map.js'
|
|||
|
||||
|
||||
import AdminUserRouterMap from '@/router/Middle/Admin/AdminUser/router.map.js'
|
||||
// import AdminConfigRouterMap from '@/router/Middle/Admin/AdminConfig/router.map.js'
|
||||
// import AdminServiceRouterMap from '@/router/Middle/Admin/AdminService/router.map.js'
|
||||
// import AdminPermissionRouterMap from '@/router/Middle/Admin/AdminPermission/router.map.js'
|
||||
// import AdminCompanyRouterMap from '@/router/Middle/Admin/AdminCompany/router.map.js'
|
||||
// import AdminLogRouterMap from '@/router/Middle/Admin/AdminLog/router.map.js'
|
||||
// import AdminAgentRouterMap from '@/router/Middle/Admin/AdminAgent/router.map.js'
|
||||
|
||||
import BaseConfigRouterMap from '@/router/Middle/Base/BaseConfig/router.map.js'
|
||||
import BaseServiceRouterMap from '@/router/Middle/Base/BaseService/router.map.js'
|
||||
import BaseAgentRouterMap from '@/router/Middle/Base/BaseAgent/router.map.js'
|
||||
import BaseCompanyRouterMap from '@/router/Middle/Base/BaseCompany/router.map.js'
|
||||
import BasePermissionRouterMap from '@/router/Middle/Base/BasePermission/router.map.js'
|
||||
|
||||
|
||||
|
||||
|
|
@ -18,14 +16,11 @@ import AdminUserRouterMap from '@/router/Middle/Admin/AdminUser/router.map.js'
|
|||
const routerMap = Object.assign({},
|
||||
BaseRouterMap,
|
||||
AdminUserRouterMap,
|
||||
// AdminConfigRouterMap,
|
||||
// AdminServiceRouterMap,
|
||||
// AdminPermissionRouterMap,
|
||||
// AdminCompanyRouterMap,
|
||||
// AdminLogRouterMap,
|
||||
// AdminAgentRouterMap,
|
||||
|
||||
BaseConfigRouterMap,
|
||||
BaseServiceRouterMap,
|
||||
BaseAgentRouterMap,
|
||||
BaseCompanyRouterMap,
|
||||
BasePermissionRouterMap,
|
||||
)
|
||||
|
||||
|
||||
|
||||
export default routerMap
|
||||
|
|
@ -29,6 +29,7 @@ function setAppOptions(options) { // 设置应用配置
|
|||
*/
|
||||
function parseRoutes(routesConfig, routerMap) { // 解析路由
|
||||
let routes = [] // 初始化路由为空数组
|
||||
|
||||
routesConfig.forEach(item => { // 遍历路由配置
|
||||
// 获取注册在 routerMap 中的 router,初始化 routeCfg
|
||||
let router = undefined, routeCfg = {} // 初始化路由和路由配置
|
||||
|
|
|
|||
Loading…
Reference in New Issue