调整了部分内容及注释

This commit is contained in:
zxx 2022-12-26 20:59:01 +08:00
parent e8b47a4e0e
commit 75afed7c0c
22 changed files with 470 additions and 407 deletions

View File

@ -1,4 +1,4 @@
VUE_APP_API_BASE_URL=http://zxx4.f3322.net:46000 VUE_APP_API_BASE_URL=http://zxx4.f3322.net:46000
VUE_APP_USER_MODEL2=AdminUser VUE_APP_USER_MODEL=AdminUser
VUE_APP_USER_MODEL=BaseAdmin VUE_APP_USER_MODEL2=BaseAdmin

View File

@ -1,13 +1,13 @@
// 跟业务系统相关的 // 跟业务系统相关的
import mk from './mk' import mk from './mk' // mk插件
export default { export default {
install(Vue) { install(Vue) { // 安装插件
mk.init(Vue); mk.init(Vue); // 初始化
Vue.prototype.$mk = mk; Vue.prototype.$mk = mk; // 挂载到Vue原型上
} }
} }

View File

@ -1,12 +1,22 @@
<template> <template>
<!-- 弹窗对话框 -->
<vxe-modal class="vxe-table--ignore-clear" id="myModal" @close="modalClose" v-model="visible" :width="width" :height="height" <vxe-modal class="vxe-table--ignore-clear" id="myModal" @close="modalClose" v-model="visible" :width="width" :height="height"
:show-footer="showFooter" :show-footer="showFooter"
@confirm="confirmEvent" @confirm="confirmEvent"
min-width="600" min-height="400" show-zoom resize transfer> min-width="600" min-height="400" show-zoom resize transfer>
<!--
show-footer 显示底部按钮
confirm 确认按钮事件
min-width 最小宽度
min-height 最小高度
show-zoom 显示缩放按钮
resize 是否可以缩放
transfer 是否使用传送门
-->
<template #title> <template #title>
<span>{{ title }}</span> <span>{{ title }}</span>
<!-- <span>提示</span> -->
</template> </template>
<template #default> <template #default>
<component :is="app" ref="appPage" :dataId="dataId" :pageOptions="pageOptions" :pageMode="pageMode" @callback="handleCallback"></component> <component :is="app" ref="appPage" :dataId="dataId" :pageOptions="pageOptions" :pageMode="pageMode" @callback="handleCallback"></component>

View File

@ -1,17 +1,15 @@
import Vue from 'vue' import Vue from 'vue' // 加载vue模块
import promptComponent from './dialog.vue' import promptComponent from './dialog.vue' // 加载dialog组件
export default { export default {
open: function (args) { open: function (args) { // 打开对话框
const promptConstructor = Vue.extend(promptComponent); const promptConstructor = Vue.extend(promptComponent); // 创建一个子类
let instance = new promptConstructor().$mount(''); let instance = new promptConstructor().$mount(''); // 创建一个实例
document.body.appendChild(instance.$el); document.body.appendChild(instance.$el); // 将实例挂载到body上
instance.open(args); // 打开对话框
instance.open(args);
} }
}; };

View File

@ -20,6 +20,14 @@
<vxe-modal show-footer class-name="vxe-table--ignore-clear edit-popup-box" title="选择数据" :width="modalWidth" <vxe-modal show-footer class-name="vxe-table--ignore-clear edit-popup-box" title="选择数据" :width="modalWidth"
:height="modalHeight" v-model="modalVisible" @confirm="confirmEvent"> :height="modalHeight" v-model="modalVisible" @confirm="confirmEvent">
<!-- vxe-modal 有以下属性
show-footer 显示底部按钮
width 宽度
height 高度
v-model 显示隐藏
@confirm 确认按钮事件
-->
<template #default> <template #default>
<component :is="popupPage" ref="popup" :pageOptions="popupPageOptions" :pageMode="popupPageMode"></component> <component :is="popupPage" ref="popup" :pageOptions="popupPageOptions" :pageMode="popupPageMode"></component>
</template> </template>
@ -31,136 +39,137 @@
import BASE_URL from '@/services/base/api.js'; import BASE_URL from '@/services/base/api.js'; // api
export default { export default {
name: 'MkFormDataSelector', name: 'MkFormDataSelector', //
props: { props: { //
readonly: Boolean, readonly: Boolean, //
params: Object, params: Object, //
value: Array value: Array //
}, },
data() { data() {
return { return {
actions: { actions: { // api
getList: `${BASE_URL}/api/web/listdata` getList: `${BASE_URL}/api/web/listdata` //
}, },
modalVisible: false, modalVisible: false, //
lastKey: '', lastKey: '', //
modelName: '', modelName: '', //
orderBy: '', orderBy: '', //
textboxValue: '', textboxValue: '', //
placeholder: '', placeholder: '', //
row: null, row: null, //
column: null, column: null, //
loading: false, loading: false, //
tableData: [], tableData: [], //
enalbedPopup: false, enalbedPopup: false, //
popupPage: null, popupPage: null, //
popupPageOptions: {}, popupPageOptions: {}, //
popupPageMode: '', popupPageMode: '', //
tableColumn: [ tableColumn: [ //
{ field: 'name', title: '名称' }, { field: 'name', title: '名称' }, //
{ field: 'code', title: '编码' } { field: 'code', title: '编码' } //
], ],
modalWidth: 800, modalWidth: 800, //
modalHeight: 600, modalHeight: 600, //
searchFieldNames: ['name', 'code'], searchFieldNames: ['name', 'code'], //
tablePage: { tablePage: { //
total: 0, total: 0, //
currentPage: 1, currentPage: 1, //
pageSize: 100 pageSize: 100 //
} }
} }
}, },
created() { created() { //
this.load() this.load() //
this.heightInit(); this.heightInit(); //
}, },
watch: { watch: { //
value() { value() { //
if (this.value && this.value[1]) { if (this.value && this.value[1]) { //
this.textboxValue = this.value[1]; this.textboxValue = this.value[1]; //
} else { } else { //
this.textboxValue = ""; this.textboxValue = ""; //
} }
} }
}, },
methods: { methods: {
heightInit() {
this.$nextTick(() => {
this.modalHeight = this.$mk.getWindowSize().height * 0.9;
this.modalWidth = this.$mk.getWindowSize().width * 0.9;
});
},
load() {
const { params } = this
if (params) {
this.modelName = params.modelName; heightInit() { //
this.orderBy = params.orderBy; this.$nextTick(() => { //
this.placeholder = params.placeholder;
if (params.searchFieldNames) {
this.searchFieldNames = params.searchFieldNames;
}
if (params.columns) {
this.tableColumn = params.columns;
}
if (params.popup) {
this.enalbedPopup = true;
this.popupPage = params.popup.page;
}
}
if (this.value && this.value[1]) { this.modalHeight = this.$mk.getWindowSize().height * 0.9; //
this.textboxValue = this.value[1]; this.modalWidth = this.$mk.getWindowSize().width * 0.9; //
} else {
this.textboxValue = "";
}
this.getData().then(data => {
this.tableData = data
}); });
}, },
getData(key) {
this.lastKey = key; load() { //
let filter = { rules: [], op: 'or' }; const { params } = this //
if (key) { if (params) { //
for (let i = 0; i < this.searchFieldNames.length; i++) { this.modelName = params.modelName; //
let field = this.searchFieldNames[i]; this.orderBy = params.orderBy; //
filter.rules.push({ value: key, field: field, op: "like" }); this.placeholder = params.placeholder; //
if (params.searchFieldNames) { //
this.searchFieldNames = params.searchFieldNames; //
}
if (params.columns) { //
this.tableColumn = params.columns; //
}
if (params.popup) { //
this.enalbedPopup = true; //
this.popupPage = params.popup.page; //
} }
} }
return this.$mk.post({
url: this.actions.getList, if (this.value && this.value[1]) { //
data: { this.textboxValue = this.value[1]; //
filter: filter, } else { //
model: this.modelName, this.textboxValue = ""; //
orderby: this.orderBy }
this.getData().then(data => { //
this.tableData = data //
});
},
getData(key) { //
this.lastKey = key; //
let filter = { rules: [], op: 'or' }; //
if (key) { //
for (let i = 0; i < this.searchFieldNames.length; i++) { //
let field = this.searchFieldNames[i]; //
filter.rules.push({ value: key, field: field, op: "like" }); //
}
}
return this.$mk.post({ //
url: this.actions.getList, //
data: { //
filter: filter, //
model: this.modelName, //
orderby: this.orderBy //
} }
}); });
}, },
clickEvent() { clickEvent() { //
if (this.readonly) { if (this.readonly) { //
return; //
}
this.$refs.xDown.showPanel() //
},
keyupEvent(e) { //
const { params } = this //
if (this.readonly) { //
return; return;
} }
this.$refs.xDown.showPanel() if (e.$event.keyCode == 40) { //
}, this.$refs.xDown.showPanel(); //
keyupEvent(e) {
const { params } = this
if (this.readonly) {
return;
}
if (e.$event.keyCode == 40) {
this.$refs.xDown.showPanel();
const grid = this.$refs.xgrid; const grid = this.$refs.xgrid;
var ds = grid.getTableData(); var ds = grid.getTableData(); //
grid.focus(); grid.focus(); //
grid.setCurrentRow(ds.tableData[0]); grid.setCurrentRow(ds.tableData[0]); //
return; return;
} }
const cellValue = this.textboxValue; const cellValue = this.textboxValue;
@ -170,16 +179,16 @@ export default {
params.onDataChanged({ value: ["", ""]}) params.onDataChanged({ value: ["", ""]})
} }
} }
this.loading = true this.loading = true //
this.getData(cellValue).then(data => { this.getData(cellValue).then(data => { //
this.loading = false this.loading = false
this.tableData = data this.tableData = data
}) })
}, },
suffixClick() { suffixClick() { //
this.$refs.xDown.togglePanel() this.$refs.xDown.togglePanel()
}, },
pageChangeEvent({ currentPage, pageSize }) { pageChangeEvent({ currentPage, pageSize }) { //
this.tablePage.currentPage = currentPage this.tablePage.currentPage = currentPage
this.tablePage.pageSize = pageSize this.tablePage.pageSize = pageSize
this.loading = true this.loading = true
@ -188,7 +197,7 @@ export default {
this.tableData = data this.tableData = data
}) })
}, },
selectEvent(e) { selectEvent(e) { //
const { params } = this const { params } = this
let textField = params.textField; let textField = params.textField;
this.textboxValue = e.row[textField]; this.textboxValue = e.row[textField];
@ -199,10 +208,10 @@ export default {
this.$refs.xDown.hidePanel() this.$refs.xDown.hidePanel()
}, },
popupEvent() { popupEvent() { //
this.modalVisible = true; this.modalVisible = true;
}, },
confirmEvent() { confirmEvent() { //
const { params } = this const { params } = this
let selectedRow = this.$refs.popup.getSelectdRow(); let selectedRow = this.$refs.popup.getSelectdRow();
let textField = params.textField; let textField = params.textField;

View File

@ -3,7 +3,7 @@
export default { export default {
uploadDefaultImg: "http://zjdaomiimgtest.oss-cn-hangzhou.aliyuncs.com/2022/16709016422295584.png", uploadDefaultImg: "http://zjdaomiimgtest.oss-cn-hangzhou.aliyuncs.com/2022/16709016422295584.png", // 默认图片
defaults: { defaults: {

View File

@ -1,18 +1,18 @@
import modal from './libs/function/modal' import modal from './libs/function/modal' // 加载modal
import apis from './libs/function/apis' import apis from './libs/function/apis' // 加载apis
import uploader from './libs/uploader/uploader' import uploader from './libs/uploader/uploader' // 加载uploader
import form from './libs/function/form' import form from './libs/function/form' // 加载form
import config from './config' import config from './config' // 加载config
import dialog from './components/dialog' import dialog from './components/dialog' // 加载dialog
import VXETable from 'vxe-table' import VXETable from 'vxe-table' // 加载vxe-table
import MkGridSelect from './components/editors/MkGridSelect.vue' import MkGridSelect from './components/editors/MkGridSelect.vue' // 加载下拉表格
import MkGridDataSelector from './components/editors/MkGridDataSelector.vue' import MkGridDataSelector from './components/editors/MkGridDataSelector.vue' // 加载下拉表格
import MkFormDataSelector from './components/editors/MkFormDataSelector.vue' import MkFormDataSelector from './components/editors/MkFormDataSelector.vue' // 加载下拉表单
import switchCompany from './components/switchCompany/switchCompany' import switchCompany from './components/switchCompany/switchCompany' // 加载切换公司
import XEUtils from 'xe-utils' import XEUtils from 'xe-utils' // 加载xe-utils
// 创建一个下拉表格渲染 // 创建一个下拉表格渲染
VXETable.renderer.add('MkGridDataSelector', { VXETable.renderer.add('MkGridDataSelector', { // 创建一个下拉表格渲染
autofocus: '.vxe-input--inner', autofocus: '.vxe-input--inner',
renderEdit(h, renderOpts, params) { renderEdit(h, renderOpts, params) {
return <mk-grid-data-selector params={params}></mk-grid-data-selector> return <mk-grid-data-selector params={params}></mk-grid-data-selector>
@ -38,25 +38,25 @@ VXETable.renderer.add('MkFormDataSelector', {
VXETable.formats.mixin({ VXETable.formats.mixin({
formatYesNo({ cellValue }) { formatYesNo({ cellValue }) { // 格式化是否
return cellValue ? '是' : '否' return cellValue ? '是' : '否'
}, },
formatRef({ cellValue }) { formatRef({ cellValue }) { // 格式化参照
return cellValue && cellValue[1] ? cellValue[1] : '' return cellValue && cellValue[1] ? cellValue[1] : ''
}, },
formatStatus({ cellValue }) { formatStatus({ cellValue }) { // 格式化状态
if (cellValue && (cellValue.toLowerCase() == 'completed' || cellValue.toLowerCase() == 'approved')) { if (cellValue && (cellValue.toLowerCase() == 'completed' || cellValue.toLowerCase() == 'approved')) {
return '生效'; return '生效';
} }
return '未审'; return '未审';
}, },
formatDateTime({ cellValue }) { formatDateTime({ cellValue }) { // 日期时间格式化
return XEUtils.toDateString(cellValue, 'yyyy-MM-dd HH:ss:mm') return XEUtils.toDateString(cellValue, 'yyyy-MM-dd HH:ss:mm')
}, },
formatDate({ cellValue }) { formatDate({ cellValue }) { // 日期格式化
return XEUtils.toDateString(cellValue, 'yyyy-MM-dd') return XEUtils.toDateString(cellValue, 'yyyy-MM-dd')
}, },
formatNumber({ cellValue }) { formatNumber({ cellValue }) { // 数字格式化
if(cellValue === 0) return '0'; if(cellValue === 0) return '0';
if(!cellValue) return ''; if(!cellValue) return '';
return parseFloat(cellValue).toFixed(2) return parseFloat(cellValue).toFixed(2)
@ -64,7 +64,7 @@ VXETable.formats.mixin({
}) })
var mk = { var mk = {
...modal, ...modal, // modal
...apis, ...apis,

View File

@ -1,86 +1,86 @@
import { request } from '@/utils/request' import { request } from '@/utils/request' // 加载request
import modal from './modal' import modal from './modal' // 加载modal
export default { export default {
post : function({url, data,loading , config}){ post : function({url, data,loading , config}){ // post请求
return new Promise((resolve, reject)=>{ return new Promise((resolve, reject)=>{ // 返回一个Promise
if(loading){ if(loading){ // 如果需要加载
modal.loading(loading); modal.loading(loading); // 显示加载
} }
request(url, 'post', data, config).then(response=>{ request(url, 'post', data, config).then(response=>{ // 发送请求
if(!response){ if(!response){ // 如果没有返回
reject && reject(response); reject && reject(response); // 返回错误
return; return; // 返回
} }
var result = response.data; var result = response.data; // 获取数据
if(!result){ if(!result){ // 如果没有数据
reject && reject(response); reject && reject(response); // 返回错误
return; return; // 返回
} }
if(loading){ if(loading){ // 如果需要加载
modal.hideLoading(); modal.hideLoading(); // 隐藏加载
} }
if(result.code != 200){ if(result.code != 200){ // 如果返回的状态码不是200
if(reject){ if(reject){ // 如果有错误回调
reject(response); reject(response); // 返回错误
}else{ }else{ // 如果没有错误回调
modal.error(result.msg); modal.error(result.msg); // 显示错误
} }
return; return; // 返回
} }
resolve(result); resolve(result); // 返回成功
}).catch((error)=>{ }).catch((error)=>{ // 如果出错
if(loading){ if(loading){ // 如果需要加载
modal.hideLoading(); modal.hideLoading(); // 隐藏加载
} }
modal.error(error.toString()); modal.error(error.toString()); // 显示错误
}); });
}); });
}, },
getPagedData: function({url, method = 'post', data,callback, config}){ getPagedData: function({url, method = 'post', data,callback, config}){ // 获取分页数据 默认post请求
return new Promise((resolve, reject)=>{ return new Promise((resolve, reject)=>{ // 返回一个Promise
if(data.start_time && typeof(data.start_time) == "string"){ if(data.start_time && typeof(data.start_time) == "string"){ // 如果开始时间是字符串
data.start_time = parseInt(new Date(data.start_time).getTime()/1000); data.start_time = parseInt(new Date(data.start_time).getTime()/1000); // 转换为时间戳
} }
if(data.end_time && typeof(data.end_time) == "string"){ if(data.end_time && typeof(data.end_time) == "string"){ // 如果结束时间是字符串
data.end_time =parseInt(new Date(data.end_time).getTime()/1000); data.end_time =parseInt(new Date(data.end_time).getTime()/1000); // 转换为时间戳
} }
request(url, method, data, config).then(response=>{ request(url, method, data, config).then(response=>{ // 发送请求
if(!response){ if(!response){ // 如果没有返回
reject && reject(response); reject && reject(response); // 返回错误
return; return;
} }
var result = response.data; var result = response.data; // 获取数据
if(!result){ if(!result){ // 如果没有数据
reject && reject(response); reject && reject(response); // 返回错误
return; return;
} }
if(result.code != 200){ if(result.code != 200){ // 如果返回的状态码不是200
if(reject){ if(reject){ // 如果有错误回调
reject(response); reject(response); // 返回错误
}else{ }else{ // 如果没有错误回调
modal.error(result.msg); modal.error(result.msg); // 显示错误
} }
return; return;
} }
resolve(result.data); resolve(result.data); // 返回成功
if(callback){ if(callback){ // 如果有回调
callback(result.data); callback(result.data); // 执行回调
} }
}).catch((error)=>{ }).catch((error)=>{
resolve({ resolve({ // 返回一个空数据
total:0, total:0, // 总数
list :[] list :[] // 列表
}); });
modal.error(error.toString()); modal.error(error.toString()); // 显示错误
}); });
}); });

View File

@ -1,16 +1,16 @@
export default { export default {
formatFormData: function ({ data, rules }) { formatFormData: function ({ data, rules }) { // 格式化表单数据
rules.forEach(rule => { rules.forEach(rule => { // 循环规则
if (rule.field in data) { if (rule.field in data) { // 如果字段在数据中
let value = data[rule.field]; let value = data[rule.field]; // 获取值
if (rule.dataRule && rule.dataRule.type == "integer") { if (rule.dataRule && rule.dataRule.type == "integer") { // 如果是整数
data[rule.field] = parseInt(value); data[rule.field] = parseInt(value); // 转换为整数
} }
if (rule.dataRule && rule.dataRule.type == "timestamp") { if (rule.dataRule && rule.dataRule.type == "timestamp") { // 如果是时间戳
data[rule.field] = parseInt(new Date(data[rule.field]).getTime() / 1000); data[rule.field] = parseInt(new Date(data[rule.field]).getTime() / 1000); // 转换为时间戳
} }
} }
}); });
@ -18,24 +18,24 @@ export default {
}, },
validateForm : function ({ form }) { validateForm : function ({ form }) { // 验证表单
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => { // 返回一个Promise
form.validate(a => { form.validate(a => { // 验证表单
let count = 0; let count = 0; // 计数器
if (a) { if (a) { // 如果有错误
for (let name in a) { for (let name in a) { // 循环错误
a[name]; a[name]; // 获取错误
count++; count++; // 计数器加1
} }
} }
if (count > 0) { if (count > 0) { // 如果有错误
reject(count); reject(count); // 返回错误
} else { } else { // 如果没有错误
resolve(); resolve(); // 返回成功
} }
}); });

View File

@ -3,7 +3,7 @@ import VXETable from 'vxe-table'
/** /**
* 函数 - 弹窗 * 函数 - 弹窗
*/ */
const msgs = { const msgs = { // 提示信息
title: "提示", title: "提示",
confirmText: "确定", confirmText: "确定",
cancelText: "取消", cancelText: "取消",
@ -13,44 +13,44 @@ export default {
/** /**
this.$mk.alert({ content: '基本提示框', title: '标题1' }); this.$mk.alert({ content: '基本提示框', title: '标题1' });
*/ */
alert: function (options = {}) { alert: function (options = {}) { // 弹窗
options = Object.assign({ title: msgs.title }, options); options = Object.assign({ title: msgs.title }, options); // 合并
return VXETable.modal.alert(options); return VXETable.modal.alert(options); // 弹窗
}, },
/** /**
this.$mk.msg(消息提示); this.$mk.msg(消息提示);
*/ */
msg: function (content) { msg: function (content) {
return VXETable.modal.message({ content: content }); return VXETable.modal.message({ content: content }); // 消息提示
}, },
info: function (content) { info: function (content) { // 信息提示
return VXETable.modal.message({ content: content, status: 'info' }); return VXETable.modal.message({ content: content, status: 'info' });
}, },
warning: function (content) { warning: function (content) { // 警告提示
return VXETable.modal.message({ content: content, status: 'warning' }); return VXETable.modal.message({ content: content, status: 'warning' });
}, },
question: function (content) { question: function (content) { // 询问提示
return VXETable.modal.message({ content: content, status: 'question' }); return VXETable.modal.message({ content: content, status: 'question' });
}, },
success: function (content) { success: function (content) { // 成功提示
return VXETable.modal.message({ content: content, status: 'success' }); return VXETable.modal.message({ content: content, status: 'success' });
}, },
error: function (content) { error: function (content) { // 错误提示
return VXETable.modal.message({ content: content, status: 'error' }); return VXETable.modal.message({ content: content, status: 'error' });
}, },
loading: function (content) { loading: function (content) { // 加载提示
return VXETable.modal.message({ content: content, status: 'loading', duration: -1, id: 'loading' }); return VXETable.modal.message({ content: content, status: 'loading', duration: -1, id: 'loading' });
}, },
hideLoading: function () { hideLoading: function () { // 隐藏加载提示
VXETable.modal.close("loading"); VXETable.modal.close("loading");
}, },
@ -59,5 +59,5 @@ export default {
this.$mk.msg("点击了确定") this.$mk.msg("点击了确定")
}); });
*/ */
confirm: VXETable.modal.confirm confirm: VXETable.modal.confirm // 确认提示
} }

View File

@ -30,21 +30,26 @@
<!-- 表格区 --> <!-- 表格区 -->
<div class="gridPanel"> <div class="gridPanel">
<vxe-grid ref='xGrid' v-bind="gridOptions"> <vxe-grid ref='xGrid' v-bind="gridOptions">
<template #status="{ row }"> <template #status="{ row }"><!-- 这里是自定义列 -->
<a-switch :checked="row.status ? true : false" @change="onSwitch(row, 'status')" /> <!-- 转换 row.status 的值 如果是true显示开否则显示关-->
</template> <a-switch :checked="row.status ? true : false" @change="onSwitch(row, 'status')" />
<template #op="{ row }"> </template>
<div class="oplinks"> <template #auth_stop_date="{ row }"><!-- 这里是自定义列 -->
<!-- 转换 row.auth_stop_date 的值 将时间戳转换为日期格式 -->
<span>{{ row.auth_stop_date | formatDateTime(row.auth_stop_date) }}</span>
</template>
<template #op="{ row }">
<div class="oplinks">
<a @click.stop="pageEdit(row)" title="编辑"><a-icon type="edit" /></a> <a @click.stop="pageEdit(row)" title="编辑"><a-icon type="edit" /></a>
<a @click.stop="pageDelete(row)" title="删除"><a-icon type="delete" /></a> <a @click.stop="pageDelete(row)" title="删除"><a-icon type="delete" /></a>
</div> </div>
</template> </template>
<template #logo="{ row }"> <template #logo="{ row }">
<img v-if="row.logo" :src="row.logo" style="width: 100px;"/> <img v-if="row.logo" :src="row.logo" style="width: 100px;" />
<span v-else></span> <span v-else></span>
</template> </template>
</vxe-grid> </vxe-grid>
</div> </div>
@ -97,8 +102,12 @@ export default {
{ field: 'title', title: '标题', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入标题' } } }, { field: 'title', title: '标题', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入标题' } } },
{ field: 'desc', title: '描述', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入描述' } } }, { field: 'desc', title: '描述', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入描述' } } },
{ span: 8, slots: { default: 'date' } }, { span: 8, slots: { default: 'date' } },
{ align: 'right', span: 4, itemRender: { name: '$buttons', children: [{ props: { type: 'submit', content: '搜索', status: 'primary' } }, {
{ props: { type: 'reset', content: '重置' } }] } } align: 'right', span: 4, itemRender: {
name: '$buttons', children: [{ props: { type: 'submit', content: '搜索', status: 'primary' } },
{ props: { type: 'reset', content: '重置' } }]
}
}
] ]
} }
], ],
@ -120,40 +129,41 @@ export default {
// Promise // Promise
ajax: { ajax: {
// queryreload // queryreload
query: (options) => { query: (options) => { // options
const { page, sorts } = options; const { page, sorts } = options; //
var params = {}; var params = {}; //
params.page = page.currentPage; params.page = page.currentPage; //
params.limit = page.pageSize; params.limit = page.pageSize; //
params.order_bys = []; params.order_bys = []; //
params.search_rules = this.getSearchParms(); params.search_rules = this.getSearchParms(); //
if (sorts) { if (sorts) { //
sorts.forEach((v) => { sorts.forEach((v) => { //
params.order_bys.push({ params.order_bys.push({ //
column: v.property, column: v.property, //
order: v.order order: v.order //
}) })
}); });
} }
return this.loadData({ params }); return this.loadData({ params }); //
} }
} }
}, },
columns: [ columns: [
{ type: 'checkbox', width: 50 }, { type: 'checkbox', width: 50 },
{ type: 'seq', width: 50 }, { type: 'seq', width: 50 },
{ slots: { default: 'logo' }, width: 120, sortable: true, title: '公司Logo', showHeaderOverflow: true }, { slots: { default: 'logo' }, width: 120, sortable: true, title: '公司Logo', showHeaderOverflow: true },
{ field: 'title', sortable: true, title: '公司名称' ,width:250}, { field: 'title', sortable: true, title: '公司名称', width: 250 },
{ field: 'auth_stop_date', width: 120, sortable: true, title: '授权截止日期', showHeaderOverflow: true }, // auth_stop_date
{ field: 'auth_stop_date', slots: { default: 'auth_stop_date' }, width: 120, sortable: true, title: '授权截止日期', showHeaderOverflow: true },
{ field: 'token', width: 120, sortable: true, title: 'token', showHeaderOverflow: true }, { field: 'token', width: 120, sortable: true, title: 'token', showHeaderOverflow: true },
{ field: 'is_private_cloud' ,width:110, sortable: true, title: '私有云', showHeaderOverflow: true }, { field: 'is_private_cloud', width: 110, sortable: true, title: '私有云', showHeaderOverflow: true },
{ field: 'admin_count' ,width:110, sortable: true, title: '用户数', showHeaderOverflow: true }, { field: 'admin_count', width: 110, sortable: true, title: '用户数', showHeaderOverflow: true },
{ title: '操作', slots: { default: 'op' },width:120 } { title: '操作', slots: { default: 'op' }, width: 120 }
] ]
} }
}; };
pageData.gridOptions = Object.assign({}, this.$mk.config.defaults.gridOptions, pageData.gridOptions); pageData.gridOptions = Object.assign({}, this.$mk.config.defaults.gridOptions, pageData.gridOptions); //
return pageData; return pageData;
}, },
@ -163,7 +173,7 @@ export default {
} }
}, },
created() { created() {
this.$nextTick(() => { this.$nextTick(() => { // DOM
// //
this.$refs.xGrid.connect(this.$refs.xToolbar) this.$refs.xGrid.connect(this.$refs.xToolbar)
}); });
@ -175,50 +185,50 @@ export default {
methods: { methods: {
onDateChange(date) { onDateChange(date) { //
if (date && date.length) { if (date && date.length) { //
this.start_time = parseInt(date[0]._d.getTime() / 1000); this.start_time = parseInt(date[0]._d.getTime() / 1000); //
this.end_time = parseInt(date[1]._d.getTime() / 1000); this.end_time = parseInt(date[1]._d.getTime() / 1000); //
} else { } else {
this.start_time = 0; this.start_time = 0; //
this.end_time = 0; this.end_time = 0; //
} }
}, },
getSearchParms() { getSearchParms() { //
var rules = []; var rules = []; //
let findMode = k => { let findMode = k => { //
for (let i in this.searchRules) { for (let i in this.searchRules) { //
if (this.searchRules[i].key == k) return this.searchRules[i].mode; if (this.searchRules[i].key == k) return this.searchRules[i].mode; //
} }
return "equal"; return "equal"; //
}; };
for (let key in this.searchFormData) { for (let key in this.searchFormData) { //
let value = this.searchFormData[key]; let value = this.searchFormData[key]; //
if (value) { if (value) { //
let mode = findMode(key); let mode = findMode(key); //
if (mode == "like") { if (mode == "like") { //
value = "%" + value + "%"; value = "%" + value + "%"; // %
} }
rules.push({ rules.push({ //
column: key, column: key, //
mode: mode, mode: mode, //
value: value value: value //
}); });
} }
} }
return rules; return rules; //
}, },
getSelectdRow() { getSelectdRow() { //
let row = this.$refs.xGrid.getCurrentRecord(); let row = this.$refs.xGrid.getCurrentRecord(); //
if (!row) { if (!row) { //
let rows = this.$refs.xGrid.getCheckboxRecords(); let rows = this.$refs.xGrid.getCheckboxRecords(); //
if (rows && rows.length) { row = rows[0]; } if (rows && rows.length) { row = rows[0]; } //
} }
return row; return row;
}, },
loadData({ params }) { loadData({ params }) { //
params.start_time = this.start_time; params.start_time = this.start_time;
params.end_time = this.end_time; params.end_time = this.end_time;
@ -227,64 +237,67 @@ export default {
return this.$mk.getPagedData({ url: this.actions.getList, data: params }); return this.$mk.getPagedData({ url: this.actions.getList, data: params });
}, },
//add / log / setting //add / log / setting
toolbarClick(e) { toolbarClick(e) { //
if (e.name == "add") { if (e.name == "add") {
this.$openPage("/BaseCompany/BaseCompanyAdd"); this.$openPage("/BaseCompany/BaseCompanyAdd");
} }
}, },
pageEdit(row) { pageEdit(row) { //
if (!row) { if (!row) { //
this.$mk.msg("请选择行"); this.$mk.msg("请选择行"); //
return; //
}
this.$openPage("/BaseCompany/BaseCompanyUpdate/" + row[this.keyName]); //
},
pageDelete(row) { //
let rows = row ? [row] : this.$refs.xGrid.getCheckboxRecords(); //
let ids = [];
rows.forEach((row) => { //
ids.push(row[this.keyName]); //
});
if (!ids.length) { //
this.$mk.error("请选择行"); //
return; return;
} }
this.$openPage("/BaseCompany/BaseCompanyUpdate/" + row[this.keyName]); this.$mk.confirm('您确定要删除吗?').then(type => {
if (type == 'confirm') {
}, this.$mk.post({
url: this.actions.delete,
pageDelete(row) { loading: "删除中...",
data: {
ids: ids
let rows = row ? [row] : this.$refs.xGrid.getCheckboxRecords(); }
}).then(() => {
let ids = []; this.$mk.success("删除成功");
rows.forEach((row) => { this.onSearch();
ids.push(row[this.keyName]); }).catch((a) => {
this.$mk.error(a.data.msg);
}); });
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() { onSearch() { //
this.$refs.xGrid.commitProxy('query') this.$refs.xGrid.commitProxy('query')
} },
}, },
// //
watch: { watch: {
@ -294,22 +307,20 @@ export default {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
.page-body { .page-body {
padding: 30px ; padding: 30px;
background: @base-bg-color; background: @base-bg-color;
} }
.gridPanel{
.gridPanel {
height: calc(100vh - 400px); height: calc(100vh - 400px);
} }
</style> </style>
<style> <style>
.oplinks svg { .oplinks svg {
width: 22px; width: 22px;
height:22px; height: 22px;
margin: 0 5px 0 0; margin: 0 5px 0 0;
} }
</style> </style>

View File

@ -127,8 +127,7 @@ export default {
{ field: 'en_title', title: '项目名称(英文)', span: 12, itemRender: { name: '$input', props: { placeholder: '请输入项目名' } } }, { field: 'en_title', title: '项目名称(英文)', span: 12, itemRender: { name: '$input', props: { placeholder: '请输入项目名' } } },
{ field: 'sub_title', title: '副标题', span: 12, itemRender: { name: '$input', props: { placeholder: '请输入副标题' } } }, { field: 'sub_title', title: '副标题', span: 12, itemRender: { name: '$input', props: { placeholder: '请输入副标题' } } },
{ field: 'en_sub_title', title: '副标题(英文)', span: 12, itemRender: { name: '$input', props: { placeholder: '请输入副标题' } } }, { field: 'en_sub_title', title: '副标题(英文)', span: 12, itemRender: { name: '$input', props: { placeholder: '请输入副标题' } } },
{ field: 'copy_right', title: '版权', span: 12,defaultValue:'显示Copyright 2022 广东正极科技有限公司出品', itemRender: { name: '$input', props: { placeholder: '请输入版权' } } },
{ field: 'copy_right', title: '版权', span: 12, itemRender: { name: '$input', props: { placeholder: '请输入版权' } } },
{ field: 'en_copy_right', title: '版权(英文)', span: 12, itemRender: { name: '$input', props: { placeholder: '请输入版权' } } }, { field: 'en_copy_right', title: '版权(英文)', span: 12, itemRender: { name: '$input', props: { placeholder: '请输入版权' } } },
{ field: 'slogan', title: '标语', span: 12, itemRender: { name: '$input', props: { placeholder: '请输入标语' } } }, { field: 'slogan', title: '标语', span: 12, itemRender: { name: '$input', props: { placeholder: '请输入标语' } } },
{ field: 'en_slogan', title: '标语(英文)', span: 12, itemRender: { name: '$input', props: { placeholder: '请输入标语' } } }, { field: 'en_slogan', title: '标语(英文)', span: 12, itemRender: { name: '$input', props: { placeholder: '请输入标语' } } },

View File

@ -4,9 +4,16 @@
<div class="header"> <div class="header">
<img alt="logo" class="logo" :src="Project.project_logo" /> <img alt="logo" class="logo" :src="Project.project_logo" />
<span class="title">{{ Project.project_name }}</span> <div class="title">{{ Project.project_name }}
<!-- 如果 Project.project_sub_title 不为空则显示 -->
<i v-if="Project.project_sub_title"><b>|</b> {{ Project.project_sub_title }}</i>
</div>
<!-- <div class="title_en">{{ Project.project_en_name }} <b>|</b> <i>{{ Project.project_en_sub_title }}</i></div> -->
<div class="desc">
{{ Project.slogan }}<br />
<!-- {{ Project.en_slogan }} -->
</div>
</div> </div>
<div class="desc">{{ Project.project_sub_title }}</div>
</div> </div>
<div class="login"> <div class="login">
<a-form @submit="onSubmit" :form="form"> <a-form @submit="onSubmit" :form="form">
@ -71,7 +78,8 @@
</div> </div>
</a-form> </a-form>
<switch-company v-model="companyShow" :data="companyData" @confirm="companyconfirm" ref="switchCompany" ></switch-company> <switch-company v-model="companyShow" :data="companyData" @confirm="companyconfirm"
ref="switchCompany"></switch-company>
</div> </div>
@ -99,7 +107,7 @@ export default {
logging: false, logging: false,
error: '', error: '',
form: this.$form.createForm(this), form: this.$form.createForm(this),
mobileTest:"18607684660", mobileTest: "18607684660",
user: { user: {
mobile: '18192398883', mobile: '18192398883',
password: '888888' password: '888888'
@ -133,8 +141,8 @@ export default {
} }
this.$nextTick(() => { this.$nextTick(() => {
setTimeout(() => { setTimeout(() => {
if(!this.isMiddleAdmin()){ if (!this.isMiddleAdmin()) {
this.user.mobile = this.mobileTest; this.user.mobile = this.mobileTest;
} }
this.form.setFieldsValue({ this.form.setFieldsValue({
name: this.user.mobile, name: this.user.mobile,
@ -149,7 +157,7 @@ export default {
...mapMutations('account', ['setUid', 'setUser', 'setPermissions', 'setRoutesConfig', 'setSettings', 'setCompany', 'setProject']), ...mapMutations('account', ['setUid', 'setUser', 'setPermissions', 'setRoutesConfig', 'setSettings', 'setCompany', 'setProject']),
companyconfirm({row}) { companyconfirm({ row }) {
this.companyShow = false; this.companyShow = false;
// //
if (!row || row.id == this.companyData[0].id) { if (!row || row.id == this.companyData[0].id) {
@ -225,7 +233,7 @@ export default {
afterLoginSuccess({ token, access_expire, uid, loginResMsg }) { afterLoginSuccess({ token, access_expire, uid, loginResMsg }) {
this.$refs.loginActions.afterLoginSuccess({ token, access_expire, uid, msg :loginResMsg}); this.$refs.loginActions.afterLoginSuccess({ token, access_expire, uid, msg: loginResMsg });
} }
} }
@ -238,34 +246,65 @@ export default {
text-align: center; text-align: center;
.header { .header {
height: 44px; min-height: 44px;
line-height: 44px; width: 30%;
padding: auto;
margin: auto;
position: relative;
// border: 1px solid black;
a { a {
text-decoration: none; text-decoration: none;
} }
.logo { .logo {
height: 44px; height: 80px;
vertical-align: top; vertical-align: top;
margin-right: 16px; margin-bottom:10px;
// border: 1px solid black;
} }
.title { .title {
font-size: 33px; font-size: 40px;
color: @title-color; color: @title-color;
font-family: 'Myriad Pro', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-family: 'Myriad Pro', 'Helvetica Neue', Arial, Helvetica, sans-serif;
font-weight: 600; font-weight: 600;
position: relative; position: relative;
top: 2px; // margin-left: 25%;
// border: 1px solid black;
position: relative;
margin-bottom:10px;
i {
font-size: 16px;
margin-right: 4px;
position: absolute;
right:0px;
color:rgb(194, 194, 194);
b {
font-weight: 10;
}
}
}
.title_en {
color: @title-color;
font-family: 'Myriad Pro', 'Helvetica Neue', Arial, Helvetica, sans-serif;
// margin-left: 25%;
position: relative;
} }
} }
.desc { .desc {
font-size: 14px; font-size: 14px;
color: @text-color-second; color: @text-color-second;
margin-top: 12px; margin-top: 5px;
font-size: 20px;
margin-bottom: 40px; margin-bottom: 40px;
// margin-left: 25%;
// border: 1px solid black;
} }
} }

View File

@ -23,7 +23,7 @@ const BaseAdminRouterMap = {
name: '用户管理', name: '用户管理',
icon: 'idcard', icon: 'idcard',
path: '/BaseAdmin/BaseAdminList', path: '/BaseAdmin/BaseAdminList',
component: () => import('@/pages/BaseAdmin/BaseAdmin/list'), component: () => import('@/pages/Middle/Base/BaseAdmin/BaseAdmin/list'),
authority: { authority: {
permission: ['BaseAdmin-All'], permission: ['BaseAdmin-All'],
@ -46,7 +46,7 @@ const BaseAdminRouterMap = {
name: '角色管理', name: '角色管理',
icon: 'idcard', icon: 'idcard',
path: '/BasePermission/RoleList', path: '/BasePermission/RoleList',
component: () => import('@/pages/BaseAdmin/BaseRole/list'), component: () => import('@/pages/Middle/Base/BaseAdmin/BaseRole/list'),
authority: { authority: {
permission: ['BasePermission-All'], permission: ['BasePermission-All'],
} }

View File

@ -3,27 +3,24 @@ import BaseRouterMap from './async/base.map.js'
import AdminUserRouterMap from '@/router/Middle/Admin/AdminUser/router.map.js' import AdminUserRouterMap from '@/router/Middle/Admin/AdminUser/router.map.js'
import BaseConfigRouterMap from '@/router/Middle/Base/BaseConfig/router.map.js' import BaseConfigRouterMap from '@/router/Middle/Base/BaseConfig/router.map.js'
import BaseServiceRouterMap from '@/router/Middle/Base/BaseService/router.map.js' import BaseServiceRouterMap from '@/router/Middle/Base/BaseService/router.map.js'
import BaseAgentRouterMap from '@/router/Middle/Base/BaseAgent/router.map.js' import BaseAgentRouterMap from '@/router/Middle/Base/BaseAgent/router.map.js'
import BaseCompanyRouterMap from '@/router/Middle/Base/BaseCompany/router.map.js' import BaseCompanyRouterMap from '@/router/Middle/Base/BaseCompany/router.map.js'
import BasePermissionRouterMap from '@/router/Middle/Base/BasePermission/router.map.js' import BasePermissionRouterMap from '@/router/Middle/Base/BasePermission/router.map.js'
import BaseAdminRouterMap from '@/router/Middle/Base/BaseAdmin/router.map.js'
import BaseAdminRouterMap from '@/router/BaseAdmin/router.map.js'
// 合并BaseRouterMap ConfigRouterMap ServiceRouterMap // 合并BaseRouterMap ConfigRouterMap ServiceRouterMap
const routerMap = Object.assign({}, const routerMap = Object.assign({},
BaseRouterMap, BaseRouterMap,
AdminUserRouterMap, AdminUserRouterMap,
BaseConfigRouterMap, BaseConfigRouterMap,
BaseServiceRouterMap, BaseServiceRouterMap,
BaseAgentRouterMap, BaseAgentRouterMap,
BaseCompanyRouterMap, BaseCompanyRouterMap,
BasePermissionRouterMap, BasePermissionRouterMap,
BaseAdminRouterMap,
BaseAdminRouterMap, )
)
export default routerMap export default routerMap

0
src/utils/Date,js Normal file
View File