Files
FT541-WMS/RuoYi-App-master/pages/setting.vue

229 lines
4.8 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="container">
<view class="form-card">
<uni-forms>
<uni-forms-item label="IP:">
<uni-easyinput v-model="settingformData.ip" placeholder="请输入IP地址" />
</uni-forms-item>
<uni-forms-item label="端口:">
<uni-easyinput v-model="settingformData.port" placeholder="请输入端口号" />
</uni-forms-item>
</uni-forms>
<button class="submit-button" @click="handleSubmit">保存设置</button>
<view class="divider"></view>
<!-- <view class="language-section">
<text class="section-title">语言设置</text>
<language-switcher></language-switcher>
</view> -->
</view>
</view>
</template>
<script>
import LanguageSwitcher from '@/components/language-switcher/language-switcher.vue'
export default {
components: {
LanguageSwitcher
},
data() {
return {
settingformData: {
ip: '',
port: ''
}
}
},
created() {
// 从本地存储获取已保存的设置
const savedSettings = uni.getStorageSync('serverSettings')
if (savedSettings) {
const settings = JSON.parse(savedSettings)
this.settingformData.ip = settings.ip
this.settingformData.port = settings.port
}
},
methods: {
// 验证IP地址格式
validateIP(ip) {
const ipRegex = /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
return ipRegex.test(ip)
},
// 验证端口号格式
validatePort(port) {
const portNumber = parseInt(port)
return portNumber > 0 && portNumber <= 65535
},
handleSubmit() {
// 验证IP地址
if (!this.settingformData.ip) {
uni.showToast({
title: '请输入IP地址',
icon: 'none'
})
return
}
if (!this.validateIP(this.settingformData.ip)) {
uni.showToast({
title: '请输入正确的IP地址格式',
icon: 'none'
})
return
}
// 验证端口号
if (!this.settingformData.port) {
uni.showToast({
title: '请输入端口号',
icon: 'none'
})
return
}
if (!this.validatePort(this.settingformData.port)) {
uni.showToast({
title: '请输入正确的端口号(1-65535)',
icon: 'none'
})
return
}
// 保存设置到本地存储并更新baseUrl
try {
uni.setStorageSync('serverSettings', JSON.stringify(this.settingformData))
// 更新全局配置中的baseUrl
// config.baseUrl = `http://${this.settingformData.ip}:${this.settingformData.port}`
// // 更新App实例中的配置
// getApp().globalData.config = config
// console.log("11111",config.baseUrl)
uni.showToast({
title: '设置已保存',
icon: 'success',
complete: () => {
// 延迟跳转,确保Toast显示完成
setTimeout(() => {
uni.reLaunch({
url: '/pages/login'
})
}, 1500)
}
})
} catch (e) {
console.error('保存设置失败:', e)
uni.showToast({
title: '保存设置失败',
icon: 'none'
})
}
}
}
}
</script>
<style lang="scss" scoped>
.container {
padding: 30rpx;
background: linear-gradient(to bottom, #f8f9fa, #e9ecef);
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
}
.form-card {
background-color: #fff;
border-radius: 20rpx;
padding: 40rpx 30rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.1);
transform: translateY(0);
transition: transform 0.3s ease;
width: 90%;
max-width: 600rpx;
margin: 0 auto;
&:active {
transform: translateY(2rpx);
}
}
:deep(.uni-forms-item) {
padding-bottom: 40rpx;
.uni-forms-item__label {
font-size: 30rpx;
color: #2c3e50;
font-weight: 600;
white-space: nowrap;
}
.uni-easyinput__content {
background-color: #f8f9fa;
border-radius: 12rpx;
height: 88rpx;
padding: 0 30rpx;
border: 2rpx solid #e9ecef;
transition: all 0.3s ease;
&:focus-within {
border-color: #3B7FFF;
box-shadow: 0 0 0 2rpx rgba(59, 127, 255, 0.1);
}
}
}
.submit-button {
margin-top: 20rpx;
width: 100%;
background: linear-gradient(135deg, #3B7FFF, #2563eb);
color: #fff;
height: 88rpx;
line-height: 88rpx;
font-size: 32rpx;
font-weight: 600;
border-radius: 44rpx;
box-shadow: 0 4rpx 12rpx rgba(37, 99, 235, 0.2);
transition: all 0.3s ease;
&:active {
transform: translateY(2rpx);
box-shadow: 0 2rpx 8rpx rgba(37, 99, 235, 0.15);
}
}
.divider {
margin: 30rpx 0;
height: 2rpx;
background-color: #e9ecef;
width: 100%;
}
.language-section {
margin-top: 10rpx;
}
.section-title {
font-size: 30rpx;
color: #2c3e50;
font-weight: 600;
display: block;
margin-bottom: 20rpx;
}
:deep(.language-switcher) {
padding: 0;
}
:deep(.picker-box) {
background-color: #f8f9fa;
border-radius: 12rpx;
border: 2rpx solid #e9ecef;
transition: all 0.3s ease;
&:focus-within {
border-color: #3B7FFF;
box-shadow: 0 0 0 2rpx rgba(59, 127, 255, 0.1);
}
}
</style>