Compare commits
2 Commits
9f20ebcec6
...
b03b8ab6fc
| Author | SHA1 | Date | |
|---|---|---|---|
| b03b8ab6fc | |||
| d05cfe8c30 |
@@ -18,6 +18,23 @@ export function addStudent(data) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 根据关联表id查看详情
|
||||||
|
export function getStudentDetail(id) {
|
||||||
|
return request({
|
||||||
|
url: `/dormitory/srs-dormitory-student/${id}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改学生宿舍关联
|
||||||
|
export function updateStudent(data) {
|
||||||
|
return request({
|
||||||
|
url: '/dormitory/srs-dormitory-student/update',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 获取校区
|
// 获取校区
|
||||||
export function listAllCampus() {
|
export function listAllCampus() {
|
||||||
return request({
|
return request({
|
||||||
|
|||||||
48
api/task.js
48
api/task.js
@@ -1,33 +1,33 @@
|
|||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
|
||||||
export function myProcess(data){
|
export function myProcess(params){
|
||||||
return request({
|
return request({
|
||||||
'url': '/flowable/task/myProcess',
|
url: '/flowable/task/myProcess',
|
||||||
'method': 'get',
|
method: 'get',
|
||||||
data
|
params
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
export function todoList(data){
|
export function todoList(params){
|
||||||
return request({
|
return request({
|
||||||
'url': '/flowable/task/todoList',
|
url: '/flowable/task/todoList',
|
||||||
'method': 'get',
|
method: 'get',
|
||||||
data
|
params
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
export function finishedList(data){
|
export function finishedList(params){
|
||||||
return request({
|
return request({
|
||||||
'url': '/flowable/task/finishedList',
|
url: '/flowable/task/finishedList',
|
||||||
'method': 'get',
|
method: 'get',
|
||||||
data
|
params
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function flowRecord(data){
|
export function flowRecord(params){
|
||||||
return request({
|
return request({
|
||||||
'url': '/flowable/task/flowRecord',
|
url: '/flowable/task/flowRecord',
|
||||||
'method': 'get',
|
method: 'get',
|
||||||
data
|
params
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
export function complete(data){
|
export function complete(data){
|
||||||
return request({
|
return request({
|
||||||
|
|||||||
12
config.js
12
config.js
@@ -1,8 +1,12 @@
|
|||||||
// 应用全局配置
|
// 应用全局配置
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
// 统一通过本机 Nginx 反向代理访问后端
|
||||||
|
// 若在同一台机器调试:使用 localhost:8066
|
||||||
|
// 若手机在同一局域网:替换为本机局域网 IP,例如 172.16.96.111:8066
|
||||||
|
// 页面在 https://zhxg.gxsdxy.cn 下访问,接口同域同协议以避免 CORS
|
||||||
// baseUrl: 'https://zhxg.gxsdxy.cn/prod_api',
|
// baseUrl: 'https://zhxg.gxsdxy.cn/prod_api',
|
||||||
// baseUrl: 'http://172.16.96.111:8085',
|
// baseUrl: 'https://zhxg.gxsdxy.cn/prod_api',
|
||||||
// baseUrl: 'http://192.168.211.22:8085',
|
// 若本地/内网以 HTTP 访问页面,可改为:
|
||||||
baseUrl: 'http://localhost:8085',
|
baseUrl: 'http://localhost:8085',
|
||||||
// 应用信息
|
// 应用信息
|
||||||
appInfo: {
|
appInfo: {
|
||||||
@@ -28,7 +32,7 @@ module.exports = {
|
|||||||
/**
|
/**
|
||||||
* 开启cas
|
* 开启cas
|
||||||
*/
|
*/
|
||||||
casEnable: false,
|
casEnable: true,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单点登录url
|
* 单点登录url
|
||||||
@@ -38,5 +42,5 @@ module.exports = {
|
|||||||
/**
|
/**
|
||||||
* 单点登出url
|
* 单点登出url
|
||||||
*/
|
*/
|
||||||
caslogoutUrl: 'https://rsso.gxsdxy.cn/logout?service=http://zhxg.gxsdxy.cn/prod_api_test/getinfo',
|
caslogoutUrl: 'http://rsso.gxsdxy.cn/logout?service=http://zhxg.gxsdxy.cn/prod_api_test/getinfo',
|
||||||
}
|
}
|
||||||
@@ -371,6 +371,7 @@
|
|||||||
getRtStuQuitSchoolByProcInsId(procInsId) {
|
getRtStuQuitSchoolByProcInsId(procInsId) {
|
||||||
getRtStuQuitSchoolByProcInsId(procInsId).then((res) => {
|
getRtStuQuitSchoolByProcInsId(procInsId).then((res) => {
|
||||||
this.formData = res.data;
|
this.formData = res.data;
|
||||||
|
console.log(this.formData)
|
||||||
this.get_penalty_type(this.formData.quitType);
|
this.get_penalty_type(this.formData.quitType);
|
||||||
this.get_category(this.formData.quitCategory);
|
this.get_category(this.formData.quitCategory);
|
||||||
if (this.tag == 1) {
|
if (this.tag == 1) {
|
||||||
@@ -422,9 +423,9 @@
|
|||||||
const pages = getCurrentPages();
|
const pages = getCurrentPages();
|
||||||
if (pages && pages.length > 0) {
|
if (pages && pages.length > 0) {
|
||||||
const prevPage = pages[pages.length - 2] || pages[pages.length - 1];
|
const prevPage = pages[pages.length - 2] || pages[pages.length - 1];
|
||||||
if (prevPage && typeof prevPage.handleChange === 'function') {
|
if (prevPage && typeof prevPage.handleChange === 'function') {
|
||||||
prevPage.handleChange(this.tag || 1);
|
prevPage.handleChange(2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -495,18 +496,18 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
uni.hideLoading();
|
uni.hideLoading();
|
||||||
uni.navigateBack({
|
uni.navigateBack({
|
||||||
success: () => {
|
success: () => {
|
||||||
const pages = getCurrentPages();
|
const pages = getCurrentPages();
|
||||||
if (pages && pages.length > 0) {
|
if (pages.length > 0) {
|
||||||
const prevPage = pages[pages.length - 2] || pages[pages.length - 1];
|
const prevPage = pages[pages.length - 2]
|
||||||
if (prevPage && typeof prevPage.handleChange === 'function') {
|
if (prevPage && typeof prevPage.getList === 'function') {
|
||||||
prevPage.handleChange(this.tag || 1);
|
prevPage.handleChange(2);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
rejectDialogConfirm() {
|
rejectDialogConfirm() {
|
||||||
@@ -528,10 +529,10 @@
|
|||||||
const pages = getCurrentPages();
|
const pages = getCurrentPages();
|
||||||
if (pages && pages.length > 0) {
|
if (pages && pages.length > 0) {
|
||||||
const prevPage = pages[pages.length - 2] || pages[pages.length - 1];
|
const prevPage = pages[pages.length - 2] || pages[pages.length - 1];
|
||||||
if (prevPage && typeof prevPage.handleChange === 'function') {
|
if (prevPage && typeof prevPage.handleChange === 'function') {
|
||||||
prevPage.handleChange(this.tag || 1);
|
prevPage.handleChange(2);
|
||||||
console.log('刷新任务数据');
|
console.log('刷新已办任务数据');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -8,6 +8,14 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="content" v-if="processes.length!==0">
|
<view class="content" v-if="processes.length!==0">
|
||||||
|
<view class="search-bar">
|
||||||
|
<input class="input" placeholder="姓名" v-model="searchName" @confirm="doSearch" />
|
||||||
|
<picker mode="date" :value="searchDate" @change="onDateChange">
|
||||||
|
<view class="picker-text">{{ searchDate || '时间' }}</view>
|
||||||
|
</picker>
|
||||||
|
<button class="primary" @tap="doSearch">搜索</button>
|
||||||
|
<button class="reset" @tap="resetSearch">重置</button>
|
||||||
|
</view>
|
||||||
<view class="list">
|
<view class="list">
|
||||||
<view class="item" v-for="(process,index) in processes" :key="index">
|
<view class="item" v-for="(process,index) in processes" :key="index">
|
||||||
<view class="top">
|
<view class="top">
|
||||||
@@ -75,7 +83,9 @@
|
|||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
loading: false, // 加载状态标志
|
loading: false, // 加载状态标志
|
||||||
topLoading: true,
|
topLoading: true,
|
||||||
role: uni.getStorageSync("roles")
|
role: uni.getStorageSync("roles"),
|
||||||
|
searchName: '',
|
||||||
|
searchDate: ''
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
onLoad(option) {
|
onLoad(option) {
|
||||||
@@ -130,12 +140,42 @@
|
|||||||
this.topLoading = true;
|
this.topLoading = true;
|
||||||
this.getList();
|
this.getList();
|
||||||
},
|
},
|
||||||
|
doSearch() {
|
||||||
|
this.currentPage = 1;
|
||||||
|
this.processes = [];
|
||||||
|
this.topLoading = true;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
resetSearch() {
|
||||||
|
this.searchName = '';
|
||||||
|
this.searchDate = '';
|
||||||
|
this.currentPage = 1;
|
||||||
|
this.processes = [];
|
||||||
|
this.topLoading = true;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
onDateChange(e) {
|
||||||
|
this.searchDate = e.detail.value;
|
||||||
|
},
|
||||||
getList() {
|
getList() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
let sdata = {
|
let sdata = {
|
||||||
pageNum: this.currentPage,
|
pageNum: this.currentPage,
|
||||||
pageSize: 10
|
pageSize: 10,
|
||||||
};
|
};
|
||||||
|
if (this.searchName) {
|
||||||
|
sdata.startUserName = this.searchName;
|
||||||
|
}
|
||||||
|
if (this.searchDate) {
|
||||||
|
if (this.currentTab === 2) {
|
||||||
|
// 已办任务:PC端使用 startTime/endTime;时间对应“提交时间”
|
||||||
|
sdata.startTime = this.searchDate;
|
||||||
|
sdata.endTime = this.searchDate;
|
||||||
|
} else {
|
||||||
|
// 我发起的、待办任务:PC端使用 deployTime;时间对应“提交时间”
|
||||||
|
sdata.deployTime = this.searchDate;
|
||||||
|
}
|
||||||
|
}
|
||||||
console.log(this.processes);
|
console.log(this.processes);
|
||||||
if (this.currentTab == 0) {
|
if (this.currentTab == 0) {
|
||||||
myProcess(sdata).then(res => {
|
myProcess(sdata).then(res => {
|
||||||
@@ -320,6 +360,41 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.search-bar {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 8px 10px;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-bottom: 1px solid #EDEDED;
|
||||||
|
position: sticky;
|
||||||
|
top: 58px;
|
||||||
|
z-index: 998;
|
||||||
|
.input {
|
||||||
|
flex: 1;
|
||||||
|
border: 1px solid #EDEDED;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 6px 8px;
|
||||||
|
height: 36px;
|
||||||
|
line-height: 36px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.picker-text {
|
||||||
|
border: 1px solid #EDEDED;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 6px 8px;
|
||||||
|
color: #555555;
|
||||||
|
}
|
||||||
|
button.primary {
|
||||||
|
border: 1px solid #007aff;
|
||||||
|
color: #007aff;
|
||||||
|
}
|
||||||
|
button.reset {
|
||||||
|
border: 1px solid #909399;
|
||||||
|
color: #909399;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.empty {
|
.empty {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -337,6 +412,7 @@
|
|||||||
.content {
|
.content {
|
||||||
padding-top: 58px;
|
padding-top: 58px;
|
||||||
|
|
||||||
|
|
||||||
.list {
|
.list {
|
||||||
.item {
|
.item {
|
||||||
padding: 20px 10px;
|
padding: 20px 10px;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -418,12 +418,12 @@
|
|||||||
const pages = getCurrentPages();
|
const pages = getCurrentPages();
|
||||||
if (pages.length > 0) {
|
if (pages.length > 0) {
|
||||||
const prevPage = pages[pages.length - 2] || pages[pages.length - 1]
|
const prevPage = pages[pages.length - 2] || pages[pages.length - 1]
|
||||||
if (prevPage && typeof prevPage.handleChange === 'function') {
|
if (prevPage && typeof prevPage.handleChange === 'function') {
|
||||||
prevPage.handleChange(2);
|
prevPage.handleChange(1);
|
||||||
console.log('刷新已办任务数据');
|
console.log('切回待办任务');
|
||||||
} else if (prevPage && typeof prevPage.getLeaveList === 'function') {
|
} else if (prevPage && typeof prevPage.getLeaveList === 'function') {
|
||||||
prevPage.getLeaveList();
|
prevPage.getLeaveList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -623,12 +623,12 @@
|
|||||||
const pages = getCurrentPages();
|
const pages = getCurrentPages();
|
||||||
if (pages.length > 0) {
|
if (pages.length > 0) {
|
||||||
const prevPage = pages[pages.length - 2] || pages[pages.length - 1]
|
const prevPage = pages[pages.length - 2] || pages[pages.length - 1]
|
||||||
if (prevPage && typeof prevPage.handleChange === 'function') {
|
if (prevPage && typeof prevPage.handleChange === 'function') {
|
||||||
prevPage.handleChange(2);
|
prevPage.handleChange(1);
|
||||||
} else if (prevPage && typeof prevPage.getLeaveList ===
|
} else if (prevPage && typeof prevPage.getLeaveList ===
|
||||||
'function') {
|
'function') {
|
||||||
prevPage.getLeaveList();
|
prevPage.getLeaveList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="form-container">
|
<view class="form-container">
|
||||||
<view class="form-title">2025-2026学年学生宿舍入住收集表</view>
|
<view class="form-title">学生宿舍入住收集表</view>
|
||||||
<view class="form-desc">涉及住宿费核算,请同学们按照实际入住情况填写。</view>
|
<view class="form-desc">涉及住宿费核算,请同学们按照实际入住情况填写。</view>
|
||||||
|
|
||||||
<!-- 1. 校区 -->
|
<!-- 1. 校区 -->
|
||||||
@@ -81,6 +81,16 @@
|
|||||||
</picker>
|
</picker>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<view class="form-item">
|
||||||
|
<view class="item-label">中国农业银行卡号</view>
|
||||||
|
<input class="input" v-model="form.xhk" placeholder="请输入中国农业银行卡号" />
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="form-item">
|
||||||
|
<view class="item-label">开户行</view>
|
||||||
|
<input class="input" v-model="form.bankAddr" placeholder="请输入开户行" />
|
||||||
|
</view>
|
||||||
|
|
||||||
<!-- 9. 本人证件照 -->
|
<!-- 9. 本人证件照 -->
|
||||||
<view class="form-item">
|
<view class="form-item">
|
||||||
<view class="item-label">
|
<view class="item-label">
|
||||||
@@ -103,408 +113,530 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {
|
import {
|
||||||
listAllCampus,
|
addStudent,
|
||||||
listParkByCampus,
|
listAllCampus,
|
||||||
listBuildingByPark,
|
listAllRoomByFloor,
|
||||||
listFloorByBuilding,
|
listBuildingByPark,
|
||||||
listAllRoomByFloor,
|
listFloorByBuilding,
|
||||||
addStudent,
|
listParkByCampus,
|
||||||
submitOwnInfo as submitExtraInfo
|
submitOwnInfo as submitExtraInfo,
|
||||||
} from "@/api/dms/studentDormInfo/index.js"
|
getStudentDetail,
|
||||||
import {
|
updateStudent
|
||||||
getUserProfile
|
} from "@/api/dms/studentDormInfo/index.js";
|
||||||
} from '@/api/system/user'
|
import { alipayVali } from "@/api/helpFunc/bank.js";
|
||||||
import {
|
import {
|
||||||
previewImg
|
getUserProfile
|
||||||
} from "@/utils/uploadImg.js"
|
} from '@/api/system/user';
|
||||||
import {
|
import uploadFile from "@/plugins/upload.js";
|
||||||
checkPic
|
import config from '@/config'
|
||||||
} from "@/utils/checkPic.js"
|
import {
|
||||||
import uploadFile from "@/plugins/upload.js";
|
checkPic
|
||||||
export default {
|
} from "@/utils/checkPic.js";
|
||||||
data() {
|
import request from "@/utils/request";
|
||||||
return {
|
export default {
|
||||||
user: [],
|
data() {
|
||||||
form: {
|
return {
|
||||||
campusName: '',
|
user: [],
|
||||||
parkName: '',
|
form: {
|
||||||
buildingName: '',
|
campusName: '',
|
||||||
floorName: '',
|
parkName: '',
|
||||||
roomNo: '',
|
buildingName: '',
|
||||||
stuNo: '',
|
floorName: '',
|
||||||
isDormitoryHead: '',
|
roomNo: '',
|
||||||
isDormHead: '',
|
stuNo: '',
|
||||||
checkinTime: '',
|
isDormitoryHead: '',
|
||||||
photo: '',
|
isDormHead: '',
|
||||||
teacherName: '',
|
checkinTime: '',
|
||||||
className: '',
|
photo: '',
|
||||||
deptName: '',
|
xhk: '',
|
||||||
stuName: '',
|
bankAddr: '',
|
||||||
displayText: '',
|
teacherName: '',
|
||||||
isInStudentsleep: '是',
|
className: '',
|
||||||
photoData: ''
|
deptName: '',
|
||||||
},
|
stuName: '',
|
||||||
// 校区选项
|
displayText: '',
|
||||||
campusOptions: [],
|
isInStudentsleep: '是',
|
||||||
// 园区选项(按校区联动)
|
photoData: ''
|
||||||
parkOptions: [],
|
},
|
||||||
// 楼栋选项(按园区联动)
|
// 校区选项
|
||||||
buildingOptions: [],
|
campusOptions: [],
|
||||||
// 楼层选项(下拉框)
|
// 园区选项(按校区联动)
|
||||||
floorOptions: [],
|
parkOptions: [],
|
||||||
// 宿舍号选项(下拉框)
|
// 楼栋选项(按园区联动)
|
||||||
dormOptions: [],
|
buildingOptions: [],
|
||||||
// 宿舍长选项
|
// 楼层选项(下拉框)
|
||||||
dormHeadOptions: ['否', '是'],
|
floorOptions: [],
|
||||||
// 当前选中项的id
|
// 宿舍号选项(下拉框)
|
||||||
selectedCampus: null, // 选中的校区({id, name})
|
dormOptions: [],
|
||||||
selectedPark: null, // 选中的园区
|
// 宿舍长选项
|
||||||
selectedBuilding: null, // 选中的楼栋
|
dormHeadOptions: ['否', '是'],
|
||||||
selectedFloor: null, // 选中的楼层
|
// 当前选中项的id
|
||||||
selectedDorm: null, //选中的宿舍
|
selectedCampus: null, // 选中的校区({id, name})
|
||||||
};
|
selectedPark: null, // 选中的园区
|
||||||
|
selectedBuilding: null, // 选中的楼栋
|
||||||
|
selectedFloor: null, // 选中的楼层
|
||||||
|
selectedDorm: null, //选中的宿舍
|
||||||
|
mode: 'add',
|
||||||
|
editId: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onLoad(options) {
|
||||||
|
this.getUserProfile()
|
||||||
|
this.listAllCampus()
|
||||||
|
if (options && options.mode === 'edit' && options.id) {
|
||||||
|
this.mode = 'edit'
|
||||||
|
this.editId = Number(options.id)
|
||||||
|
this.initEdit(this.editId)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 获取用户信息
|
||||||
|
async getUserProfile() {
|
||||||
|
try {
|
||||||
|
const res = await getUserProfile()
|
||||||
|
this.user = res
|
||||||
|
this.form.stuNo = this.user.data.userName
|
||||||
|
console.log('当前用户信息:', res)
|
||||||
|
} catch (err) {
|
||||||
|
console.error('获取用户信息失败:', err)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onLoad() {
|
// 获取校区数据
|
||||||
this.getUserProfile()
|
async listAllCampus() {
|
||||||
this.listAllCampus()
|
let res = await listAllCampus()
|
||||||
|
if (res.code == 200) {
|
||||||
|
this.campusOptions = [...res.data]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 编辑模式初始化
|
||||||
|
async initEdit(id) {
|
||||||
|
try {
|
||||||
|
const res = await getStudentDetail(id)
|
||||||
|
if (res.code !== 200) {
|
||||||
|
uni.showToast({ title: '加载详情失败', icon: 'none' })
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const d = res.data
|
||||||
|
this.form.stuNo = d.stuNo || this.form.stuNo
|
||||||
|
this.form.isDormHead = d.isDormitoryHead === 1 ? '是' : '否'
|
||||||
|
this.form.checkinTime = d.checkinTime ? String(d.checkinTime).slice(0, 10) : ''
|
||||||
|
this.form.isInStudentsleep = d.isInStudentsleep || this.form.isInStudentsleep
|
||||||
|
|
||||||
|
const own = await request({ url: '/system/student/getOwnInfo', method: 'get' })
|
||||||
|
if (own && own.data) {
|
||||||
|
this.form.xhk = own.data.xhk || ''
|
||||||
|
this.form.bankAddr = own.data.bankAddr || ''
|
||||||
|
}
|
||||||
|
|
||||||
|
const extra = await request({ url: '/comprehensive/extraInfo/getOwnInfo', method: 'get' })
|
||||||
|
if (extra && extra.data) {
|
||||||
|
this.form.photo = extra.data.whitePhoto || ''
|
||||||
|
this.form.photoData = extra.data.whitePhoto ? (config.baseUrl + extra.data.whitePhoto) : ''
|
||||||
|
}
|
||||||
|
|
||||||
|
const campusName = d.campusName
|
||||||
|
const parkName = d.parkName
|
||||||
|
const buildingName = d.buildingName
|
||||||
|
const floorName = d.floorName
|
||||||
|
const roomNo = d.roomNo
|
||||||
|
|
||||||
|
const campus = this.campusOptions.find(c => c.name === campusName)
|
||||||
|
if (campus) {
|
||||||
|
this.form.campusName = campus.name
|
||||||
|
this.selectedCampus = campus.id
|
||||||
|
await this.listParkByCampus(this.selectedCampus)
|
||||||
|
const park = this.parkOptions.find(p => p.name === parkName)
|
||||||
|
if (park) {
|
||||||
|
this.form.parkName = park.name
|
||||||
|
this.selectedPark = park.id
|
||||||
|
await this.listBuildingByPark(this.selectedPark)
|
||||||
|
const building = this.buildingOptions.find(b => b.name === buildingName)
|
||||||
|
if (building) {
|
||||||
|
this.form.buildingName = building.name
|
||||||
|
this.selectedBuilding = building.id
|
||||||
|
await this.listFloorByBuilding(this.selectedBuilding)
|
||||||
|
let floor = this.floorOptions.find(f => String(f.floor) === String(floorName))
|
||||||
|
if (!floor) {
|
||||||
|
for (const f of this.floorOptions) {
|
||||||
|
await this.listAllRoomByFloor(f.id)
|
||||||
|
const dormTry = this.dormOptions.find(r => r.roomNo === roomNo)
|
||||||
|
if (dormTry) {
|
||||||
|
floor = f
|
||||||
|
this.selectedDorm = dormTry.id
|
||||||
|
this.form.roomNo = dormTry.roomNo
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (floor) {
|
||||||
|
this.form.floorName = floor.floor
|
||||||
|
this.selectedFloor = floor.id
|
||||||
|
if (!this.selectedDorm) {
|
||||||
|
await this.listAllRoomByFloor(this.selectedFloor)
|
||||||
|
const dorm = this.dormOptions.find(r => r.roomNo === roomNo)
|
||||||
|
if (dorm) {
|
||||||
|
this.form.roomNo = dorm.roomNo
|
||||||
|
this.selectedDorm = dorm.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 根据校区id获取园区
|
||||||
|
async listParkByCampus(id) {
|
||||||
|
let res = await listParkByCampus(id)
|
||||||
|
if (res.code == 200) {
|
||||||
|
this.parkOptions = [...res.data]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
// 根据园区id获取楼栋
|
||||||
// 获取用户信息
|
async listBuildingByPark(id) {
|
||||||
async getUserProfile() {
|
let res = await listBuildingByPark(id)
|
||||||
try {
|
if (res.code == 200) {
|
||||||
const res = await getUserProfile()
|
this.buildingOptions = [...res.data]
|
||||||
this.user = res
|
}
|
||||||
this.form.stuNo = this.user.data.userName
|
},
|
||||||
console.log('当前用户信息:', res)
|
// 根据楼栋id获取楼层
|
||||||
} catch (err) {
|
async listFloorByBuilding(id) {
|
||||||
console.error('获取用户信息失败:', err)
|
let res = await listFloorByBuilding(id)
|
||||||
}
|
if (res.code == 200) {
|
||||||
},
|
this.floorOptions = [...res.data]
|
||||||
// 获取校区数据
|
}
|
||||||
async listAllCampus() {
|
},
|
||||||
let res = await listAllCampus()
|
// 根据楼层id获取宿舍号
|
||||||
if (res.code == 200) {
|
async listAllRoomByFloor(id) {
|
||||||
this.campusOptions = [...res.data]
|
let res = await listAllRoomByFloor(id)
|
||||||
}
|
if (res.code == 200) {
|
||||||
},
|
this.dormOptions = [...res.data]
|
||||||
// 根据校区id获取园区
|
// 遍历数据,为每个对象添加 displayText 属性
|
||||||
async listParkByCampus(id) {
|
this.dormOptions = res.data.map(v => ({
|
||||||
let res = await listParkByCampus(id)
|
...v, // 保留原对象所有属性
|
||||||
if (res.code == 200) {
|
// 新增拼接后的显示文本属性
|
||||||
this.parkOptions = [...res.data]
|
displayText: `${v.roomNo} -- ${v.gender} -- 床位 ${v.bedNum} -- 已住 ${v.occupancy}`,
|
||||||
}
|
isFull: v.occupancy >= v.bedNum // 新增:判断是否满人
|
||||||
},
|
}));
|
||||||
// 根据园区id获取楼栋
|
}
|
||||||
async listBuildingByPark(id) {
|
},
|
||||||
let res = await listBuildingByPark(id)
|
// 校区选择变化
|
||||||
if (res.code == 200) {
|
handleCampusChange(e) {
|
||||||
this.buildingOptions = [...res.data]
|
this.form.campusName = this.campusOptions[e.detail.value].name;
|
||||||
}
|
this.form.parkName = ''; // 重置园区
|
||||||
},
|
this.form.buildingName = ''; // 重置楼栋
|
||||||
// 根据楼栋id获取楼层
|
this.form.floorName = ''; // 重置楼层
|
||||||
async listFloorByBuilding(id) {
|
this.form.roomNo = ''; // 重置宿舍
|
||||||
let res = await listFloorByBuilding(id)
|
// 获取选中的校区id
|
||||||
if (res.code == 200) {
|
this.selectedCampus = this.campusOptions[e.detail.value].id;
|
||||||
this.floorOptions = [...res.data]
|
// 获取对应校区下面的园区
|
||||||
}
|
this.listParkByCampus(this.selectedCampus)
|
||||||
},
|
},
|
||||||
// 根据楼层id获取宿舍号
|
// 园区选择变化
|
||||||
async listAllRoomByFloor(id) {
|
handleParkChange(e) {
|
||||||
let res = await listAllRoomByFloor(id)
|
this.form.parkName = this.parkOptions[e.detail.value].name;
|
||||||
if (res.code == 200) {
|
this.form.buildingName = ''; // 重置楼栋
|
||||||
this.dormOptions = [...res.data]
|
this.form.floorName = ''; // 重置楼层
|
||||||
// 遍历数据,为每个对象添加 displayText 属性
|
this.form.roomNo = ''; // 重置宿舍
|
||||||
this.dormOptions = res.data.map(v => ({
|
// 获取选中的园区的id
|
||||||
...v, // 保留原对象所有属性
|
this.selectedPark = this.parkOptions[e.detail.value].id;
|
||||||
// 新增拼接后的显示文本属性
|
// 获取对应园区下面的楼栋
|
||||||
displayText: `${v.roomNo} -- ${v.gender} -- 床位 ${v.bedNum} -- 已住 ${v.occupancy}`,
|
this.listBuildingByPark(this.selectedPark)
|
||||||
isFull: v.occupancy >= v.bedNum // 新增:判断是否满人
|
},
|
||||||
}));
|
// 楼栋选择变化
|
||||||
}
|
handleBuildingChange(e) {
|
||||||
},
|
this.form.buildingName = this.buildingOptions[e.detail.value].name;
|
||||||
// 校区选择变化
|
this.form.floorName = ''; // 重置楼层
|
||||||
handleCampusChange(e) {
|
this.form.roomNo = ''; // 重置宿舍
|
||||||
this.form.campusName = this.campusOptions[e.detail.value].name;
|
// 获取选中的楼栋的id
|
||||||
this.form.parkName = ''; // 重置园区
|
this.selectedBuilding = this.buildingOptions[e.detail.value].id;
|
||||||
this.form.buildingName = ''; // 重置楼栋
|
// 获取选中的楼栋下面的楼层
|
||||||
this.form.floorName = ''; // 重置楼层
|
this.listFloorByBuilding(this.selectedBuilding)
|
||||||
this.form.roomNo = ''; // 重置宿舍
|
},
|
||||||
// 获取选中的校区id
|
// 楼层选择变化(下拉框)
|
||||||
this.selectedCampus = this.campusOptions[e.detail.value].id;
|
handleFloorChange(e) {
|
||||||
// 获取对应校区下面的园区
|
this.form.floorName = this.floorOptions[e.detail.value].floor;
|
||||||
this.listParkByCampus(this.selectedCampus)
|
this.form.roomNo = ''; // 重置宿舍
|
||||||
},
|
// 获取选中的楼层的id
|
||||||
// 园区选择变化
|
this.selectedFloor = this.floorOptions[e.detail.value].id;
|
||||||
handleParkChange(e) {
|
// 获取选中的楼层下面的宿舍号
|
||||||
this.form.parkName = this.parkOptions[e.detail.value].name;
|
this.listAllRoomByFloor(this.selectedFloor)
|
||||||
this.form.buildingName = ''; // 重置楼栋
|
},
|
||||||
this.form.floorName = ''; // 重置楼层
|
// 宿舍号选择变化(行拉框)
|
||||||
this.form.roomNo = ''; // 重置宿舍
|
handleDormChange(e) {
|
||||||
// 获取选中的园区的id
|
const index = e.detail.value;
|
||||||
this.selectedPark = this.parkOptions[e.detail.value].id;
|
const selectedDorm = this.dormOptions[index]; // 获取选中的宿舍对象
|
||||||
// 获取对应园区下面的楼栋
|
|
||||||
this.listBuildingByPark(this.selectedPark)
|
|
||||||
},
|
|
||||||
// 楼栋选择变化
|
|
||||||
handleBuildingChange(e) {
|
|
||||||
this.form.buildingName = this.buildingOptions[e.detail.value].name;
|
|
||||||
this.form.floorName = ''; // 重置楼层
|
|
||||||
this.form.roomNo = ''; // 重置宿舍
|
|
||||||
// 获取选中的楼栋的id
|
|
||||||
this.selectedBuilding = this.buildingOptions[e.detail.value].id;
|
|
||||||
// 获取选中的楼栋下面的楼层
|
|
||||||
this.listFloorByBuilding(this.selectedBuilding)
|
|
||||||
},
|
|
||||||
// 楼层选择变化(下拉框)
|
|
||||||
handleFloorChange(e) {
|
|
||||||
this.form.floorName = this.floorOptions[e.detail.value].floor;
|
|
||||||
this.form.roomNo = ''; // 重置宿舍
|
|
||||||
// 获取选中的楼层的id
|
|
||||||
this.selectedFloor = this.floorOptions[e.detail.value].id;
|
|
||||||
// 获取选中的楼层下面的宿舍号
|
|
||||||
this.listAllRoomByFloor(this.selectedFloor)
|
|
||||||
},
|
|
||||||
// 宿舍号选择变化(行拉框)
|
|
||||||
handleDormChange(e) {
|
|
||||||
const index = e.detail.value;
|
|
||||||
const selectedDorm = this.dormOptions[index]; // 获取选中的宿舍对象
|
|
||||||
|
|
||||||
// 判断是否满人
|
// 判断是否满人
|
||||||
if (selectedDorm.isFull) {
|
if (selectedDorm.isFull) {
|
||||||
// 满人时提示并重置选择
|
// 满人时提示并重置选择
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: `宿舍 ${selectedDorm.roomNo} 已住满,无法选择`,
|
title: `宿舍 ${selectedDorm.roomNo} 已住满,无法选择`,
|
||||||
icon: 'none',
|
icon: 'none',
|
||||||
duration: 2000
|
duration: 2000
|
||||||
});
|
|
||||||
// 重置宿舍选择(如果之前有选中值则保留,否则为空)
|
|
||||||
if (!this.form.roomNo) {
|
|
||||||
this.form.roomNo = '';
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 未满人时正常选中
|
|
||||||
this.form.roomNo = selectedDorm.roomNo; // 显示拼接文本
|
|
||||||
this.selectedDorm = selectedDorm.id; // 存储宿舍ID(用于提交)
|
|
||||||
},
|
|
||||||
// 宿舍长选择变化
|
|
||||||
handleDormHeadChange(e) {
|
|
||||||
this.form.isDormitoryHead = this.dormHeadOptions[e.detail.value] == '是' ? 1 : 0;
|
|
||||||
this.form.isDormHead = this.dormHeadOptions[e.detail.value]
|
|
||||||
},
|
|
||||||
// 入住时间选择变化
|
|
||||||
handleCheckinTimeChange(e) {
|
|
||||||
this.form.checkinTime = e.detail.value;
|
|
||||||
},
|
|
||||||
// 证件照上传
|
|
||||||
handleUpload() {
|
|
||||||
uni.chooseImage({
|
|
||||||
count: 3,
|
|
||||||
success: async (img) => {
|
|
||||||
let bool = await checkPic(img.tempFiles[0]);
|
|
||||||
if (bool) {
|
|
||||||
uploadFile('/common/upload', img.tempFilePaths[0]).then((res) => {
|
|
||||||
// if (this.form.photo !== "") {
|
|
||||||
// this.form.photo = this.form.photo + "," + JSON.parse(res)
|
|
||||||
// .fileName;
|
|
||||||
// } else {
|
|
||||||
// this.form.photo = JSON.parse(res).fileName;
|
|
||||||
// }
|
|
||||||
this.form.photoData = img.tempFilePaths[0];
|
|
||||||
this.form.photo = JSON.parse(res).fileName;
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
},
|
|
||||||
// 提交表单
|
|
||||||
async handleSubmit() {
|
|
||||||
console.log(this.form);
|
|
||||||
// 验证必填项
|
|
||||||
if (
|
|
||||||
!this.form.campusName || // 校区名称(字符串,空则false)
|
|
||||||
!this.form.parkName || // 园区名称(字符串,空则false)
|
|
||||||
!this.form.buildingName || // 楼栋名称(字符串,空则false)
|
|
||||||
(!this.form.floorName && this.form.floorName !== 0) || // 楼层(数值,排除0的误判)
|
|
||||||
(!this.form.roomNo && this.form.roomNo !== 0) || // 宿舍号(数值,排除0的误判)
|
|
||||||
!this.form.isDormHead || // 是否宿舍长(值为"是"/"否")
|
|
||||||
!this.form.checkinTime || // 入住时间(日期字符串,空则false)
|
|
||||||
!this.form.photo // 证件照(blob路径,空则false,若必填需加)
|
|
||||||
) {
|
|
||||||
uni.showToast({
|
|
||||||
title: '带*号的为必填项,请填写完整',
|
|
||||||
icon: 'none',
|
|
||||||
duration: 2000
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.form.dormitoryId = this.selectedDorm;
|
|
||||||
// 模拟提交
|
|
||||||
uni.showLoading({
|
|
||||||
title: '提交中...'
|
|
||||||
});
|
});
|
||||||
// 添加入住信息
|
// 重置宿舍选择(如果之前有选中值则保留,否则为空)
|
||||||
let res = await addStudent(this.form);
|
if (!this.form.roomNo) {
|
||||||
if (res.code == 200) {
|
this.form.roomNo = '';
|
||||||
uni.hideLoading();
|
}
|
||||||
uni.showToast({
|
return;
|
||||||
title: '提交成功',
|
}
|
||||||
icon: 'success'
|
|
||||||
});
|
// 未满人时正常选中
|
||||||
// 上次图片头像
|
this.form.roomNo = selectedDorm.roomNo; // 显示拼接文本
|
||||||
let data = submitExtraInfo({
|
this.selectedDorm = selectedDorm.id; // 存储宿舍ID(用于提交)
|
||||||
userId: this.user.data.userId,
|
},
|
||||||
whitePhoto: this.form.photo
|
// 宿舍长选择变化
|
||||||
})
|
handleDormHeadChange(e) {
|
||||||
// if (data.code == 200) {
|
this.form.isDormitoryHead = this.dormHeadOptions[e.detail.value] == '是' ? 1 : 0;
|
||||||
// console.log(data);
|
this.form.isDormHead = this.dormHeadOptions[e.detail.value]
|
||||||
// }
|
},
|
||||||
|
// 入住时间选择变化
|
||||||
setTimeout(() => {
|
handleCheckinTimeChange(e) {
|
||||||
// 重置表单
|
this.form.checkinTime = e.detail.value;
|
||||||
this.form = {
|
},
|
||||||
campusName: '',
|
// 证件照上传
|
||||||
parkName: '',
|
handleUpload() {
|
||||||
buildingName: '',
|
uni.chooseImage({
|
||||||
floorName: '',
|
count: 3,
|
||||||
roomNo: '',
|
success: async (img) => {
|
||||||
stuNo: '',
|
let bool = await checkPic(img.tempFiles[0]);
|
||||||
isDormitoryHead: '',
|
if (bool) {
|
||||||
checkinTime: '',
|
uploadFile('/common/upload', img.tempFilePaths[0]).then((res) => {
|
||||||
photo: ''
|
// if (this.form.photo !== "") {
|
||||||
};
|
// this.form.photo = this.form.photo + "," + JSON.parse(res)
|
||||||
uni.redirectTo({
|
// .fileName;
|
||||||
url: `/pages/dormitory/studentDormInfo/index`
|
// } else {
|
||||||
|
// this.form.photo = JSON.parse(res).fileName;
|
||||||
|
// }
|
||||||
|
this.form.photoData = img.tempFilePaths[0];
|
||||||
|
this.form.photo = JSON.parse(res).fileName;
|
||||||
})
|
})
|
||||||
}, 1000);
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
// 提交表单
|
||||||
|
async handleSubmit() {
|
||||||
|
console.log(this.form);
|
||||||
|
// 验证必填项
|
||||||
|
if (
|
||||||
|
!this.form.campusName || // 校区名称(字符串,空则false)
|
||||||
|
!this.form.parkName || // 园区名称(字符串,空则false)
|
||||||
|
!this.form.buildingName || // 楼栋名称(字符串,空则false)
|
||||||
|
(!this.form.floorName && this.form.floorName !== 0) || // 楼层(数值,排除0的误判)
|
||||||
|
(!this.form.roomNo && this.form.roomNo !== 0) || // 宿舍号(数值,排除0的误判)
|
||||||
|
!this.form.isDormHead || // 是否宿舍长(值为"是"/"否")
|
||||||
|
!this.form.checkinTime || // 入住时间(日期字符串,空则false)
|
||||||
|
!this.form.photo
|
||||||
|
) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '带*号的为必填项,请填写完整',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 2000
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.form.xhk) {
|
||||||
|
let cardRes = await alipayVali(this.form.xhk);
|
||||||
|
if (!cardRes || cardRes.validated == false) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '请输入正确的银行卡号',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (cardRes.bank != 'ABC') {
|
||||||
|
uni.showToast({
|
||||||
|
title: '请输入正确的中国农业银行银行卡号',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
this.form.dormitoryId = this.selectedDorm;
|
||||||
};
|
uni.showLoading({ title: '提交中...' });
|
||||||
|
let res;
|
||||||
|
if (this.mode === 'edit') {
|
||||||
|
const dto = {
|
||||||
|
id: this.editId,
|
||||||
|
dormitoryId: this.form.dormitoryId,
|
||||||
|
stuNo: this.form.stuNo,
|
||||||
|
isDormitoryHead: this.form.isDormHead === '是' ? 1 : 0,
|
||||||
|
checkinTime: this.form.checkinTime ? new Date(this.form.checkinTime) : null,
|
||||||
|
isInStudentsleep: this.form.isInStudentsleep || '是'
|
||||||
|
}
|
||||||
|
res = await updateStudent(dto)
|
||||||
|
} else {
|
||||||
|
res = await addStudent(this.form);
|
||||||
|
}
|
||||||
|
if (res.code == 200) {
|
||||||
|
// 上次图片头像
|
||||||
|
let data = submitExtraInfo({
|
||||||
|
userId: this.user.data.userId,
|
||||||
|
whitePhoto: this.form.photo
|
||||||
|
})
|
||||||
|
let own = await request({ url: '/system/student/getOwnInfo', method: 'get' });
|
||||||
|
let payload = {
|
||||||
|
phone: own.data.phone,
|
||||||
|
xhk: this.form.xhk ? this.form.xhk.replace(' ', '') : own.data.xhk,
|
||||||
|
idCard: own.data.idCard,
|
||||||
|
birthday: own.data.birthday,
|
||||||
|
bankAddr: this.form.bankAddr ? this.form.bankAddr : own.data.bankAddr
|
||||||
|
};
|
||||||
|
await request({ url: '/system/student/changeOwnInfo', method: 'POST', data: payload });
|
||||||
|
uni.hideLoading();
|
||||||
|
uni.showToast({ title: '提交成功', icon: 'success' });
|
||||||
|
// if (data.code == 200) {
|
||||||
|
// console.log(data);
|
||||||
|
// }
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
// 重置表单
|
||||||
|
this.form = {
|
||||||
|
campusName: '',
|
||||||
|
parkName: '',
|
||||||
|
buildingName: '',
|
||||||
|
floorName: '',
|
||||||
|
roomNo: '',
|
||||||
|
stuNo: '',
|
||||||
|
isDormitoryHead: '',
|
||||||
|
checkinTime: '',
|
||||||
|
photo: '',
|
||||||
|
xhk: '',
|
||||||
|
bankAddr: ''
|
||||||
|
};
|
||||||
|
uni.redirectTo({ url: `/pages/dormitory/studentDormInfo/index` })
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.form-container {
|
.form-container {
|
||||||
padding: 30rpx;
|
padding: 30rpx;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-title {
|
.form-title {
|
||||||
font-size: 36rpx;
|
font-size: 36rpx;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-bottom: 20rpx;
|
margin-bottom: 20rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-desc {
|
.form-desc {
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
color: #666;
|
color: #666;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-bottom: 40rpx;
|
margin-bottom: 40rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-item {
|
.form-item {
|
||||||
margin-bottom: 40rpx;
|
margin-bottom: 40rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-label {
|
.item-label {
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
color: #333;
|
color: #333;
|
||||||
margin-bottom: 16rpx;
|
margin-bottom: 16rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 红色*号样式
|
// 红色*号样式
|
||||||
.required {
|
.required {
|
||||||
color: #ff4d4f;
|
color: #ff4d4f;
|
||||||
margin-right: 6rpx;
|
margin-right: 6rpx;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-desc {
|
.item-desc {
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
color: #999;
|
color: #999;
|
||||||
margin-bottom: 20rpx;
|
margin-bottom: 20rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 下拉框样式
|
// 下拉框样式
|
||||||
.picker-input {
|
.picker-input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 80rpx;
|
height: 80rpx;
|
||||||
border: 1px solid #eee;
|
border: 1px solid #eee;
|
||||||
border-radius: 8rpx;
|
border-radius: 8rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 0 20rpx;
|
padding: 0 20rpx;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
background-color: #f9f9f9;
|
background-color: #f9f9f9;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 输入框样式
|
// 输入框样式
|
||||||
.input {
|
.input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 80rpx;
|
height: 80rpx;
|
||||||
border: 1px solid #eee;
|
border: 1px solid #eee;
|
||||||
border-radius: 8rpx;
|
border-radius: 8rpx;
|
||||||
padding: 0 20rpx;
|
padding: 0 20rpx;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 图片上传样式
|
// 图片上传样式
|
||||||
.upload-btn {
|
.upload-btn {
|
||||||
width: 200rpx;
|
width: 200rpx;
|
||||||
height: 80rpx;
|
height: 80rpx;
|
||||||
border: 1px dashed #ccc;
|
border: 1px dashed #ccc;
|
||||||
border-radius: 8rpx;
|
border-radius: 8rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
gap: 10rpx;
|
gap: 10rpx;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
color: #666;
|
color: #666;
|
||||||
margin-bottom: 20rpx;
|
margin-bottom: 20rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.upload-icon {
|
.upload-icon {
|
||||||
font-size: 40rpx;
|
font-size: 40rpx;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.upload-tip {
|
.upload-tip {
|
||||||
font-size: 22rpx;
|
font-size: 22rpx;
|
||||||
color: #999;
|
color: #999;
|
||||||
margin-bottom: 20rpx;
|
margin-bottom: 20rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.upload-preview {
|
.upload-preview {
|
||||||
width: 200rpx;
|
width: 200rpx;
|
||||||
height: 200rpx;
|
height: 200rpx;
|
||||||
border-radius: 8rpx;
|
border-radius: 8rpx;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.upload-preview image {
|
.upload-preview image {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 提交按钮样式
|
// 提交按钮样式
|
||||||
.submit-btn {
|
.submit-btn {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 90rpx;
|
height: 90rpx;
|
||||||
background-color: #1890ff;
|
background-color: #1890ff;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
border-radius: 45rpx;
|
border-radius: 45rpx;
|
||||||
margin-top: 60rpx;
|
margin-top: 60rpx;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
Reference in New Issue
Block a user