diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/.env.development b/Api/Ewide.Core/Ewide.Core.Web.Src/.env.development
index 9b86ec5..f425a8b 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/.env.development
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/.env.development
@@ -1,2 +1,3 @@
-VUE_APP_BASE_URL=http://localhost:60161
+VUE_APP_NODE_ENV=development
+VUE_APP_BASE_URL=http://localhost:5566
VUE_APP_DEV_KEY=CJm9dFWx4IIGXHm^R1e@Y&mp*n8MQXfDKjDYP6ZVGqEAZQiC9LvX9jq8@uaMTT@T
\ No newline at end of file
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/.env.production b/Api/Ewide.Core/Ewide.Core.Web.Src/.env.production
index 78198b2..1d6037e 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/.env.production
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/.env.production
@@ -1,2 +1,3 @@
+VUE_APP_NODE_ENV=production
VUE_APP_BASE_URL=http://localhost:60161
VUE_APP_DEV_KEY=%0!qF2BpcVorlNceu#kP4SVS1bPiMUqI71%rITatPIosNOCrot@mV7PJ&br$CVvF
\ No newline at end of file
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 c0637a1..c0ab4b7 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
@@ -1,4 +1,4 @@
-@import '~ant-design-vue/dist/antd.less';
+@import './extend.less';
@import './lib/visibility.less';
@import './lib/container.less';
@import './lib/align.less';
@@ -19,4 +19,4 @@
@import './lib/form.less';
@import './lib/select.less';
@import './theme/primary.less';
-@import './lib/font-weight.less';
+// @import './lib/font-weight.less';
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/extend.less b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/extend.less
new file mode 100644
index 0000000..e1be7b4
--- /dev/null
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/extend.less
@@ -0,0 +1,3 @@
+@import '~ant-design-vue/dist/antd.less';
+@padding-xxs: 4px;
+@padding-xl: 32px;
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/card.less b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/card.less
index 61a1409..823348b 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/card.less
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/card.less
@@ -1,4 +1,4 @@
-@import (reference) '~ant-design-vue/dist/antd.less';
+@import (reference) '~@/assets/style/extend.less';
.ant-card {
margin-bottom: @padding-md;
}
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/container.less b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/container.less
index 275f2f6..fdf7179 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/container.less
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/container.less
@@ -1,4 +1,4 @@
-@import (reference) '~ant-design-vue/dist/antd.less';
+@import (reference) '~@/assets/style/extend.less';
@container-width: 1200px;
.container {
width: @container-width;
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/font-size.less b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/font-size.less
index 3d8a3fe..15316f9 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/font-size.less
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/font-size.less
@@ -1 +1 @@
-@import (reference) '~ant-design-vue/dist/antd.less';
+@import (reference) '~@/assets/style/extend.less';
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/font-weight.less b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/font-weight.less
index 2849efa..02f6b16 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/font-weight.less
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/font-weight.less
@@ -1,4 +1,4 @@
-@import (reference) '~ant-design-vue/dist/antd.less';
+@import (reference) '~@/assets/style/extend.less';
body {
font-weight: 100;
}
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 df7d1f7..8caa7eb 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
@@ -1,7 +1,9 @@
-@import (reference) '~ant-design-vue/dist/antd.less';
+@import (reference) '~@/assets/style/extend.less';
.yo-form {
- width: 660px;
- margin: 0 auto;
+ &--fixed {
+ width: 660px;
+ margin: 0 auto;
+ }
.yo-form-group {
margin-bottom: @padding-md;
}
@@ -14,24 +16,123 @@
border: @border-width-base @border-style-base @border-color-split;
background-color: @white;
+
+ @box-shadow-focused: 0 0 0 2px fade(@primary-color, 50%);
&::before,
&::after {
content: none;
}
+ .ant-form-item-control {
+ text-align: right;
+ }
.ant-input,
- .ant-select-selection {
- border-color: transparent;
- background-color: #f1f3f4;
+ .ant-input-number,
+ .ant-mentions,
+ .ant-select-selection,
+ .ant-input-group-addon {
+ z-index: 1;
+
+ text-align: left;
+
+ color: lighten(@black, 10%);
+ border: 0;
+ background-color: lighten(@black, 95%);
+ }
+ .ant-mentions {
+ textarea {
+ background-color: lighten(@black, 95%);
+ }
+ }
+ .focus {
+ z-index: 2 !important;
+
+ box-shadow: @box-shadow-focused;
+ }
+ .ant-input {
+ &:focus {
+ .focus();
+ }
+ }
+ .ant-input-number-focused,
+ .ant-mentions-focused {
+ .focus();
}
.ant-select-focused,
.ant-select-open {
+ z-index: 2;
.ant-select-selection {
- box-shadow: 0 0 0 2px fade(@primary-color, 50%);
+ .focus();
+ }
+ }
+ .ant-input-group {
+ .ant-row-flex {
+ .ant-select {
+ width: 100%;
+ }
+ }
+ .ant-input-group-addon {
+ z-index: 0;
+ }
+ }
+ }
+ .ant-form-item-label {
+ overflow: hidden;
+ flex: 1 1 auto;
+
+ margin-right: @padding-md;
+
+ text-align: left;
+ text-overflow: ellipsis;
+ >label {
+ color: lighten(@black, 10%);
+ &::after {
+ content: none;
}
}
}
.ant-form-item-control-wrapper {
- width: 50%;
+ flex: 0 0 61.8%;
+
+ width: 61.8%;
min-width: 220px;
}
+ .ant-form-explain {
+ font-size: @font-size-base - 1px;
+
+ margin-top: @padding-xs;
+ margin-bottom: @padding-xxs;
+ margin-left: -61.8%;
+
+ transition: none;
+ animation: none;
+ text-align: left;
+
+ opacity: 1;
+ color: fade(darken(@primary-color, 38.2%), 61.8%);
+ }
+ // 上下布局
+ .yo-form--vertical {
+ display: block;
+ .ant-form-item-control {
+ text-align: left;
+ }
+ &-radio {
+ .ant-radio-wrapper {
+ line-height: @padding-lg;
+
+ display: block;
+
+ margin-right: 0;
+ +.ant-radio-wrapper {
+ margin-top: @padding-sm;
+ }
+ }
+ }
+ .ant-form-item-control-wrapper {
+ margin-left: @padding-lg;
+ }
+ .ant-form-explain {
+ margin-left: 0;
+ }
+ }
}
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/margin.less b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/margin.less
index 2833436..567a16c 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/margin.less
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/margin.less
@@ -1,4 +1,4 @@
-@import (reference) '~ant-design-vue/dist/antd.less';
+@import (reference) '~@/assets/style/extend.less';
@margin-padding-position: ~'', ~'-top', ~'-left', ~'-right', ~'-bottom';
@margin-padding-position-name: ~'', ~'t', ~'l', ~'r', ~'b';
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/scrollbar.less b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/scrollbar.less
index d5a9c09..a6b92a7 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/scrollbar.less
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/scrollbar.less
@@ -1,4 +1,4 @@
-@import (reference) '~ant-design-vue/dist/antd.less';
+@import (reference) '~@/assets/style/extend.less';
::-webkit-scrollbar {
width: 7px;
height: 7px;
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/select.less b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/select.less
index 707b058..8e1865f 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/select.less
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/lib/select.less
@@ -1,4 +1,4 @@
-@import (reference) '~ant-design-vue/dist/antd.less';
+@import (reference) '~@/assets/style/extend.less';
.ant-select-arrow {
.ant-select-arrow-icon {
transform: scaleY(.75);
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 fe52f96..cc086b8 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
@@ -1,4 +1,4 @@
-@import (reference) '~ant-design-vue/dist/antd.less';
+@import (reference) '~@/assets/style/extend.less';
.yo-query-bar {
margin-bottom: @padding-md;
}
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/main.less b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/main.less
index efd4176..7b77274 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/main.less
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/assets/style/main.less
@@ -1,4 +1,4 @@
-@import (reference) '~ant-design-vue/dist/antd.less';
+@import (reference) './extend.less';
@import (reference) './lib/container.less';
.main(@nav-background: @layout-header-background,
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 ca5910c..b3dc121 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
@@ -8,7 +8,7 @@ import { token } from '@/common/token'
import status from './status'
import app from '@/main'
-axios.defaults.baseURL = process.env.VUE_APP_BASE_URL + '/api'
+axios.defaults.baseURL = '/api'
/**
* 最终直接根据url名称调用接口方法
@@ -44,22 +44,39 @@ const api = {}
for (let key in urls) {
+ const item = urls[key]
+ let url = '',
+ method = 'post'
+ if (item.constructor === String) {
+ url = item
+ } else if (item.constructor === Array) {
+ url = item[0]
+ if (item[1]) {
+ method = item[1].toLowerCase()
+ }
+ } else if (item.constructor === Object) {
+ url = item.url
+ if (item.method) {
+ method = item.method.toLowerCase()
+ }
+ }
+
api[`${key}E`] = function (params = {}) {
- return initInstance().post(urls[key], params)
+ return initInstance()[method](url, params)
}
api[key] = function (params = {}) {
return new Promise((reslove, reject) => {
api[`${key}E`](params)
.then(({ data }) => {
- if (data.status === status.OK) {
+ if (data.code === status.OK) {
reslove(data)
} else {
reject(data)
}
})
.catch(err => {
- if (process.env.PROD) {
+ if (process.env.VUE_APP_NODE_ENV === 'development') {
alert('发生错误,请联系管理员')
} else {
console.warn(err, urls[key])
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.js
index 992ec03..c520688 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.js
@@ -1,5 +1,20 @@
+/**
+ * 接口的3种配置方式
+ * 1.string
+ * 如login: '/login'\
+ * 将会默认已POST方式请求接口/login
+ * 2.array
+ * 如login: ['/login', 'post']
+ * 数组[0]必填,为接口地址,[1]选填,为请求方式(不区分大小写),默认为POST
+ * 3.object
+ * 如login: { url: '/login', method: 'post' }
+ * [url]必填,为接口地址,[method]选填,为请求方式(不区分大小写),默认为POST
+ */
+
export default {
- login: '/gate/login',
+ login: '/login',
+ logout: ['/logout', 'get'],
+ getLoginUser: ['/getLoginUser', 'get'],
getMenu: '/menu/get',
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/login/index.js b/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/login/index.js
index 04724bc..5b6e84d 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/login/index.js
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/common/login/index.js
@@ -1,46 +1,46 @@
-import { api } from '@/common/api';
-import { token } from '@/common/token';
-import { encryptByDES, decryptByDES } from '@/util/des';
-import app from '@/main';
+import { api } from '@/common/api'
+import { token } from '@/common/token'
+import { encryptByDES, decryptByDES } from '@/util/des'
+import app from '@/main'
-const GLOBAL_KEY = '__GLOBAL';
+const GLOBAL_KEY = '__GLOBAL'
const setGlobal = (info) => {
- app.$set(app.global, 'info', info);
- window.sessionStorage.setItem(GLOBAL_KEY, encryptByDES(JSON.stringify(info)));
+ app.$set(app.global, 'info', info)
+ window.sessionStorage.setItem(GLOBAL_KEY, encryptByDES(JSON.stringify(info)))
}
const removeGlobal = () => {
- app.$set(app.global, 'info', undefined);
- window.sessionStorage.removeItem(GLOBAL_KEY);
+ app.$set(app.global, 'info', undefined)
+ window.sessionStorage.removeItem(GLOBAL_KEY)
}
const getGlobal = () => {
- return JSON.parse(decryptByDES(window.sessionStorage.getItem(GLOBAL_KEY)));
+ return JSON.parse(decryptByDES(window.sessionStorage.getItem(GLOBAL_KEY)))
}
const doLogin = (args) => {
return new Promise((resolve, reject) => {
- api.login({
- account: args.account,
- password: args.password
- }).then(({ result }) => {
- if (result.success) {
- token.value = result.data.token;
- app.$message.success('登录成功');
- setGlobal(result.data.info)
+ api.login(args).then(({ success, data, message }) => {
+ if (success) {
+ token.value = data
+ app.$message.success('登录成功')
if (app.$route.query.return) {
- const r = decryptByDES(app.$route.query.return);
+ const r = decryptByDES(app.$route.query.return)
app.$router.replace(r)
} else {
- app.$router.replace('/');
+ app.$router.replace('/')
}
- resolve();
+ resolve()
} else {
- app.$message.error(result.message);
- reject();
+ app.$message.error(message)
+ reject()
}
- });
+ }).catch(({ message }) => {
+ if (typeof message === 'object' && message[0]) {
+ app.$message.error(message[0].messages[0])
+ }
+ })
})
}
@@ -48,10 +48,10 @@ const doLogout = () => {
return new Promise((resolve, reject) => {
api.logout().then(({ result: { success, message } }) => {
if (success) {
- removeGlobal();
- token.value = '';
+ removeGlobal()
+ token.value = ''
if (app.$route.path === '/') {
- app.$router.replace('/login');
+ app.$router.replace('/login')
} else {
app.$router.replace({
path: '/login',
@@ -60,10 +60,10 @@ const doLogout = () => {
}
})
}
- resolve();
+ resolve()
} else {
- app.$message.error(message);
- reject();
+ app.$message.error(message)
+ reject()
}
})
})
@@ -72,11 +72,11 @@ const doLogout = () => {
const doCheck = () => {
return new Promise((resolve, reject) => {
api.checkLogin().then(({ result }) => {
- setGlobal(result);
- resolve();
+ setGlobal(result)
+ resolve()
}).catch(() => {
- reject();
- });
+ reject()
+ })
})
}
@@ -85,5 +85,6 @@ export {
doLogout,
doCheck,
+ setGlobal,
getGlobal
}
\ 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
new file mode 100644
index 0000000..4e9b0a0
--- /dev/null
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/components/authorized/index.js
@@ -0,0 +1,94 @@
+/**
+ * auth: 允许的权限
+ * authExclude: 排除的权限
+ *
+ * auth的几种传值方式
+ * 1.String
+ * 例: auth="sysApp:page"
+ * 直接传入字符串,对单项权限进行验证
+ *
+ * 2.Array
+ * 2.1.单项权限
+ * 例: :auth="['sysApp:page']"
+ * 2.2.并且关系多项权限
+ * 例: :auth="['sysApp:page', 'sysApp:add']"
+ * 数组中传入多个字符串
+ * 此时验证的是同时拥有"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]"
+ *
+ * 3.Json
+ * 如果觉得多项权限时每次都要写应用编号比较繁琐,可对Array形式进行简化
+ * 3.1.单项权限
+ * 例: :auth="{ sysApp: 'page' }"
+ * 3.2.并且关系多项权限
+ * 例: :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] }"
+ *
+ */
+export default {
+ functional: true,
+ props: {
+ auth: {
+ default() {
+ return new Array()
+ },
+ type: Array,
+ },
+ authExclude: {
+ default() {
+ return new Array()
+ },
+ type: Array,
+ },
+ },
+ render(h, context) {
+ const { props, scopedSlots } = context
+ const global = context.parent.$root.global
+ const auth = props.auth
+ const authExclude = props.authExclude
+
+ if (!global.info) {
+ return false
+ }
+
+ /**
+ * 超级管理员
+ */
+ // if (global.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
+ }
+ }
+
+ if (!flag) {
+ return scopedSlots.default()
+ }
+ }
+
+ return false
+ },
+}
\ No newline at end of file
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/main.js b/Api/Ewide.Core/Ewide.Core.Web.Src/src/main.js
index b4f1adf..681e3df 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/main.js
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/main.js
@@ -44,6 +44,8 @@ Vue.prototype.$_ = _
*/
import Container from './components/container'
Vue.component('Container', Container)
+import Authorized from './components/authorized'
+Vue.component('Auth', Authorized)
/**
* 引入主题样式
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/pages/form/normal.vue b/Api/Ewide.Core/Ewide.Core.Web.Src/src/pages/form/normal.vue
new file mode 100644
index 0000000..f147e6a
--- /dev/null
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/pages/form/normal.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/pages/form/yo.vue b/Api/Ewide.Core/Ewide.Core.Web.Src/src/pages/form/yo.vue
new file mode 100644
index 0000000..84a95ef
--- /dev/null
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/pages/form/yo.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+ 输入框
+
+ 数字输入框
+
+ 文本域
+
+ 提及
+
+ 单选框
+
+
+
+
+
\ No newline at end of file
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/pages/form/yo/Input.vue b/Api/Ewide.Core/Ewide.Core.Web.Src/src/pages/form/yo/Input.vue
new file mode 100644
index 0000000..49cee58
--- /dev/null
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/pages/form/yo/Input.vue
@@ -0,0 +1,63 @@
+
+
+
\ No newline at end of file
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/pages/system/app/index.vue b/Api/Ewide.Core/Ewide.Core.Web.Src/src/pages/system/app/index.vue
new file mode 100644
index 0000000..1ad8e6f
--- /dev/null
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/pages/system/app/index.vue
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
Button
+
Button
+
Button
+
Button
+
+ Button
+ Button
+ Button
+
+
+
+ 1st item
+ 2nd item
+ 3rd item
+
+
+ Actions
+
+
+
+
+ Dropdown
+
+
+ 1st menu item
+
+
+ 2nd menu item
+
+
+ 3rd item
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/views/login/index.vue b/Api/Ewide.Core/Ewide.Core.Web.Src/src/views/login/index.vue
index a88b113..e695608 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/views/login/index.vue
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/views/login/index.vue
@@ -1,18 +1,19 @@
-
+
-
+
-
+
Log in
@@ -25,7 +26,8 @@ import { doLogin } from '@/common/login';
export default {
data() {
return {
- formInline: {
+ loading: false,
+ form: {
user: '',
password: '',
},
@@ -33,9 +35,12 @@ export default {
},
methods: {
handleSubmit(e) {
+ this.loading = true;
doLogin({
- account: this.formInline.user,
- password: this.formInline.password,
+ account: this.form.user,
+ password: this.form.password,
+ }).then(() => {
+ this.loading = false;
});
},
},
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/views/main/_layout/content.vue b/Api/Ewide.Core/Ewide.Core.Web.Src/src/views/main/_layout/content.vue
index 5d78dee..cb8f8ff 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/views/main/_layout/content.vue
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/views/main/_layout/content.vue
@@ -13,6 +13,13 @@
{{ pane.title }}
+
+
+ 复制组件地址
+ dev
+
+
+
重新加载
关闭
@@ -42,6 +49,7 @@ export default {
},
data() {
return {
+ mode: process.env.VUE_APP_NODE_ENV,
actived: '',
};
},
@@ -79,6 +87,22 @@ export default {
onChange(activeKey) {
this.$emit('change', activeKey);
},
+
+ onCopyComponent(pane) {
+ try {
+ const copy = document.createElement('textarea');
+ document.body.append(copy);
+ copy.value = `/pages${pane.path}`;
+ copy.select();
+ setTimeout(() => {
+ document.execCommand('copy');
+ copy.remove();
+ this.$message.success('已复制到剪切板');
+ });
+ } catch {
+ this.$message.error('复制错误');
+ }
+ },
},
};
\ No newline at end of file
diff --git a/Api/Ewide.Core/Ewide.Core.Web.Src/src/views/main/_layout/header.vue b/Api/Ewide.Core/Ewide.Core.Web.Src/src/views/main/_layout/header.vue
index 6457952..f86c36b 100644
--- a/Api/Ewide.Core/Ewide.Core.Web.Src/src/views/main/_layout/header.vue
+++ b/Api/Ewide.Core/Ewide.Core.Web.Src/src/views/main/_layout/header.vue
@@ -29,7 +29,7 @@