Files
zhxg_xsbdV1.0/pages/size/size.vue

216 lines
4.7 KiB
Vue
Raw Normal View History

2025-07-16 17:44:45 +08:00
<template>
<view class="size">
<text class="title">基本信息</text>
<view class="inputList">
<view class="oneList">
身高(厘米)<input type="number" v-model="height" placeholder="必填,请输入">
</view>
<view class="oneList">
体重(千克)<input type="number" v-model="weight" placeholder="必填,请输入">
</view>
<view class="oneList"> 鞋码
<view class="uni-list">
<view class="uni-list-cell">
<view class="uni-list-cell-db">
<picker @change="bindPickerChange" v-model="index" :range="array" placeholder="必填,请输入">
<view class="uni-input">{{array[index]}}</view>
</picker>
</view>
</view>
</view>
</view>
</view>
<view class="notice">请如实登记个人信息,以便进行军训鞋服校服专业服等的发放
</view>
<view class="bottom-div">
<button @click="submitOwnSize" v-if="submitSizeban" > 修改</button>
<button @click="submitOwnSize" v-if="!submitSizeban"> 提交</button>
</view>
<u-toast ref="uToast"></u-toast>
<zero-loading v-if="loading"></zero-loading>
<FloatBall />
</view>
</template>
<script>
import {
getOwnSize,
submitOwnSize
} from "@/api/sizeApi.js";
import {
isEmpty
} from "@/api/helpFunc.js";
import FloatBall from "@/pages/compoents/FloatBall.vue";
export default {
components: {
FloatBall
},
data() {
return {
index: 0,
array: ['30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44',
'45', '46', '47', '48', '49'
],
height: null,
weight: null,
loading: false,
submitSizeban: false //尺码提交按钮禁用
}
},
async onLoad() {
this.loading = true
await this.getOwnSize();
this.loading = false
},
methods: {
toGo() {
uni.redirectTo({
url: "/pages/newindex/newindex" // 跳转至修改密码页面路径
});
},
async submitOwnSize() {
if(this.height<0||this.height>300||this.weight<0||this.weight>300||this.array[this.index]>60||this.array[this.index]<0){
this.$refs.uToast.show({
type: "error",
message: "数据填写不正确",
duration: 1500,
});
return;
}
let sdata = {
height: this.height,
weight: this.weight,
shoes: this.array[this.index]
};
if (isEmpty(sdata.height)) {
this.$refs.uToast.show({
type: "error",
message: "请填写身高",
duration: 1500,
});
return;
}
if (isEmpty(sdata.weight)) {
this.$refs.uToast.show({
type: "error",
message: "请填写体重",
duration: 1500,
});
return;
}
if (isEmpty(sdata.shoes)) {
this.$refs.uToast.show({
type: "error",
message: "请填写鞋码",
duration: 1500,
});
return;
}
this.loading = true;
let res = await submitOwnSize(sdata);
this.loading = false;
if (res.code == 200) {
this.$refs.uToast.show({
type: "success",
message: res.msg,
duration: 1500,
});
uni.redirectTo({
url: "/pages/newindex/newindex"
});
this.submitSizeban=false;
} else {
this.$refs.uToast.show({
type: "error",
message: res.msg,
duration: 1500,
});
}
},
async getOwnSize() {
let res = await getOwnSize();
if (res.code == 200) {
if (!isEmpty(res.data)) {
let data = {
...res.data
};
this.height = data.height;
this.weight = data.weight;
for (let i = 0; i < this.array.length; i++) {
if (this.array[i] == data.shoes) {
this.index = i;
}
}
console.log(res); //进入页面打印获取到的信息
if (res.data.status == "0") { //禁用尺码提交按钮
this.submitSizeban = true
}
}
}
},
bindPickerChange: function(e) {
console.log('picker发送选择改变携带值为', e.detail.value)
this.index = e.detail.value
},
clearPicker() {
this.index = 0; // 重置选择器选择内容
}
},
onUnload() {
this.clearPicker(); // 在页面卸载前重置选择器选择内容
}
}
</script>
<style lang="scss">
.title {
margin-left: 40rpx;
font-weight: bold;
}
.inputList {
margin: 20rpx auto;
width: 90%;
}
.oneList {
display: flex;
justify-content: space-between;
align-items: center;
width: 95%;
height: 80rpx;
border-bottom: 1px solid #DDDDDD;
input {
width: 25%;
text-align: right;
}
}
.notice {
width: 90%;
margin-left: 40rpx;
font-size: 28rpx;
color: #969699;
}
button {
width: 80%;
position: fixed;
bottom: 100rpx;
margin-left: 50rpx;
border-radius: 50rpx;
background-color: #59a1fe;
color: white;
}
.bottom-div {
margin-left: 29rpx;
}
</style>