diff --git a/src/api/login.js b/src/api/login.js
index cd029b1c..ef8eff1d 100644
--- a/src/api/login.js
+++ b/src/api/login.js
@@ -62,18 +62,6 @@ export function getPhoneCode(payload) {
})
}
-// 注册方法
-export function register(data) {
- return request({
- url: '/auth/register',
- headers: {
- isToken: false
- },
- method: 'post',
- data: data
- })
-}
-
// 刷新方法
export function refreshToken() {
return request({
diff --git a/src/components/FileImageUpload/index.vue b/src/components/FileImageUpload/index.vue
index a4fde74d..53c71491 100644
--- a/src/components/FileImageUpload/index.vue
+++ b/src/components/FileImageUpload/index.vue
@@ -219,25 +219,49 @@ export default {
isWord(file) {
return /\.(doc|docx)$/i.test(file.name)
},
+ isValidFileUrl(rawUrl) {
+ if (!rawUrl || typeof rawUrl !== 'string') return false
+
+ try {
+ const url = new URL(rawUrl, window.location.origin)
+
+ // 1️⃣ 协议校验
+ if (!['http:', 'https:'].includes(url.protocol)) {
+ return false
+ }
+
+ // 2️⃣ 文件后缀校验
+ const pathname = url.pathname.toLowerCase()
+
+ return /\.(jpg|jpeg|png|gif|webp|pdf|doc|docx)$/.test(pathname)
+ } catch (e) {
+ return false
+ }
+ },
// 预览
handlePictureCardPreview(file) {
- console.log('🚀 ~ file:', file)
- const url = file.url || file.response?.data?.url
+ const rawUrl = file.url || file.response?.data?.url
+ // 🚨 新增:文件类型校验
+ if (!this.isValidFileUrl(rawUrl)) {
+ this.$modal.msgError('非法文件地址')
+ return
+ }
+
+ const safeUrl = new URL(rawUrl, window.location.origin).toString()
+ console.log('🚀 ~ safeUrl:', safeUrl)
if (this.isPDF(file)) {
- // PDF 新窗口打开
- window.open(url, '_blank')
+ window.open(safeUrl, '_blank')
return
}
if (this.isWord(file)) {
- // Word:直接跳转浏览器下载
- window.location.href = url
+ window.location.href = safeUrl
return
}
if (!this.isImage(file)) {
- window.open(url, '_blank')
+ window.open(safeUrl, '_blank')
return
}
diff --git a/src/permission.js b/src/permission.js
index e09afb0d..8861e138 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -8,7 +8,7 @@ import { isRelogin } from "@/utils/request";
NProgress.configure({ showSpinner: false });
-const whiteList = ["/login", "/register", "/qrCode/qrCodePage","/screen/cityScreen"];
+const whiteList = ["/login", "/qrCode/qrCodePage","/screen/cityScreen"];
router.beforeEach((to, from, next) => {
NProgress.start();
diff --git a/src/router/index.js b/src/router/index.js
index 4116e178..9cc0ec06 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -46,11 +46,6 @@ export const constantRoutes = [
component: () => import('@/views/login1'),
hidden: true
},
- {
- path: '/register',
- component: () => import('@/views/register1'),
- hidden: true
- },
{
path: '/404',
component: () => import('@/views/error/404'),
diff --git a/src/views/login.vue b/src/views/login.vue
index c8410b7e..17ab5edd 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -70,11 +70,6 @@
登 录
登 录 中...
-
- 立即注册
-
diff --git a/src/views/login1.vue b/src/views/login1.vue
index 4f499640..df58790d 100644
--- a/src/views/login1.vue
+++ b/src/views/login1.vue
@@ -105,15 +105,6 @@
{{ loginMethod === 'password' ? '短信登录' : '密码登录' }}
-
@@ -207,10 +198,6 @@ export default {
phoneCode: false,
emailCode: false
},
- registersConfig: {
- phoneRegisters: true,
- emailRegisters: true
- }
}
) // 获取 JSON 对象
},
diff --git a/src/views/register.vue b/src/views/register.vue
deleted file mode 100644
index 3a8ce4d3..00000000
--- a/src/views/register.vue
+++ /dev/null
@@ -1,263 +0,0 @@
-
-
-
- 机械化施工装备管理(共享)平台
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
![]()
-
-
-
-
- 注 册
- 注 册 中...
-
-
- 使用已有账户登录
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/register1.vue b/src/views/register1.vue
deleted file mode 100644
index 0f1324d4..00000000
--- a/src/views/register1.vue
+++ /dev/null
@@ -1,409 +0,0 @@
-
-
-
-
- 机械化施工装备管理(共享)平台
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
![]()
-
-
-
-
-
-
-
- {{ isSendingCode ? `${countdown}s` : "获取验证码" }}
-
-
-
-
-
-
-
-
- 注 册
- 注 册 中...
-
-
- 使用已有账户登录
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/screen/gwScreen/components/left/TotalPriceMore.vue b/src/views/screen/gwScreen/components/left/TotalPriceMore.vue
index ad6604f8..445f08b0 100644
--- a/src/views/screen/gwScreen/components/left/TotalPriceMore.vue
+++ b/src/views/screen/gwScreen/components/left/TotalPriceMore.vue
@@ -44,7 +44,7 @@ export default {
// 造点假数据
const categories = ['2020', '2021', '2022', '2023', '2024', '2025']
- const data = Array.from({ length: 6 }, () => Math.floor(Math.random() * 1000 + 500))
+ const data = [520, 680, 750, 820, 910, 1050]
const option = {
tooltip: {
diff --git a/src/views/screen/widescreen/cityScreen.vue b/src/views/screen/widescreen/cityScreen.vue
index 99f5815e..81cd1bb6 100644
--- a/src/views/screen/widescreen/cityScreen.vue
+++ b/src/views/screen/widescreen/cityScreen.vue
@@ -8,8 +8,9 @@ export default {
return {}
},
mounted() {
+ const url = process.env.VUE_APP_BASE_API == '/iws/jiju-api' ? 'iws/glweb/#' : ''
// 打开大屏
- window.open('iws/glweb/#/screen/cityScreen', '_blank')
+ window.open(`${url}/screen/cityScreen`, '_blank')
// 关闭当前标签页
this.$tab.closePage()
},
diff --git a/src/views/screen/widescreen/cityWidescreen.vue b/src/views/screen/widescreen/cityWidescreen.vue
index 822fbf1d..8ebbd35e 100644
--- a/src/views/screen/widescreen/cityWidescreen.vue
+++ b/src/views/screen/widescreen/cityWidescreen.vue
@@ -8,8 +8,9 @@ export default {
return {}
},
mounted() {
+ const url = process.env.VUE_APP_BASE_API == '/iws/jiju-api' ? 'iws/glweb/#' : ''
// 打开大屏
- window.open('iws/glweb/#/screen/cityWidescreen', '_blank')
+ window.open(`${url}/screen/cityWidescreen`, '_blank')
// 关闭当前标签页
this.$tab.closePage()
},
diff --git a/src/views/screen/widescreen/gwScreen.vue b/src/views/screen/widescreen/gwScreen.vue
index 0195fcf4..0dd6bfe2 100644
--- a/src/views/screen/widescreen/gwScreen.vue
+++ b/src/views/screen/widescreen/gwScreen.vue
@@ -8,8 +8,9 @@ export default {
return {}
},
mounted() {
+ const url = process.env.VUE_APP_BASE_API == '/iws/jiju-api' ? 'iws/glweb/#' : ''
// 打开大屏
- window.open('iws/glweb/#/screen/gwScreen', '_blank')
+ window.open(`${url}/screen/gwScreen`, '_blank')
// 关闭当前标签页
this.$tab.closePage()
},
diff --git a/src/views/screen/widescreen/index.vue b/src/views/screen/widescreen/index.vue
index abafe1f6..d75c8d39 100644
--- a/src/views/screen/widescreen/index.vue
+++ b/src/views/screen/widescreen/index.vue
@@ -8,8 +8,9 @@ export default {
return {}
},
mounted() {
+ const url = process.env.VUE_APP_BASE_API == '/iws/jiju-api' ? 'iws/glweb/#' : ''
// 打开大屏
- window.open('iws/glweb/#/screen/wsScreenWidescreen', '_blank')
+ window.open(`${url}/screen/wsScreenWidescreen`, '_blank')
// 关闭当前标签页
this.$tab.closePage()
},
diff --git a/src/views/screen/widescreen/shareScreen.vue b/src/views/screen/widescreen/shareScreen.vue
index a34adbd7..93513458 100644
--- a/src/views/screen/widescreen/shareScreen.vue
+++ b/src/views/screen/widescreen/shareScreen.vue
@@ -8,8 +8,9 @@ export default {
return {}
},
mounted() {
+ const url = process.env.VUE_APP_BASE_API == '/iws/jiju-api' ? 'iws/glweb/#' : ''
// 打开大屏
- window.open('iws/glweb/#/screen/shareScreen', '_blank')
+ window.open(`${url}/screen/shareScreen`, '_blank')
// 关闭当前标签页
this.$tab.closePage()
},
diff --git a/src/views/screen/widescreen/wsScreen.vue b/src/views/screen/widescreen/wsScreen.vue
index 065d4d7d..768514a5 100644
--- a/src/views/screen/widescreen/wsScreen.vue
+++ b/src/views/screen/widescreen/wsScreen.vue
@@ -8,8 +8,9 @@ export default {
return {}
},
mounted() {
+ const url = process.env.VUE_APP_BASE_API == '/iws/jiju-api' ? 'iws/glweb/#' : ''
// 打开大屏
- window.open('iws/glweb/#/screen/wsScreen', '_blank')
+ window.open(`${url}/screen/wsScreen`, '_blank')
// 关闭当前标签页
this.$tab.closePage()
},
diff --git a/src/views/screen/wsScreen/components/left/TotalPriceMore.vue b/src/views/screen/wsScreen/components/left/TotalPriceMore.vue
index a2c4873f..e54de6d1 100644
--- a/src/views/screen/wsScreen/components/left/TotalPriceMore.vue
+++ b/src/views/screen/wsScreen/components/left/TotalPriceMore.vue
@@ -44,7 +44,7 @@ export default {
// 造点假数据
const categories = ['2020', '2021', '2022', '2023', '2024', '2025']
- const data = Array.from({ length: 6 }, () => Math.floor(Math.random() * 1000 + 500))
+ const data = [520, 680, 750, 820, 910, 1050]
const option = {
tooltip: {
diff --git a/src/views/screen/wsScreenWidescreen/components/left/TotalPriceMore.vue b/src/views/screen/wsScreenWidescreen/components/left/TotalPriceMore.vue
index ad6604f8..445f08b0 100644
--- a/src/views/screen/wsScreenWidescreen/components/left/TotalPriceMore.vue
+++ b/src/views/screen/wsScreenWidescreen/components/left/TotalPriceMore.vue
@@ -44,7 +44,7 @@ export default {
// 造点假数据
const categories = ['2020', '2021', '2022', '2023', '2024', '2025']
- const data = Array.from({ length: 6 }, () => Math.floor(Math.random() * 1000 + 500))
+ const data = [520, 680, 750, 820, 910, 1050]
const option = {
tooltip: {
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 1949950e..fcc44d41 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -695,30 +695,31 @@ export default {
})
},
confirmPassword(row) {
- this.$prompt('请输入密码,鉴别用户', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- closeOnClickModal: false,
- inputPattern: /^.{8,16}$/,
- inputErrorMessage: '用户密码长度必须介于 8 和 16 之间',
- inputValidator: (value) => {
- // 调用 validateNewPassword 校验
- const errorMessage = function (error) {
- if (error) {
- return error.message;
- } else {
- console.log('验证通过');
- }
- };
- validateNewPassword(null, value, errorMessage);
- }
- }).then(({value}) => {
- confirmPassword(value).then(response => {
- this.$modal.msgSuccess('验证成功')
- this.handleUpdate(row)
- })
- }).catch(() => {
- })
+ this.handleUpdate(row)
+ // this.$prompt('请输入密码,鉴别用户', '提示', {
+ // confirmButtonText: '确定',
+ // cancelButtonText: '取消',
+ // closeOnClickModal: false,
+ // inputPattern: /^.{8,16}$/,
+ // inputErrorMessage: '用户密码长度必须介于 8 和 16 之间',
+ // inputValidator: (value) => {
+ // // 调用 validateNewPassword 校验
+ // const errorMessage = function (error) {
+ // if (error) {
+ // return error.message;
+ // } else {
+ // console.log('验证通过');
+ // }
+ // };
+ // validateNewPassword(null, value, errorMessage);
+ // }
+ // }).then(({value}) => {
+ // confirmPassword(value).then(response => {
+ // this.$modal.msgSuccess('验证成功')
+ // this.handleUpdate(row)
+ // })
+ // }).catch(() => {
+ // })
},
confirmResetPwd(row) {
this.$prompt('请输入密码,鉴别用户', '提示', {
@@ -752,25 +753,43 @@ export default {
confirmButtonText: '确定',
cancelButtonText: '取消',
closeOnClickModal: false,
- inputPattern: /^.{8,16}$/,
- inputErrorMessage: '用户密码长度必须介于 8 和 16 之间',
inputValidator: (value) => {
- // 调用 validateNewPassword 校验
- const errorMessage = function (error) {
+ // 1️⃣ 空值校验
+ if (!value || value.trim() === '') {
+ return '密码不能为空'
+ }
+
+ // 2️⃣ 不能包含空格(任意位置)
+ if (/\s/.test(value)) {
+ return '密码不能包含空格'
+ }
+
+ // 3️⃣ 长度校验
+ if (value.length < 8 || value.length > 16) {
+ return '用户密码长度必须介于 8 和 16 之间'
+ }
+
+ // 4️⃣ 调用原有校验
+ let errorMsg = ''
+ validateNewPassword(null, value, (error) => {
if (error) {
- return error.message;
- } else {
- console.log('验证通过');
+ errorMsg = error.message
}
- };
- validateNewPassword(null, value, errorMessage);
+ })
+
+ if (errorMsg) {
+ return errorMsg
+ }
+
+ return true
}
- }).then(({value}) => {
- resetUserPwd(row.userId, value).then(response => {
+ })
+ .then(({ value }) => {
+ resetUserPwd(row.userId, value).then(() => {
this.$modal.msgSuccess('修改成功,新密码是:' + value)
})
- }).catch(() => {
})
+ .catch(() => {})
},
/** 分配角色操作 */
handleAuthRole: function (row) {