123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639 |
- import { api_schoolAreaDetail, api_schoolAreaList, api_sysAreaQueryAllProvince, api_userBeneficiarySave, api_userBeneficiaryUpdate } from "../../api/new";
- import { GRADE_ENUM } from "../../utils/util";
- const classList: any = [];
- for (let i = 1; i <= 40; i++) {
- classList.push({ text: i + '班', value: i });
- }
- /** 获取年级 */
- const getGradeList = (gradeYear?: string, instrumentCode?: string) => {
- let tempList: any = [];
- const five = [
- { text: '一年级', value: 1, instrumentCode },
- { text: '二年级', value: 2, instrumentCode },
- { text: '三年级', value: 3, instrumentCode },
- { text: '四年级', value: 4, instrumentCode },
- { text: '五年级', value: 5, instrumentCode }
- ];
- const one = [{ text: '六年级', value: 6, instrumentCode }];
- const three = [
- { text: '七年级', value: 7, instrumentCode },
- { text: '八年级', value: 8, instrumentCode },
- { text: '九年级', value: 9, instrumentCode }
- ];
- if (gradeYear === 'FIVE_YEAR_SYSTEM') {
- tempList.push(...[...five]);
- } else if (gradeYear === 'SIX_YEAR_SYSTEM') {
- tempList.push(...[...five, ...one]);
- } else if (gradeYear === 'THREE_YEAR_SYSTEM') {
- tempList.push(...[...three]);
- } else if (gradeYear === 'FORE_YEAR_SYSTEM') {
- tempList.push(...[...one, ...three]);
- } else {
- tempList.push(...[...five, ...one, ...three]);
- }
- return tempList;
- };
- // pages/buyerInformation/index.ts
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- phone: '',
- name: '',
- gender: '1',
- schoolAreaId: '',
- schoolAreaName: '',
- currentGradeClassTxt: '',
- currentClass: null,
- currentGradeNum: null,
- cityCode: null,
- cityName: "",
- provinceCode: null,
- provinceName: "",
- regionCode: null,
- regionName: "",
- userBeneficiaryId: '', // 选中用户的编号
- showArea: false,
- areaList: [] as any,
- showSchool: false,
- showSchoolAfterLeave: false, // 离开后
- /** 学校列表 */
- schoolAreaList: [] as any,
- schoolAreaIndex: 0,
- /** 临时切换时选择的学校编号 */
- tempChangeSchoolAreaId: '',
- schoolLoading: false,
- /** 搜索学校 */
- searchName: '',
- /** 学校类型 */
- schoolInstrumentSetType: '',
- /** 年级班级 */
- gradeClassList: [] as any,
- gradeClassIndexs: [0, 0],
- showGradeClass: false,
- showGradeClassAfterLeave: false, // 离开后
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad(options: any) {
- if (options.userBeneficiaryId) {
- this.setData({
- userBeneficiaryId: options.userBeneficiaryId
- })
- }
- // 从缓存里面获取用户信息
- this.getUserDetail()
- this.getAreas()
- this.getSchools()
- },
- async getUserDetail() {
- try {
- // const { data } = await api_userBeneficiaryDetail({
- // id: this.data.userBeneficiaryId
- // })
- // console.log(data, 'data')
- const information = wx.getStorageSync('buyerInfomation')
- const users = information ? JSON.parse(information) : null
- if (users) {
- this.setData({
- phone: users.phone,
- name: users.name,
- gender: users.gender,
- schoolAreaId: users.schoolAreaId,
- schoolAreaName: users.schoolAreaName,
- currentGradeClassTxt: users.currentGradeClassTxt,
- currentClass: users.currentClass,
- currentGradeNum: users.currentGradeNum,
- cityCode: users.cityCode,
- cityName: users.cityName,
- provinceCode: users.provinceCode,
- provinceName: users.provinceName,
- regionCode: users.regionCode,
- regionName: users.regionName,
- schoolAreaIndex: users.schoolAreaIndex || 0,
- gradeClassIndexs: users.gradeClassIndexs || [0, 0]
- }, () => {
- this.getSchoolAreaDetail()
- })
- }
- } catch {
- //
- }
- },
- onBack() {
- // 如果有购买人编号,返回时则不缓存数据
- if (!this.data.userBeneficiaryId) {
- this.onSetCatch(this.data)
- }
- wx.navigateBack()
- },
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady() {
- },
- /**
- * 生命周期函数--监听页面显示
- */
- onShow() {
- },
- /** 获取省市区 */
- async getAreas() {
- try {
- const { data } = await api_sysAreaQueryAllProvince({})
- this.setData({
- areaList: this.formateArea(data.data)
- })
- } catch {
- //
- }
- },
- formateArea(area: any[]) {
- const province_list: { [_: string]: string } = {};
- const city_list: { [_: string]: string } = {};
- const county_list: { [_: string]: string } = {};
- area.forEach((item: any) => {
- province_list[item.code] = item.name;
- });
- area.forEach((item: any) => {
- item.areas && item.areas.forEach((city: any) => {
- city_list[city.code] = city.name;
- });
- });
- area.forEach((item: any) => {
- item.areas && item.areas.forEach((city: any) => {
- city.areas && city.areas.forEach((county: any) => {
- county_list[county.code] = county.name;
- });
- });
- });
- return {
- province_list,
- city_list,
- county_list
- };
- },
- /** 获取学校列表 */
- async getSchools(name?: string) {
- this.setData({
- schoolLoading: true
- })
- try {
- // 判断是否有地区信息
- if (!this.data.provinceCode || !this.data.cityCode || !this.data.regionCode) {
- return
- }
- const { data } = await api_schoolAreaList({
- name,
- testFlag: true,
- provinceCode: this.data.provinceCode,
- cityCode: this.data.cityCode,
- regionCode: this.data.regionCode
- })
- const result = data.data || []
- const tempList: any[] = []
- result.forEach((item: any) => {
- tempList.push({
- text: item.name,
- value: item.id
- })
- })
- let tempSchoolId = ''
- if (tempList.length > 0) {
- const first = tempList[0]
- tempSchoolId = first.value || ''
- }
- this.setData({
- schoolAreaList: tempList,
- tempChangeSchoolAreaId: tempSchoolId
- })
- } catch {
- //
- }
- this.setData({
- schoolLoading: false
- })
- },
- /** 获取学校详情 */
- async getSchoolAreaDetail() {
- const { data } = await api_schoolAreaDetail({ id: this.data.schoolAreaId })
- const result = data.data || {}
- if (result.school) {
- const schoolInfo = result.school || {};
- const schoolInstrumentList = schoolInfo.schoolInstrumentList || [];
- // forms.schoolInstrumentSetType = schoolInfo.instrumentSetType;
- if (schoolInfo.instrumentSetType === 'SCHOOL') {
- const gradeClassList = [{
- values: getGradeList(schoolInfo.gradeYear),
- defaultIndex: this.data.gradeClassIndexs[0]
- }, {
- values: classList,
- defaultIndex: this.data.gradeClassIndexs[1]
- }]
- this.setData({
- gradeClassList,
- schoolInstrumentSetType: schoolInfo.instrumentSetType
- })
- } else if (schoolInfo.instrumentSetType === 'GRADE') {
- const gradeList: any = []
- schoolInstrumentList.forEach((item: any) => {
- gradeList.push({
- text: GRADE_ENUM[item.gradeNum],
- value: item.gradeNum,
- instrumentId: item.instrumentId
- })
- });
- gradeList.sort((a: any, b: any) => a.value - b.value);
- const gradeClassList = [{
- values: gradeList,
- defaultIndex: this.data.gradeClassIndexs[0]
- }, {
- values: classList,
- defaultIndex: this.data.gradeClassIndexs[1]
- }]
- this.setData({
- gradeClassList,
- schoolInstrumentSetType: schoolInfo.instrumentSetType
- })
- } else if (schoolInfo.instrumentSetType === 'CLASS') {
- // // 班级
- const tempGradeList: any[] = [];
- schoolInstrumentList.forEach((item: any) => {
- if (!tempGradeList.includes(item.gradeNum)) {
- tempGradeList.push(item.gradeNum);
- }
- });
- const lastGradeList: any[] = [];
- tempGradeList.forEach((temp: any) => {
- const list = {
- text: GRADE_ENUM[temp],
- value: temp,
- instrumentId: '',
- instrumentCode: '',
- instrumentName: '',
- classList: [] as any
- };
- schoolInstrumentList.forEach((item: any) => {
- if (temp === item.gradeNum) {
- list.instrumentId = item.instrumentId;
- list.instrumentCode = item.instrumentCode;
- list.instrumentName = item.instrumentName;
- list.classList.push({
- text: item.classNum + '班',
- value: item.classNum,
- instrumentCode: item.instrumentCode
- });
- }
- });
- // 排序班级
- list.classList.sort((a: any, b: any) => a.value - b.value);
- lastGradeList.push(list);
- });
- lastGradeList.sort((a: any, b: any) => a.value - b.value);
- // console.log(lastGradeList, 'lastGradeList')
- const gradeClassList = [{
- values: lastGradeList,
- defaultIndex: this.data.gradeClassIndexs[0]
- }, {
- values: lastGradeList[this.data.gradeClassIndexs[0]]?.classList || [],
- defaultIndex: this.data.gradeClassIndexs[1]
- }]
- this.setData({
- gradeClassList,
- schoolInstrumentSetType: schoolInfo.instrumentSetType
- })
- } else {
- const gradeClassList = [{
- values: getGradeList(),
- defaultIndex: this.data.gradeClassIndexs[0]
- }, {
- values: classList,
- defaultIndex: this.data.gradeClassIndexs[1]
- }]
- this.setData({
- gradeClassList,
- schoolInstrumentSetType: ''
- })
- }
- } else {
- const gradeClassList = [{
- values: getGradeList(),
- defaultIndex: this.data.gradeClassIndexs[0]
- }, {
- values: classList,
- defaultIndex: this.data.gradeClassIndexs[1]
- }]
- this.setData({
- gradeClassList,
- schoolInstrumentSetType: ''
- })
- }
- },
- /** 选择男女 */
- onCheckGender(e: any) {
- const { dataset } = e.target
- this.setData({
- gender: dataset.gender
- })
- },
- /** 显示选择地区 */
- onShowAreaList() {
- this.setData({
- showArea: true
- })
- },
- /** 关闭选择地区 */
- onCloseAreaList() {
- this.setData({
- showArea: false
- })
- },
- /** 确定选择地区 */
- submitArea(e: any) {
- const selectedOptions: any = e.detail.values
- this.setData({
- provinceCode: selectedOptions[0].code,
- cityCode: selectedOptions[1].code,
- regionCode: selectedOptions[2].code,
- provinceName: selectedOptions[0].name,
- cityName: selectedOptions[1].name,
- regionName: selectedOptions[2].name,
- showArea: false,
- searchName: '',
- schoolAreaId: '',
- schoolAreaName: '',
- schoolAreaIndex: 0,
- gradeClassIndexs: [0, 0],
- 'gradeClassList[0].defaultIndex': 0,
- 'gradeClassList[1].defaultIndex': 0,
- currentGradeNum: null,
- currentClass: null,
- currentGradeClassTxt: '',
- }, () => {
- this.getSchools()
- })
- },
- /** 关闭选择学校 */
- onCloseSchool() {
- this.setData({
- showSchool: false
- })
- },
- /** 选择学校关闭后 */
- onSchoolAfterLeave() {
- this.setData({
- showSchoolAfterLeave: true
- })
- },
- /** 选择学校打开前 */
- onSchoolBeforeEnter() {
- this.setData({
- showSchoolAfterLeave: false
- })
- },
- /** 选择学校 */
- onSelectSchool() {
- if (!this.data.provinceName) {
- wx.showToast({
- title: '请选择地区',
- icon: 'none'
- })
- return
- }
- this.setData({
- showSchool: true
- })
- },
- /** 确定选择学校 */
- onSubmitSchool() {
- const detail = this.data.schoolAreaList.find((item: any) => item.value === this.data.tempChangeSchoolAreaId)
- const detailIndex = this.data.schoolAreaList.findIndex((item: any) => item.value === this.data.tempChangeSchoolAreaId)
- // console.log(detail, detailIndex, this.data.tempChangeSchoolAreaId)
- if(detailIndex === -1) return
- this.setData({
- schoolAreaName: detail.text,
- schoolAreaId: detail.value,
- schoolAreaIndex: detailIndex,
- showSchool: false,
- gradeClassIndexs: [0, 0],
- 'gradeClassList[0].defaultIndex': 0,
- 'gradeClassList[1].defaultIndex': 0,
- currentGradeNum: null,
- currentClass: null,
- currentGradeClassTxt: '',
- }, () => {
- this.getSchoolAreaDetail()
- })
- },
- onChangeSchool(e: any) {
- const { value } = e.detail.value
- this.setData({
- tempChangeSchoolAreaId: value
- })
- },
- onSearch() {
- this.setData({
- schoolAreaIndex: 0
- }, () => {
- this.getSchools(this.data.searchName);
- })
- },
- onSearchChange(e: any) {
- this.setData({
- searchName: e.detail
- })
- },
- /** 选择年级班级 */
- onSelectGradeClass() {
- if (!this.data.schoolAreaId) {
- wx.showToast({
- title: '请选择学校',
- icon: 'none'
- })
- return
- }
- this.setData({
- showGradeClass: true
- })
- },
- /** 年级班级 */
- onCloseGradeClass() {
- this.setData({
- showGradeClass: false
- })
- },
- onGradeClassBeforeEnter() {
- this.setData({
- showGradeClassAfterLeave: false
- })
- },
- onGradeClassAfterLeave() {
- this.setData({
- showGradeClassAfterLeave: true
- })
- },
- /** 确认选择年级班级 */
- onSubmitGradeClass(e: any) {
- const selectedOptions: any = e.detail.value
- const selectedIndexs: any = e.detail.index
- // console.log(selectedOptions, e, 'selectedOptions')
- this.setData({
- currentGradeClassTxt: selectedOptions[0].text + selectedOptions[1].text,
- currentGradeNum: selectedOptions[0].value,
- currentClass: selectedOptions[1].value,
- 'gradeClassList[0].defaultIndex': selectedIndexs[0],
- 'gradeClassList[1].defaultIndex': selectedIndexs[1],
- gradeClassIndexs: selectedIndexs,
- showGradeClass: false
- })
- },
- /** 年级班级切换时 */
- onGradeClassChange(event: any) {
- const { picker, index, value } = event.detail;
- if (index !== 0) return
- // 第一列滚动时
- // console.log(this.data.gradeClassList, "this.data.gradeClassList")
- if (this.data.schoolInstrumentSetType === "CLASS") {
- const firstColumn = value[index]
- const gradeDetail = this.data.gradeClassList[0]?.values
- const classList = gradeDetail?.find((item: any) => item.value === firstColumn.value)
- if (classList) {
- picker.setColumnIndex(1, '0')
- picker.setColumnValues(1, classList.classList);
- }
- }
- },
- /** 最终提交 */
- async onSubmit() {
- try {
- const params = this.data
- if (!params.phone || !/^1[3456789]\d{9}$/.test(params.phone)) {
- wx.showToast({
- title: '请输入正确的手机号',
- icon: "none"
- })
- return
- }
- if (!params.name) {
- wx.showToast({
- title: '请输入学生姓名',
- icon: "none"
- })
- return
- }
- if (!params.provinceCode || !params.cityCode || !params.regionCode) {
- wx.showToast({
- title: '请选择地区',
- icon: "none"
- })
- return
- }
- if (!params.schoolAreaId) {
- wx.showToast({
- title: '请选择学校',
- icon: "none"
- })
- return
- }
- if (!params.currentGradeNum) {
- wx.showToast({
- title: '请选择年级',
- icon: "none"
- })
- return
- }
- const pages = getCurrentPages();
- const prevPage = pages[pages.length - 2]; // 获取上一个页面实例
- if (params.userBeneficiaryId) {
- const { data } = await api_userBeneficiaryUpdate({
- id: params.userBeneficiaryId,
- phone: params.phone,
- name: params.name,
- gender: params.gender,
- currentGradeNum: params.currentGradeNum,
- currentClass: params.currentClass,
- schoolAreaId: params.schoolAreaId,
- defaultStatus: false
- })
- wx.showToast({
- title: '提交成功',
- icon: 'none'
- })
- prevPage?.setData({ backParams: { userBeneficiaryId: data.data.id, name: params.name, phone: params.phone, schoolInfo: params.schoolAreaName + params.currentGradeClassTxt } });
- } else {
- const { data } = await api_userBeneficiarySave({
- "phone": params.phone,
- "name": params.name,
- "gender": params.gender,
- "currentGradeNum": params.currentGradeNum,
- "currentClass": params.currentClass,
- "schoolAreaId": params.schoolAreaId,
- defaultStatus: false
- })
- wx.showToast({
- title: '提交成功',
- icon: 'none'
- })
- prevPage?.setData({ backParams: { userBeneficiaryId: data.data.id, name: params.name, phone: params.phone, schoolInfo: params.schoolAreaName + params.currentGradeClassTxt } });
- }
- this.onSetCatch(params)
- wx.navigateBack()
- } catch {
- //
- }
- },
- /** 设置缓存 */
- onSetCatch(params: any) {
- wx.setStorageSync('buyerInfomation', JSON.stringify({
- phone: params.phone,
- name: params.name,
- gender: params.gender,
- schoolAreaId: params.schoolAreaId,
- schoolAreaName: params.schoolAreaName,
- currentGradeClassTxt: params.currentGradeClassTxt,
- currentClass: params.currentClass,
- currentGradeNum: params.currentGradeNum,
- cityCode: params.cityCode,
- cityName: params.cityName,
- provinceCode: params.provinceCode,
- provinceName: params.provinceName,
- regionCode: params.regionCode,
- regionName: params.regionName,
- schoolAreaIndex: params.schoolAreaIndex,
- gradeClassIndexs: params.gradeClassIndexs
- }))
- }
- })
|