diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/app.less b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/app.less
index c0ab4b7..0c48611 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/app.less
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/app.less
@@ -4,6 +4,7 @@
@import './lib/align.less';
@import './lib/font-size.less';
@import './lib/margin.less';
+@import './lib/width-height.less';
@import './lib/scrollbar.less';
@import './main.less';
@import './frame/dark.less';
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/form.less b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/form.less
index 8caa7eb..cda89de 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/form.less
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/form.less
@@ -136,3 +136,24 @@
}
}
}
+.yo-modal-form {
+ .ant-modal-body {
+ padding: 0;
+ }
+ .yo-form {
+ >h3 {
+ margin-top: @padding-sm;
+ padding: 0 @padding-md;
+ }
+ .yo-form-group {
+ margin-bottom: 0;
+ }
+ .ant-form-item {
+ border-right: 0;
+ border-left: 0;
+ &:first-child {
+ margin-top: -1px;
+ }
+ }
+ }
+}
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/table.less b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/table.less
index cc086b8..3b92909 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/table.less
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/table.less
@@ -46,3 +46,37 @@
}
}
}
+.yo-table {
+ .border-right-none {
+ border-right-width: 0;
+ &:last-child {
+ border-right-width: 1px;
+ }
+ }
+ .ant-table-content {
+ >.ant-table-body {
+ >table {
+ >.ant-table-thead {
+ >tr {
+ >th {
+ .border-right-none();
+ }
+ }
+ }
+ >.ant-table-tbody {
+ >tr {
+ >td {
+ .border-right-none();
+ }
+ }
+ }
+ }
+ }
+ }
+}
+.yo-table-actions {
+ display: inline-block;
+ >a {
+ color: darken(@primary-color, 20%);
+ }
+}
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/width-height.css b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/width-height.css
new file mode 100644
index 0000000..88ed53c
--- /dev/null
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/width-height.css
@@ -0,0 +1,3 @@
+.w-100-p {
+ width: 100%;
+}
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/width-height.less b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/width-height.less
new file mode 100644
index 0000000..323dabc
--- /dev/null
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/width-height.less
@@ -0,0 +1,3 @@
+.w-100-p {
+ width: 100%;
+}
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/index.js b/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/index.js
index b3dc121..eb6f495 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/index.js
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/index.js
@@ -61,25 +61,27 @@ for (let key in urls) {
}
}
- api[`${key}E`] = function (params = {}) {
- return initInstance()[method](url, params)
+ api[`${key}Wait`] = function (params = {}) {
+ if (method === 'post') {
+ return initInstance().post(url, params)
+ } else {
+ return initInstance().get(url, {
+ params
+ })
+ }
}
api[key] = function (params = {}) {
return new Promise((reslove, reject) => {
- api[`${key}E`](params)
+ api[`${key}Wait`](params)
.then(({ data }) => {
- if (data.code === status.OK) {
- reslove(data)
- } else {
- reject(data)
- }
+ reslove(data)
})
.catch(err => {
if (process.env.VUE_APP_NODE_ENV === 'development') {
alert('发生错误,请联系管理员')
} else {
- console.warn(err, urls[key])
+ reject(err, urls[key])
}
})
})
@@ -94,10 +96,10 @@ for (let key in urls) {
*/
api.$queue = function (queue) {
return new Promise((reslove) => {
- axios.all(queue).then(axios.spread(function () {
- const res = Array.prototype.slice.apply(arguments).map(p => p.data)
+ axios.all(queue).then((results) => {
+ const res = results.map(p => p.data)
reslove(res)
- }))
+ })
})
}
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests/appManage.js b/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests/appManage.js
new file mode 100644
index 0000000..0840a01
--- /dev/null
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests/appManage.js
@@ -0,0 +1,7 @@
+export default {
+ getAppPage: ['/sysApp/page', 'get'],
+ sysAppAdd: '/sysApp/add',
+ sysAppEdit: '/sysApp/edit',
+ sysAppDelete: '/sysApp/delete',
+ sysAppSetAsDefault: '/sysApp/setAsDefault'
+}
\ No newline at end of file
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests/dictManage.js b/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests/dictManage.js
new file mode 100644
index 0000000..8d880c1
--- /dev/null
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests/dictManage.js
@@ -0,0 +1,3 @@
+export default {
+ sysDictTypeDropDown: ['/sysDictType/dropDown', 'get'],
+}
\ No newline at end of file
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests.js b/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests/index.js
similarity index 69%
rename from Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests.js
rename to Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests/index.js
index c520688..c1ab57c 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests.js
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests/index.js
@@ -11,12 +11,12 @@
* [url]必填,为接口地址,[method]选填,为请求方式(不区分大小写),默认为POST
*/
+import loginManage from './loginManage'
+import dictManage from './dictManage'
+import appManage from './appManage'
+
export default {
- login: '/login',
- logout: ['/logout', 'get'],
- getLoginUser: ['/getLoginUser', 'get'],
-
- getMenu: '/menu/get',
-
- test: '/gate/allownullapi'
+ ...loginManage,
+ ...dictManage,
+ ...appManage
}
\ No newline at end of file
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests/loginManage.js b/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests/loginManage.js
new file mode 100644
index 0000000..f8009d0
--- /dev/null
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/api/requests/loginManage.js
@@ -0,0 +1,5 @@
+export default {
+ login: '/login',
+ logout: ['/logout', 'get'],
+ getLoginUser: ['/getLoginUser', 'get'],
+}
\ No newline at end of file
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/components/authorized/index.js b/Api/Ewide.Core/Ewide.Core.Web.Src/src/components/authorized/index.js
index 4e9b0a0..d917b6f 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/components/authorized/index.js
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/components/authorized/index.js
@@ -16,12 +16,12 @@
* 此时验证的是同时拥有"sysApp:page"和"sysApp:add"两项权限才会渲染
* 2.3.或者关系多项权限
* 例: :auth="[['sysApp:page', 'sysApp:add'], ['sysApp:edit']]"
- * 等同于: :auth="[['sysApp:page', 'sysApp:add'], 'sysApp:edit']"
* 二维数组结构,内部数组之间为并且关系
* 此时验证的是"sysApp:page"&"sysApp:add"||"sysApp:edit"
+ * 注意:或者的条件必须包括在数组中,暴露在外则判定为并且
* 2.4.可直接传入布尔值
* 例: :auth="['sysApp:page', 1 === 1]"
- * :auth="[['sysApp:page', 'sysApp:add'], 1 === 1]"
+ * :auth="[['sysApp:page', 'sysApp:add'], [1 === 1]]"
*
* 3.Json
* 如果觉得多项权限时每次都要写应用编号比较繁琐,可对Array形式进行简化
@@ -31,12 +31,81 @@
* 例: :auth="{ sysApp: ['page', 'add'] }"
* 3.3.或者关系多项权限
* 例: :auth="{ sysApp: [['page', 'add'], ['edit']]}"
- * 等同于: :auth="{ sysApp: [['page', 'add'], 'edit']}"
* 3.4.可直接传入布尔值
* 例: :auth="{ sysApp: ['page', 1 === 1] }"
- * :auth="{ sysApp: [['page', 'add'], 1 === 1] }"
+ * :auth="{ sysApp: [['page', 'add'], [1 === 1]] }"
*
*/
+
+const authByArray = (auth, permissions) => {
+
+ let result = true
+
+ const flags = []
+
+ auth.forEach(p => {
+ switch (p.constructor) {
+ case String:
+ flags.push([permissions.indexOf(p) > -1, '&&'])
+ break
+ case Array:
+ flags.push([authByArray(p, permissions), '||'])
+ break
+ case Boolean:
+ flags.push([p, '&&'])
+ break
+ }
+ })
+
+ flags.forEach(p => {
+ result = p[1] === '&&' ? result && p[0] : result || p[0]
+ })
+
+ return result
+}
+
+const authByJson = (auth, permissions) => {
+
+ let result = true
+
+ const flags = []
+
+ const deepName = (arr, key) => {
+ arr.forEach(p => {
+ switch (p.constructor) {
+ case String:
+ p = `${key}:${p}`
+ break
+ case Array:
+ p = deepName(p, key)
+ break
+ default:
+ p = p
+ break
+ }
+ })
+ }
+
+ for (let key in auth) {
+ const app = auth[key]
+ switch (app.constructor) {
+ case String:
+ flags.push(permissions.indexOf(`${key}:${p}`) > -1)
+ break
+ case Array:
+ flags.push(authByArray(deepName(app, key), permissions))
+ break
+ }
+ }
+
+ flags.forEach(p => {
+ result = result && p
+ })
+
+ return result
+
+}
+
export default {
functional: true,
props: {
@@ -44,7 +113,7 @@ export default {
default() {
return new Array()
},
- type: Array,
+ type: [Array, Object, String],
},
authExclude: {
default() {
@@ -53,42 +122,45 @@ export default {
type: Array,
},
},
+
render(h, context) {
const { props, scopedSlots } = context
- const global = context.parent.$root.global
+ const { info } = context.parent.$root.global
+ const permissions = info.permissions
const auth = props.auth
const authExclude = props.authExclude
- if (!global.info) {
+ if (!info) {
return false
}
/**
* 超级管理员
*/
- // if (global.info.adminType === 1) {
- // return scopedSlots.default()
- // }
+ if (info.adminType === 1) {
+ return scopedSlots.default()
+ }
- if (auth.length) {
- for (let i = 0; i < auth.length; i++) {
- if (global.info && (auth[i] & global.info.authority) === auth[i]) {
- return scopedSlots.default()
- }
- }
- } else if (authExclude.length) {
- let flag = false
- for (let i = 0; i < authExclude.length; i++) {
- if (global.info && (authExclude[i] & global.info.authority) === authExclude[i]) {
- flag = true
- }
- }
+ let flag = false
- if (!flag) {
- return scopedSlots.default()
+ if (auth) {
+ switch (auth.constructor) {
+ case String:
+ flag = permissions.indexOf(auth) > -1
+ break
+ case Array:
+ flag = authByArray(auth, permissions)
+ break
+ case Object:
+ flag = authByJson(auth, permissions)
+ break
}
}
+ if (flag) {
+ return scopedSlots.default()
+ }
+
return false
},
}
\ No newline at end of file
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/components/yoTable/index.js b/Api/Ewide.Core/Ewide.Core.Web.Src/src/components/yoTable/index.js
new file mode 100644
index 0000000..7b71ecb
--- /dev/null
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/components/yoTable/index.js
@@ -0,0 +1,105 @@
+export default {
+ props: {
+ pageNo: {
+ default: 1,
+ type: Number,
+ },
+ pageSize: {
+ default: 20,
+ type: Number,
+ },
+ loadData: {
+ type: Function,
+ require: true,
+ },
+ columns: {
+ type: Array,
+ require: true,
+ },
+ },
+
+ data() {
+ return {
+ loading: false,
+
+ data: [],
+
+ pagination: {
+ current: this.pageNo,
+ pageSize: this.pageSize,
+ total: 0,
+ size: 'small',
+ showSizeChanger: true,
+ showQuickJumper: true,
+ showTotal: (total) => `总共${total}条数据`
+ },
+ };
+ },
+
+ created() {
+ this.onLoadData()
+ },
+
+ methods: {
+
+ onLoading() {
+ this.loading = {
+ indicator: