Merge remote-tracking branch 'origin/develop' into develop

# Conflicts:
#	web/src/settings.ts
This commit is contained in:
李强
2023-12-26 15:37:08 +08:00
15 changed files with 3102 additions and 371 deletions

View File

@@ -13,7 +13,7 @@ import {FsExtendsEditor, FsExtendsUploader} from '@fast-crud/fast-extends';
import '@fast-crud/fast-extends/dist/style.css'; import '@fast-crud/fast-extends/dist/style.css';
import {successMessage, successNotification} from '/@/utils/message'; import {successMessage, successNotification} from '/@/utils/message';
import XEUtils from "xe-utils"; import XEUtils from "xe-utils";
import {commonCrudConfig} from "/@/utils/commonCrud";
export default { export default {
async install(app: any, options: any) { async install(app: any, options: any) {
// 先安装ui // 先安装ui
@@ -110,7 +110,7 @@ export default {
successHandle(ret) { successHandle(ret) {
// 上传完成后的结果处理, 此处应返回格式为{url:xxx,key:xxx} // 上传完成后的结果处理, 此处应返回格式为{url:xxx,key:xxx}
return { return {
url: getBaseURL() + ret.data.url, url: getBaseURL(ret.data.url),
key: ret.data.id, key: ret.data.id,
...ret.data ...ret.data
}; };

View File

@@ -256,6 +256,13 @@
.el-button.is-text { .el-button.is-text {
padding: 0; padding: 0;
} }
th.el-table__cell{
-webkit-user-select: text !important;
-moz-user-select: text !important;
-ms-user-select: text !important;
user-select:text !important;
}
} }
/* scrollbar /* scrollbar

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -5,3 +5,4 @@
@import './media/media.scss'; @import './media/media.scss';
@import './waves.scss'; @import './waves.scss';
@import './dark.scss'; @import './dark.scss';
@import './fa/css/font-awesome.min.css';

View File

@@ -3,9 +3,9 @@ import { pluginsAll } from '/@/views/plugins/index';
/** /**
* @description 校验是否为租户模式。租户模式把域名替换成 域名 加端口 * @description 校验是否为租户模式。租户模式把域名替换成 域名 加端口
*/ */
export const getBaseURL = function () { export const getBaseURL = function (url:string) {
var baseURL = import.meta.env.VITE_API_URL as any; let baseURL = import.meta.env.VITE_API_URL as any;
var param = baseURL.split('/')[3] || ''; let param = baseURL.split('/')[3] || '';
// @ts-ignore // @ts-ignore
if (pluginsAll && pluginsAll.indexOf('dvadmin3-tenants-web') !== -1 && (!param || baseURL.startsWith('/'))) { if (pluginsAll && pluginsAll.indexOf('dvadmin3-tenants-web') !== -1 && (!param || baseURL.startsWith('/'))) {
// 1.把127.0.0.1 替换成和前端一样域名 // 1.把127.0.0.1 替换成和前端一样域名
@@ -26,6 +26,16 @@ export const getBaseURL = function () {
baseURL = location.protocol + '//' + location.hostname + (location.port ? ':' : '') + location.port + baseURL; baseURL = location.protocol + '//' + location.hostname + (location.port ? ':' : '') + location.port + baseURL;
} }
} }
if(url){
const regex = /^(http|https):\/\//;
if(regex.test(url)){
return url
}else{
if(url.startsWith('/')){
return baseURL + url;
}
}
}
if (!baseURL.endsWith('/')) { if (!baseURL.endsWith('/')) {
baseURL += '/'; baseURL += '/';
} }

View File

@@ -50,6 +50,17 @@ const getAwesomeIconfont = () => {
const styles: any = document.styleSheets; const styles: any = document.styleSheets;
let sheetsList = []; let sheetsList = [];
let sheetsIconList = []; let sheetsIconList = [];
// 判断fontFamily是否是本地加载
for (let i = 0; i < styles.length; i++) {
const rules = styles[i].cssRules || styles[i].rules;
if (rules) {
for (let j = 0; j < rules.length; j++) {
if (rules[j].style && rules[j].style.fontFamily === 'FontAwesome') {
sheetsList.push(styles[i])
}
}
}
}
for (let i = 0; i < styles.length; i++) { for (let i = 0; i < styles.length; i++) {
if (styles[i].href && styles[i].href.indexOf('netdna.bootstrapcdn.com') > -1) { if (styles[i].href && styles[i].href.indexOf('netdna.bootstrapcdn.com') > -1) {
sheetsList.push(styles[i]); sheetsList.push(styles[i]);

View File

@@ -2,7 +2,7 @@
const cssCdnUrlList: Array<string> = [ const cssCdnUrlList: Array<string> = [
'//at.alicdn.com/t/font_2298093_y6u00apwst.css', '//at.alicdn.com/t/font_2298093_y6u00apwst.css',
'//at.alicdn.com/t/c/font_3882322_9ah7y8m9175.css', //dvadmin3项目用icon '//at.alicdn.com/t/c/font_3882322_9ah7y8m9175.css', //dvadmin3项目用icon
'//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css' //'//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css'
]; ];
// 第三方 js url // 第三方 js url
const jsCdnUrlList: Array<string> = []; const jsCdnUrlList: Array<string> = [];

View File

@@ -48,9 +48,9 @@
| |
<a :href="getSystemConfig['login.help_url']?getSystemConfig['login.help_url']:'https://django-vue-admin.com'" target="_blank">帮助</a> <a :href="getSystemConfig['login.help_url']?getSystemConfig['login.help_url']:'https://django-vue-admin.com'" target="_blank">帮助</a>
| |
<a :href="getSystemConfig['login.privacy_url']?getSystemConfig['login.privacy_url']:'#'">隐私</a> <a :href="getSystemConfig['login.privacy_url']?getBaseURL(getSystemConfig['login.privacy_url']):'#'">隐私</a>
| |
<a :href="getSystemConfig['login.clause_url']?getSystemConfig['login.clause_url']:'#'">条款</a> <a :href="getSystemConfig['login.clause_url']?getBaseURL(getSystemConfig['login.clause_url']):'#'">条款</a>
</p> </p>
</div> </div>
</div> </div>
@@ -65,6 +65,7 @@ import logoMini from '/@/assets/logo-mini.svg';
import loginMain from '/@/assets/login-main.svg'; import loginMain from '/@/assets/login-main.svg';
import loginBg from '/@/assets/login-bg.svg'; import loginBg from '/@/assets/login-bg.svg';
import {SystemConfigStore} from '/@/stores/systemConfig' import {SystemConfigStore} from '/@/stores/systemConfig'
import {getBaseURL} from "/@/utils/baseUrl";
// 引入组件 // 引入组件
const Account = defineAsyncComponent(() => import('/@/views/system/login/component/account.vue')); const Account = defineAsyncComponent(() => import('/@/views/system/login/component/account.vue'));
const Mobile = defineAsyncComponent(() => import('/@/views/system/login/component/mobile.vue')); const Mobile = defineAsyncComponent(() => import('/@/views/system/login/component/mobile.vue'));

View File

@@ -1,10 +1,22 @@
import * as api from './api'; import * as api from './api';
import { dict, UserPageQuery, AddReq, DelReq, EditReq, compute, CreateCrudOptionsProps, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; import {
dict,
UserPageQuery,
AddReq,
DelReq,
EditReq,
compute,
CreateCrudOptionsProps,
CreateCrudOptionsRet
} from '@fast-crud/fast-crud';
import {request} from '/@/utils/service'; import {request} from '/@/utils/service';
import {dictionary} from '/@/utils/dictionary'; import {dictionary} from '/@/utils/dictionary';
import {successMessage} from '/@/utils/message'; import {successMessage} from '/@/utils/message';
import {auth} from '/@/utils/authFunction'; import {auth} from '/@/utils/authFunction';
import {SystemConfigStore} from "/@/stores/systemConfig";
import {storeToRefs} from "pinia";
import {computed} from "vue";
import { Md5 } from 'ts-md5';
export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps): CreateCrudOptionsRet { export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps): CreateCrudOptionsRet {
const pageRequest = async (query: UserPageQuery) => { const pageRequest = async (query: UserPageQuery) => {
return await api.GetList(query); return await api.GetList(query);
@@ -24,6 +36,13 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp
return await api.exportData(query) return await api.exportData(query)
} }
const systemConfigStore = SystemConfigStore()
const {systemConfig} = storeToRefs(systemConfigStore)
const getSystemConfig = computed(() => {
console.log(systemConfig.value)
return systemConfig.value
})
return { return {
crudOptions: { crudOptions: {
@@ -38,6 +57,13 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp
editRequest, editRequest,
delRequest, delRequest,
}, },
form: {
initialForm: {
password: computed(() => {
return systemConfig.value['base.default_password']
}),
}
},
actionbar: { actionbar: {
buttons: { buttons: {
add: { add: {
@@ -120,7 +146,7 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp
}, },
password: { password: {
title: '密码', title: '密码',
type: 'input', type: 'password',
column: { column: {
show: false, show: false,
}, },
@@ -136,17 +162,17 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp
}, },
], ],
component: { component: {
span: 12, span: 12,
showPassword: true, showPassword: true,
placeholder: '请输入密码', placeholder: '请输入密码',
}, },
// value: vm.systemConfig('base.default_password'),
}, },
/* valueResolve(row, key) { valueResolve({form}) {
if (row.password) { if (form.password) {
row.password = vm.$md5(row.password) form.password = Md5.hashStr(form.password)
}
} }
} */
}, },
name: { name: {
title: '姓名', title: '姓名',