mvue-components
Version:
品高云平台组件
1,935 lines (1,773 loc) • 252 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else if(typeof exports === 'object')
exports["index"] = factory();
else
root["index"] = factory();
})(window, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/test/dist";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/childheader/index.vue?vue&type=script&lang=js&":
/*!*********************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/childheader/index.vue?vue&type=script&lang=js& ***!
\*********************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
props: {
title: {
type: String
},
subtitle: {
type: String
},
showBack: {
type: Boolean,
"default": true
},
backRoute: {
type: Object // 点击返回的route,为空则返回上一页
}
},
data: function data() {
return {};
},
methods: {
back: function back() {
if (this.backRoute) {
if (_.isString(this.backRoute)) {
this.$router.push({
path: this.backRoute
});
} else {
this.$router.push(this.backRoute);
}
} else {
this.$router.go(-1);
}
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/header/header.vue?vue&type=script&lang=js&":
/*!*****************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/header/header.vue?vue&type=script&lang=js& ***!
\*****************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _libs_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../libs/context */ "./src/libs/context.js");
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
props: {
title: {
type: [String, Boolean],
"default": "品高云平台"
},
logo: {
type: String,
"default": "static/images/logo.png"
},
btns: {
type: Array,
"default": function _default() {
return [];
}
},
showCollapseIcon: {
type: Boolean,
"default": false
},
avatar: {
type: Object
},
redirectHomeAfterLogout: {
//注销按钮跳转路径设置,设置为true将跳回主页
type: Boolean,
"default": false
},
logoutRedirectUrl: {
//外部指定注销后跳转地址
type: String
}
},
data: function data() {
return {
user: {
name: "匿名用户"
}
};
},
computed: {
avatarSrc: function avatarSrc() {
if (this.avatar && this.avatar.src) {
return this.avatar.src;
}
return undefined;
},
avatarIcon: function avatarIcon() {
if (this.avatar && this.avatar.icon) {
return this.avatar.icon;
}
return 'md-person';
},
avatarShape: function avatarShape() {
if (this.avatar && this.avatar.shape) {
return this.avatar.shape;
}
return 'square';
},
avatarSize: function avatarSize() {
if (this.avatar && this.avatar.size) {
return this.avatar.size;
}
return 'default';
}
},
mounted: function mounted() {
var session = _libs_context__WEBPACK_IMPORTED_MODULE_0__["default"].getSession();
this.user = session.getCurrentUser();
},
methods: {
handleClickDropdown: function handleClickDropdown(nameOrIndex) {
if (nameOrIndex === 'logout') {
this.logout();
} else {
var btn = this.btns[nameOrIndex];
if (!btn.disabled) {
btn && btn.onclick();
}
}
},
logout: function logout() {
var redirectUrl = null;
if (this.logoutRedirectUrl) {
redirectUrl = this.logoutRedirectUrl;
} else if (this.redirectHomeAfterLogout) {
redirectUrl = window.location.href;
if (redirectUrl.indexOf('#') > 0) {
redirectUrl = redirectUrl.substring(0, redirectUrl.indexOf('#'));
}
}
_libs_context__WEBPACK_IMPORTED_MODULE_0__["default"].getSession().doLogout(redirectUrl);
},
collapsedSider: function collapsedSider() {
_libs_context__WEBPACK_IMPORTED_MODULE_0__["default"].getEventBus().$emit("toggle-menus");
},
handleOnAvatarError: function handleOnAvatarError(evt) {
this.$emit('on-avatar-error', evt);
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/iframe/entry.vue?vue&type=script&lang=js&":
/*!****************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/iframe/entry.vue?vue&type=script&lang=js& ***!
\****************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
props: {
src: {
type: String
},
height: {
type: [String, Number],
"default": "500px"
},
overflow: {
type: String,
"default": "hidden"
},
scrolling: {
type: String,
"default": "no"
}
},
data: function data() {
return {
iframeId: _.uniqueId("iframe_"),
isShow: true,
styleObject: {
width: "100%",
border: 0,
overflow: this.overflow,
height: this.height
}
};
},
watch: {
height: function height(val) {
this.styleObject.height = val;
},
src: function src() {
this.styleObject.height = this.height;
}
},
computed: {
innerSrc: function innerSrc() {
var url = this.src;
if (url.indexOf('?') > 0) {
url += "&";
} else {
url += "?";
}
return url + "_iframeId=" + this.iframeId;
}
},
mounted: function mounted() {
if (window.addEventListener) {
window.addEventListener("message", this.onMessage, false);
} else {
window.attachEvent("onmessage", this.onMessage, false);
}
},
beforeDestroy: function beforeDestroy() {
if (window.removeEventListener) {
window.removeEventListener("message", this.onMessage, false);
} else {
window.detachEvent("onmessage", this.onMessage, false);
}
},
methods: {
containerHeight: function containerHeight() {
var ifrObj = document.getElementById(this.iframeId);
var offsetHeight = ifrObj.offsetHeight;
var height = window.innerHeight - offsetHeight;
return height;
},
postMessage: function postMessage(data, targetOrigin) {
if (_.isEmpty(targetOrigin)) {
targetOrigin = "*";
}
var ifrObj = document.getElementById(this.iframeId);
ifrObj.contentWindow.postMessage(data, targetOrigin);
},
setHeight: function setHeight(height) {
if (!height) {
height = this.containerHeight();
}
this.styleObject.height = height + "px";
},
/**
*
* @param event {data,origin ,source}
*/
onMessage: function onMessage(event) {
if (!this.isShow) {
return;
}
var eventData = event.data;
var ifrIdInEvent = eventData.iframeId;
if (this.iframeId == ifrIdInEvent && "resize" == eventData.action) {
this.setHeight(eventData.params && eventData.params.height);
} else if (this.iframeId == ifrIdInEvent && "close" == eventData.action) {
this.isShow = false;
}
this.$emit("on-message", event);
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/list/config-columns.vue?vue&type=script&lang=js&":
/*!***********************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/list/config-columns.vue?vue&type=script&lang=js& ***!
\***********************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _libs_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../libs/context */ "./src/libs/context.js");
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
props: {
columns: {
type: Array,
required: true
},
modalTitle: {
type: String,
"default": '自定义列表'
},
modalWidth: {
type: Number,
"default": 60
},
modalHeight: {
type: Number,
"default": function _default() {
if (!document.documentElement) {
return 400;
}
var clientHeight = document.documentElement.clientHeight - 220;
return clientHeight > 0 ? clientHeight : 400;
}
}
},
data: function data() {
var _defaultHidden = [];
_.each(this.columns, function (col) {
if (col.hidden && col.hasOwnProperty('key')) {
_defaultHidden.push(col.key);
}
});
return {
popupWidgetModal: false,
selectedColumns: [],
defaultHidden: _defaultHidden
};
},
mounted: function mounted() {
this.selectedColumns = this.buildSelectedColumns();
var key = this.getKey(); //只有配置过列,才需要重置grid的列
if (localStorage.hasOwnProperty(key)) {
this.notifyOk(true);
}
},
methods: {
buildSelectedColumns: function buildSelectedColumns() {
var _selectedColumns = [];
var key = this.getKey();
var colConf = null,
hiddenColumns = []; //如果localStorage存在当前grid的隐藏列配置,则从localStorage读取
if (localStorage.hasOwnProperty(key)) {
colConf = localStorage.getItem(key);
colConf = colConf.split(",");
if (!colConf[0].includes(':')) {
hiddenColumns = colConf;
} else {
//标记哪些列配置过了
var colConfMap = {};
colConf.forEach(function (conf) {
var t = conf.split(':'); //这里用true和false只是为了可读,表示此列是隐藏或者显示,没什么用,只做标记而已
colConfMap[t[0]] = t[1] == '1' ? true : false; //写入配置为hidden的列
if (t[1] !== '1') {
hiddenColumns.push(t[0]);
}
}); //如果列是后来添加的,并配置了hidden,则加到hiddenColumns中
this.columns.forEach(function (col) {
if (col.key && col.hidden && !colConfMap.hasOwnProperty(col.key)) {
hiddenColumns.push(col.key);
}
});
}
} else {
//如果没有设置,使用默认配置
hiddenColumns = _.cloneDeep(this.defaultHidden);
}
_.each(this.columns, function (col) {
if (!_.includes(hiddenColumns, col.key)) {
_selectedColumns.push(col.key);
}
});
return _selectedColumns;
},
getKey: function getKey() {
//localStorage存储的当前列表的隐藏列数据key
var keyPrefix = "_config_columns_";
var webCtx = _libs_context__WEBPACK_IMPORTED_MODULE_0__["default"].getMvueToolkit().utils.getWebContext();
var gridId = this.$parent.id;
var routeKey = this.$route.name || this.$route.path;
if (gridId) {
return "" + keyPrefix + webCtx + "_" + gridId;
}
return "" + keyPrefix + webCtx + "_" + routeKey;
},
toggleModal: function toggleModal() {
this.popupWidgetModal = !this.popupWidgetModal;
if (this.popupWidgetModal) {
this.selectedColumns = this.buildSelectedColumns();
}
},
close: function close() {
this.popupWidgetModal = false;
},
notifyOk: function notifyOk(first) {
var _this = this;
//通知列表改变显示的列
var okColumns = this.columns.filter(function (col) {
if (col.key) {
return _.includes(_this.selectedColumns, col.key);
}
return true;
});
this.$emit("on-change-columns", okColumns, first);
},
confirmData: function confirmData() {
this.notifyOk();
this.saveConfig();
this.close();
},
saveConfig: function saveConfig() {
var _this2 = this;
//将隐藏的列保存到localStorage 格式:name:1,title:0
var colConfs = [];
_.each(this.columns, function (col) {
if (col.title && col.key) {
if (_.includes(_this2.selectedColumns, col.key)) {
colConfs.push(col.key + ":1");
} else {
colConfs.push(col.key + ":0");
}
}
});
var key = this.getKey();
localStorage.setItem(key, colConfs.join(','));
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/list/list.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/list/list.vue?vue&type=script&lang=js& ***!
\*************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _libs_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../libs/context */ "./src/libs/context.js");
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
props: {
hidePagerIfOnePage: {
//如果只有一页数据,是否隐藏分页页脚
type: Boolean,
"default": false
},
wrapperClass: {
type: [String, Object, Array],
"default": "default-list-wrapper"
},
columns: {
//列描述
type: Array,
"default": function _default() {
return [];
}
},
stripe: {
type: Boolean,
"default": false
},
border: {
type: Boolean,
"default": false
},
showHeader: {
type: Boolean,
"default": true
},
showRefreshBtn: {
type: Boolean,
"default": true
},
showConfigColumnsBtn: {
type: Boolean,
"default": true
},
width: {
type: [Number, String]
},
height: {
type: [Number, String]
},
disabledHover: {
type: Boolean,
"default": false
},
highlightRow: {
type: Boolean,
"default": false
},
rowClassName: {
type: Function,
"default": function _default() {
return '';
}
},
size: {
type: String
},
noDataText: {
type: String
},
noFilteredDataText: {
type: String
},
pager: {
//是否启用分页
type: [Boolean, String],
"default": true
},
pageSize: {
//每页条数
type: Number,
"default": 10
},
pageSizeOpts: {
//每页可设置的条数数组
type: Array,
"default": function _default() {
return [10, 20, 50, 100];
}
},
query: {
//数据加载方法
type: Function,
required: true
},
toolbar: {
//工具栏操作按钮定义
type: Object,
"default": function _default() {
return {};
}
},
filters: {
//高级查询的条件和列表头部的筛选条件设置
type: Object
},
defaultSort: {
//默认排序设置{key:'',order:'desc'}
type: Object
},
id: {
//用来唯一标志一个列表,用于存储列表的配置数据key,如配置列数据本地存储的key
type: String
},
curPage: {
type: Number,
"default": 1
},
loadDataWhenMount: {
type: Boolean,
"default": true
},
maxLocalSize: {
type: Number,
"default": 1000
},
externalLocalPagerData: {
//本地分页的外部数据
type: Array
}
},
data: function data() {
var _innerColumns = this.convertColumns();
var _visibleColumns = this.buildVisibleColumns(_innerColumns);
return {
localPagerDataLoaded: false,
innerColumns: _innerColumns,
visibleColumns: _visibleColumns,
loading: false,
localPagerData: [],
data: [],
total: 0,
quicksearchKeyword: "",
currentPage: this.curPage,
selectedItems: null,
//选中的所有行数据
sort: this.defaultSort ? Object.assign({}, this.defaultSort) : null //当前排序:{key:'',order:'desc'}
};
},
computed: {
btnSizeBeforeMore: function btnSizeBeforeMore() {
//在[更多操作]按钮前显示的按钮个数
var size = this.toolbar && this.toolbar.btnSizeBeforeMore;
return size || 1;
},
localPager: function localPager() {
//pager:'local',表示启用本地分页,换页和改变每页记录数不向服务端请求数据
return this.pager === 'local';
},
remotePager: function remotePager() {
//pager:true,开启了远程分页
return this.pager === true;
},
hidePager: function hidePager() {
if (!this.hidePagerIfOnePage) {
return false;
} //如果开启了单页隐藏分页开关,并且只有一页,隐藏分页区域
if (this.total <= this.pageSize) {
return true;
}
return false;
}
},
watch: {
quicksearchKeyword: function quicksearchKeyword() {
var _this = this;
if (this.pager) {
//智能搜索包装器,在用户快速输入时先不查询,直到用户输入完毕再查询
_libs_context__WEBPACK_IMPORTED_MODULE_0__["default"].getMvueToolkit().utils.smartSearch(this, function () {
_this.currentPage = 1;
_this.doReload();
}, "quickSearchKey");
}
}
},
mounted: function mounted() {
if (this.loadDataWhenMount) {
this.doReload();
}
},
methods: {
//转换column到innerColumns,此接口在配置列显示隐藏后会调用,此时okColumns将代替原始columns
convertColumns: function convertColumns(okColumns) {
var _this2 = this;
var _innerColumns = [];
_.each(okColumns || this.columns, function (col) {
var _col = Object.assign({}, col); //iview table序号列不能根据分页自增,所以替换掉
if (col.type == 'index') {
_col.type = undefined;
_col.render = function (h, params) {
if (_this2.pager) {
var pageIndex = _this2.currentPage - 1;
var pageSize = _this2.$refs.pageRef.currentPageSize;
var _index = params.index;
var index = pageIndex * pageSize + _index + 1;
return h("div", index);
} else {
return h('div', params.index + 1);
}
};
}
_innerColumns.push(_col);
});
return _innerColumns;
},
reloadLocalPagerData: function reloadLocalPagerData(forceUseLocal) {
//本地分页数据重新加载
var currentPageSize = this.$refs.pageRef.currentPageSize;
var currentPage = this.currentPage;
var start = (currentPage - 1) * currentPageSize;
if (!forceUseLocal && this.externalLocalPagerData) {
this.data = _.cloneDeep(this.externalLocalPagerData.slice(start, start + currentPageSize));
} else {
this.data = this.localPagerData.slice(start, start + currentPageSize);
}
},
//重新加载数据
doReload: function doReload(resetPage) {
var _this3 = this;
if (resetPage) {
this.currentPage = 1;
} //清空所有选项
this.selectedItems = null;
var currentPageSize = this.$refs.pageRef && this.$refs.pageRef.currentPageSize;
var currentPage = this.currentPage;
this.loading = true;
var queryCtx = {
currentPage: currentPage,
currentPageSize: currentPageSize,
quicksearchKeyword: this.quicksearchKeyword,
quicksearchFields: this.toolbar && this.toolbar.quicksearch && this.toolbar.quicksearch.fields,
sort: this.sort,
filters: this.filters
}; //本地分页
if (this.localPager) {
this.queryForLocalPager(queryCtx);
} else {
//远程分页
this.query(queryCtx).then(function (_ref) {
var data = _ref.data,
total = _ref.total;
_this3.loading = false;
_this3.total = total;
_this3.data = [].concat(data);
}, function (err) {
console.error(err);
_this3.loading = false;
});
}
},
queryForLocalPager: function queryForLocalPager(queryCtx) {
var _this4 = this;
//如果是本地分页,先通过分页query接口,查询第一页,每页数设置为maxLocalSize查询数据
//1 如果返回的total小于等于maxLocalSize,则使用本次数据作为本地数据
//2 如果返回的total大于maxLocalSize,则再次查询第一页,每页数设置为total查询数据,使用这次查询的数据作为本地数据
queryCtx.currentPage = 1;
queryCtx.currentPageSize = this.maxLocalSize;
this.query(queryCtx).then(function (_ref2) {
var data = _ref2.data,
total = _ref2.total;
_this4.total = total;
if (total <= _this4.maxLocalSize) {
_this4.loading = false;
_this4.localPagerData = data;
_this4.reloadLocalPagerData(true);
} else {
queryCtx.currentPage = 1;
queryCtx.currentPageSize = total;
if (!_this4.localPagerDataLoaded) {
queryCtx.localPagerSecondLoad = true;
}
_this4.query(queryCtx).then(function (_ref3) {
var data = _ref3.data,
total = _ref3.total;
_this4.localPagerDataLoaded = true;
_this4.loading = false;
_this4.localPagerData = data;
_this4.reloadLocalPagerData(true);
}, function () {
_this4.loading = false;
});
}
}, function (err) {
console.error(err);
_this4.loading = false;
});
},
//选择单行
handleOnCurrentChange: function handleOnCurrentChange(currentRow, oldCurrentRow) {
this.$emit("on-current-change", currentRow, oldCurrentRow);
},
handleOnSelect: function handleOnSelect(selection, row) {
this.$emit("on-select", selection, row);
},
handleOnSelectCancel: function handleOnSelectCancel(selection, row) {
this.$emit("on-select-cancel", selection, row);
},
handleOnSelectAllCancel: function handleOnSelectAllCancel(selection) {
this.$emit("on-select-all-cancel", selection);
},
handleOnSelectAll: function handleOnSelectAll(selection) {
this.$emit("on-select-all", selection);
},
//选择多行
handleOnSelectionChange: function handleOnSelectionChange(selection) {
this.selectedItems = selection;
this.$emit("on-selection-change", selection);
},
//单击行
handleOnRowClick: function handleOnRowClick(row, index) {
this.$emit("on-row-click", row, index);
},
handleOnRowDblclick: function handleOnRowDblclick(row, index) {
this.$emit("on-row-dblclick", row, index);
},
handleOnExpand: function handleOnExpand(row, status) {
this.$emit("on-expand", row, status);
},
//排序列
handleSortChange: function handleSortChange(_ref4) {
var column = _ref4.column,
key = _ref4.key,
order = _ref4.order;
if (order == "normal") {
this.sort = this.defaultSort ? Object.assign({}, this.defaultSort) : null;
} else {
this.sort = {
key: key,
order: order
};
}
this.doReload(true);
this.$emit("on-sort-change", {
column: column,
key: key,
order: order
});
},
handleOnFilterChange: function handleOnFilterChange(row) {
this.$emit("on-filter-change", row);
},
pageChangeReload: function pageChangeReload() {
if (this.localPager) {
this.reloadLocalPagerData();
} else if (this.remotePager) {
this.doReload();
}
},
//分页页码切换
handleCurrentPageChange: function handleCurrentPageChange(currentPage) {
this.pageChangeReload();
},
//每页条数切换
handlePageSizeChange: function handlePageSizeChange(pageSize) {
//切换条数后,页码变为第一页,如果当前页不是第一页会激发分页页码变化,所以这里阻止一下,不重复reload
if (this.currentPage > 1) {
return;
}
this.pageChangeReload();
},
//普通按钮点击,数据无关的操作
onBtnClick: function onBtnClick(btn) {
if (this.btnIsDisabled(btn)) {
return false;
}
if (btn.onclick) {
btn.onclick({
listInst: this,
selectedItems: this.selectedItems
});
}
},
//判断按钮是否禁用
btnIsDisabled: function btnIsDisabled(btn) {
//btn 写了disabled:true
if (btn.disabled === true) {
return true;
} else if (_.isFunction(btn.disabled)) {
var ctx = {
listInst: this,
selectedItems: this.selectedItems
};
return btn.disabled(ctx, btn);
}
return false;
},
//更多操作按钮点击
handleMoreClick: function handleMoreClick(index) {
var btn = this.toolbar.btns[index];
this.onBtnClick(btn);
},
//配置显示和隐藏列
handleChangeColumns: function handleChangeColumns(okColumns, first) {
this.visibleColumns = this.convertColumns(okColumns);
this.$emit('on-columns-modified', first);
},
buildVisibleColumns: function buildVisibleColumns(_innerColumns) {
var _visibleColumns = [];
if (_.isEmpty(_innerColumns)) {
return _visibleColumns;
}
_innerColumns.forEach(function (col) {
if (!col.hidden) {
_visibleColumns.push(col);
}
});
return _visibleColumns;
}
},
components: {
configColumns: __webpack_require__(/*! ./config-columns */ "./src/components/list/config-columns.vue")["default"]
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/menu/menu.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/menu/menu.vue?vue&type=script&lang=js& ***!
\*************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _libs_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../libs/context */ "./src/libs/context.js");
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
props: {
menus: {
type: Array,
"default": function _default() {
return [];
}
},
accordion: {
type: Boolean,
"default": true
},
group: {
type: Boolean,
"default": true
},
theme: {
type: String,
"default": "dark"
},
width: {
type: Number,
"default": 220
}
},
data: function data() {
return {
isCollapsed: false,
isShow: true,
localMenus: _.cloneDeep(this.menus),
openNames: [],
activeName: "",
menuMappings: {},
//mainHeight: document.documentElement.clientHeight - 48,
scrollOps: {
vuescroll: {
mode: 'native'
},
scrollContent: {
padding: true
},
bar: {
onlyShowBarOnScroll: false,
delayTime: 3000,
background: "#ccc",
keepShow: false,
hover: true
}
}
};
},
computed: {
menuitemClasses: function menuitemClasses() {
return ['menu-item', this.isCollapsed ? 'collapsed-menu' : '', this.group ? '' : 'mt-sm'];
}
},
created: function created() {
var _this2 = this;
_libs_context__WEBPACK_IMPORTED_MODULE_0__["default"].getEventBus().$on("toggle-menus", function () {
_this2.$refs.siderMenu.toggleCollapse();
});
},
beforeDestroy: function beforeDestroy() {
_libs_context__WEBPACK_IMPORTED_MODULE_0__["default"].getEventBus().$off("toggle-menus");
},
watch: {
menus: {
handler: function handler() {
this.localMenus = _.cloneDeep(this.menus);
if (this.localMenus.length < 1) {
return;
}
this.prepare();
if (!this.activeName && this.$route.path === "/") {
var lm = this.localMenus[0];
while (lm.children && lm.children.length > 0) {
lm = lm.children[0];
}
if (lm) {
this.onMenuSelected(lm.id);
this.setActiveMenu();
}
}
},
deep: true,
immediate: true
}
},
methods: {
/**
* @param route 由外部传过来的路由,home.vue可能会通过beforeRouteUpdate传递要去的路由
*/
setActiveMenu: function setActiveMenu(route) {
//设置导航菜单选中
var _this = this;
route = route || this.$route;
var matchedMenu = null;
for (var i = route.matched.length - 1; i >= 0; i--) {
if (matchedMenu != null) {
break;
}
var curRouter = route.matched[i];
_.forIn(this.menuMappings, function (menu, key) {
if (_.isEmpty(menu.url)) {
return;
}
if (curRouter.name === menu.id || curRouter.name === menu.name || curRouter.path === menu.path || curRouter.path === _.trim(menu.url, '#') || route.path === _.trim(menu.url, '#') || window.location.hash.toLowerCase() === menu.url.toLowerCase() && !route) {
matchedMenu = menu;
return false;
}
if (curRouter.meta && !_.isEmpty(curRouter.meta["menu"])) {
var routerMenu = curRouter.meta["menu"];
if (routerMenu == menu.id || routerMenu == menu.name) {
matchedMenu = menu;
return false;
}
}
});
}
if (matchedMenu != null) {
_this.activeName = matchedMenu.id;
_this.openNames = [];
var parentMenu = this.menuMappings[matchedMenu.parentId];
while (parentMenu != null) {
_this.openNames.push(parentMenu.id);
parentMenu = this.menuMappings[parentMenu.parentId];
}
_this.$nextTick(function () {
_this.$refs.leftMenus.updateOpened();
_this.$refs.leftMenus.updateActiveName();
});
}
},
onMenuSelected: function onMenuSelected(name) {
if (name) {
var selectedMenu = this.menuMappings[name];
if (_.isEmpty(selectedMenu) || _.isEmpty(selectedMenu.url)) {
alert("菜单定义数据有误");
return;
}
this.activeName = selectedMenu.id;
if (_libs_context__WEBPACK_IMPORTED_MODULE_0__["default"].getWebContext().inSamePage(selectedMenu.url)) {
var toPath = selectedMenu.url;
if (toPath.indexOf("#") >= 0) {
toPath = toPath.substring(toPath.indexOf("#") + 1);
} else {
toPath = "/";
}
this.$router.push({
path: toPath,
query: {
_from: 'left'
}
});
} else {
if (!_.isEmpty(selectedMenu.iframeParam)) {
//iframe 打开菜单
this.$router.push({
name: "iframe",
params: {
menuId: selectedMenu.id
},
query: {
url: "" + selectedMenu.url + selectedMenu.iframeParam,
_date: new Date().getTime()
}
});
} else {
if (selectedMenu.openMode == 1) {
var el = document.getElementById("newWin");
el.href = selectedMenu.url;
el.click();
} else {
window.location = selectedMenu.url;
}
}
}
}
this.$emit("on-menu-selected");
},
onSubMenuOpened: function onSubMenuOpened(name) {
if (name) {
var selectedMenu = this.menuMappings[name];
if (_.isEmpty(selectedMenu)) {
return;
}
if (selectedMenu.url && selectedMenu.url.length > 0) {
this.onMenuSelected(name);
return;
}
if (selectedMenu.children && selectedMenu.children.length > 0) {
selectedMenu = selectedMenu.children[0];
this.activeName = selectedMenu.id;
var leftMenuRef = this.$refs.leftMenus;
this.$nextTick(function () {
leftMenuRef.updateActiveName();
});
this.onMenuSelected(selectedMenu.id);
return;
}
}
},
prepare: function prepare() {
var _this = this;
if (!(_this.localMenus && _this.localMenus.length)) {
//如果菜单为空
return;
}
_this.visitTree(_this.localMenus, function (menu) {
var menuId = menu.id;
if (menu.url && menu.url.indexOf("#") > 0) {
menu["path"] = menu.url.substring(menu.url.indexOf("#") + 1);
} else {
menu["path"] = "/";
}
_this.menuMappings[menuId] = menu;
});
_this.setActiveMenu();
},
visitTree: function visitTree(tree, processor, parent) {
var self = this;
_.forEach(tree, function (node, index) {
if (parent && _.isEmpty(node.parentId)) {
node["parentId"] = parent.id;
}
if (processor) {
processor(node, tree, index);
}
if (node.children) {
self.visitTree(node.children, processor, node);
}
});
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/org-select/index.vue?vue&type=script&lang=js&":
/*!********************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/org-select/index.vue?vue&type=script&lang=js& ***!
\********************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _mixins_emitter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/emitter */ "./src/mixins/emitter.js");
/* harmony import */ var _user_select_select_modal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../user-select/select-modal */ "./src/components/user-select/select-modal.js");
/* harmony import */ var _user_select_select_input__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../user-select/select-input */ "./src/components/user-select/select-input.js");
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
mixins: [_mixins_emitter__WEBPACK_IMPORTED_MODULE_0__["default"], _user_select_select_input__WEBPACK_IMPORTED_MODULE_2__["default"], _user_select_select_modal__WEBPACK_IMPORTED_MODULE_1__["default"]],
props: {
modalWidth: {
type: Number,
"default": 600
},
modalTitle: {
type: String,
"default": '选择部门'
},
valueKey: {
type: String,
"default": 'orgId'
},
selectPlaceholder: {
type: String,
"default": '输入部门名搜索'
}
},
data: function data() {
return {
queryByKeywordMethod: 'queryOrgByKeyword',
queryByIdsMethod: 'queryOrgByIds'
};
},
methods: {},
components: {
selectOrg: __webpack_require__(/*! ./select-org */ "./src/components/org-select/select-org.vue")["default"]
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/org-select/select-org.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/org-select/select-org.vue?vue&type=script&lang=js& ***!
\*************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _user_select_org_tree__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../user-select/org-tree */ "./src/components/user-select/org-tree.js");
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
mixins: [_user_select_org_tree__WEBPACK_IMPORTED_MODULE_0__["default"]],
props: {
initialValue: {
type: [String, Array],
"default": function _default() {
return null;
}
},
queryMethods: {
type: Object,
required: true
},
multiple: {
type: Boolean,
"default": false
},
labelKey: {
type: String
},
valueKey: {
type: String
},
queryPlaceholder: {
type: String
}
},
data: function data() {
return {
selectedIds: [],
selectedOrgDetails: {},
queryKeyword: ''
};
},
watch: {
initialValue: {
handler: function handler() {
var _this = this;
var ids = [];
if (!this.multiple && this.initialValue) {
ids = [this.initialValue];
} else {
ids = _.cloneDeep(this.initialValue);
}
if (!_.isEqual(ids, this.selectedIds)) {
if (_.isEmpty(ids)) {
this.selectedIds = [];
this.selectedOrgDetails = {};
return;
}
this.queryMethods.queryOrgByIds(ids).then(function (data) {
_this.selectedIds = ids;
_this.selectedOrgDetails = _.keyBy(data, function (item) {
return item[_this.valueKey];
});
});
}
},
immediate: true
},
queryKeyword: {
handler: function handler() {
this.buildRootOrgByKeyword();
}
}
},
mounted: function mounted() {
this.buildRootOrg();
},
methods: {
handleOrgSelectChange: function handleOrgSelectChange(dataItems) {
var _this2 = this;
if (!this.multiple) {
//单选直接替换
if (dataItems.length == 1) {
var id = dataItems[0].id;
this.selectedIds = [id];
var selectedItem = {};
selectedItem[id] = dataItems[0];
this.selectedOrgDetails = selectedItem;
} else {
this.selectedIds = [];
this.selectedOrgDetails = {};
}
} else {
//多选去重
_.each(dataItems, function (item) {
var id = item.id;
if (!_.includes(_this2.selectedIds, id)) {
_this2.selectedIds.push(id);
_this2.selectedOrgDetails[id] = item;
}
});
}
},
delOrg: function delOrg(index) {
var toDeletedId = this.selectedIds[index];
this.selectedIds.splice(index, 1);
delete this.selectedOrgDetails[toDeletedId];
},
handleQueryClear: function handleQueryClear() {
this.queryKeyword = ''; //TODO
},
handleQueryChange: function handleQueryChange(val) {
this.queryKeyword = val; //TODO
}
},
components: {
search: __webpack_require__(/*! ../user-select/search */ "./src/components/user-select/search.vue")["default"]
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/product-list/index.vue?vue&type=script&lang=js&":
/*!**********************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/product-list/index.vue?vue&type=script&lang=js& ***!
\**********************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "@babel/runtime/helpers/asyncToGenerator");
/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ "@babel/runtime/regenerator");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
props: {
width: {
type: Number,
"default": 435
},
placement: {
type: String,
"default": "bottom-start"
},
showSize: {
type: Number,
"default": 5
},
hideWhenEmpty: {
type: Boolean,
"default": true
},
items: {
type: Array,
"default": function _default() {
return [];
}
},
resource: {
type: Object,
"default": function _default() {
return null;
}
}
},
data: function data() {
return {
innerItems: this.items,
activeName: ""
};
},
computed: {
favoriteList: function favoriteList() {
var list = [];
_.forEach(this.innerItems, function (item) {
if (item.favorite) {
list.push(item);
}
});
if (list.length == 0) {
for (var i = 0; i < Math.min(this.showSize, this.innerItems.length); i++) {
list.push(this.innerItems[i]);
}
}
return list;
},
isShow: function isShow() {
if (!this.hideWhenEmpty) {
return true;
}
if (this.innerItems == null || this.innerItems.length == 0) {
return false;
}
return true;
}
},
mounted: function mounted() {
var _this = this;
return _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee() {
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (!_this.resource) {
_context.next = 4;
break;
}
_context.next = 3;
return _this.loadMenuByResouce();
case 3:
_this.innerItems = _context.sent;
case 4:
_this.setActiveMenu();
_this.$emit("on-loaded", _this);
case 6:
case "end":
return _context.stop();
}
}
}, _callee);
}))();
},
methods: {
onChangeFavorite: function onChangeFavorite(selectedItem, event) {
selectedItem.favorite = !selectedItem.favorite;
this.editFavorite(selectedItem);
this.$emit("on-change-favorite", selectedItem);
return false;
},
loadMenuByResouce: function loadMenuByResouce() {
var _this2 = this;
return _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee2() {
var resp;
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return _this2.resource.withFavorite();
case 2: