applyparent.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. <template>
  2. <view class="regbox flexdc">
  3. <block v-if="type=='add'">
  4. <uni-forms ref="form" :rules="rulebs" :modelValue="datainfob">
  5. <uni-forms-item label="姓名" required name="userName">
  6. <uni-easyinput :inputBorder="false" v-model="datainfob.userName" placeholder="请输入您的姓名">
  7. </uni-easyinput>
  8. <view class="rimg"></view>
  9. </uni-forms-item>
  10. <uni-forms-item label="联系方式" required name="userPhone">
  11. <uni-easyinput :inputBorder="false" v-model="datainfob.userPhone" placeholder="请输入您的联系方式">
  12. </uni-easyinput>
  13. <view class="rimg"></view>
  14. </uni-forms-item>
  15. <!-- 单选 -->
  16. <view v-for="(ite,idx) in classlist" class="pr" :key="idx" @click="getShow(idx)">
  17. <view @click="getDel(idx)" class="delbox" v-if="idx!=0">
  18. <image :src="tcdel"></image>
  19. </view>
  20. <uni-forms-item label="学生姓名" required name="studentName">
  21. <uni-easyinput :inputBorder="false" v-model="ite.studentName" placeholder="请输入学生姓名">
  22. </uni-easyinput>
  23. <view class="rimg"></view>
  24. </uni-forms-item>
  25. <uni-forms-item label="学生身份证号" required name="studentNumber">
  26. <uni-easyinput :inputBorder="false" type="number" v-model="ite.studentNumber"
  27. placeholder="请输入学生身份证号"></uni-easyinput>
  28. <view class="rimg"></view>
  29. </uni-forms-item>
  30. <picker range-key='dictLabel' :value="xxindex" :range="schoolval"
  31. @change='bindDateChangea'>
  32. <uni-forms-item label="学校" required name="schoolName">
  33. <view class="f16 flex1 txr" :class="ite.schoolName?'co16':'coa'">
  34. {{ite.schoolName||"请选择学校"}}</view>
  35. <view class="rimg">
  36. <image :src="rimg" class="rimgs"></image>
  37. </view>
  38. </uni-forms-item>
  39. </picker>
  40. <picker range-key='dictLabel' :value="xkindex" :range="classval" @change='bindDateChangeb'>
  41. <uni-forms-item label="班级" required name="className">
  42. <view class="f16 flex1 txr" :class="ite.className?'co16':'coa'">{{ite.className||"请选择班级"}}
  43. </view>
  44. <view class="rimg">
  45. <image :src="rimg" class="rimgs"></image>
  46. </view>
  47. </uni-forms-item>
  48. </picker>
  49. <view class="line"></view>
  50. </view>
  51. <view class="addbox f17 co47 flexcc mt26" @click="getAddFn">
  52. <image :src="addimg"></image>
  53. 新增学校信息
  54. </view>
  55. </uni-forms>
  56. </block>
  57. <!-- 家长的修改 -->
  58. <block v-else>
  59. <uni-forms ref="form" :rules="rulesup" :modelValue="datainfob">
  60. <uni-forms-item label="姓名" required name="parentsName">
  61. <uni-easyinput :inputBorder="false" v-model="datainfob.parentsName" placeholder="请输入您的姓名">
  62. </uni-easyinput>
  63. <view class="rimg"></view>
  64. </uni-forms-item>
  65. <uni-forms-item label="联系方式" required name="parentsPhone">
  66. <uni-easyinput :inputBorder="false" v-model="datainfob.parentsPhone" placeholder="请输入您的联系方式">
  67. </uni-easyinput>
  68. <view class="rimg"></view>
  69. </uni-forms-item>
  70. <!-- 单选 -->
  71. <uni-forms-item label="学生姓名" required name="studentName">
  72. <uni-easyinput :inputBorder="false" v-model="datainfob.studentName" placeholder="请输入学生姓名">
  73. </uni-easyinput>
  74. <view class="rimg"></view>
  75. </uni-forms-item>
  76. <uni-forms-item label="学生身份证号" required name="studentNumber">
  77. <uni-easyinput :inputBorder="false" type="number" v-model="datainfob.studentNumber"
  78. placeholder="请输入学生身份证号"></uni-easyinput>
  79. <view class="rimg"></view>
  80. </uni-forms-item>
  81. <picker range-key='dictLabel' :value="xxindex" :range="schoolval" @change='bindDateChangea'>
  82. <uni-forms-item label="学校" required name="schoolName">
  83. <view class="f16 flex1 txr" :class="datainfob.schoolName?'co16':'coa'">
  84. {{datainfob.schoolName||"请选择学校"}}</view>
  85. <view class="rimg">
  86. <image :src="rimg" class="rimgs"></image>
  87. </view>
  88. </uni-forms-item>
  89. </picker>
  90. <picker range-key='dictLabel' :value="xkindex" :range="classval" @change='bindDateChangeb'>
  91. <uni-forms-item label="班级" required name="className">
  92. <view class="f16 flex1 txr" :class="datainfob.className?'co16':'coa'">
  93. {{datainfob.className||"请选择班级"}}
  94. </view>
  95. <view class="rimg">
  96. <image :src="rimg" class="rimgs"></image>
  97. </view>
  98. </uni-forms-item>
  99. </picker>
  100. <view class="line"></view>
  101. </uni-forms>
  102. </block>
  103. <view class="mt26">
  104. <view class="rbtn" @click="getSubmit">保存</view>
  105. <view class="apllytxt f15" @click="gethome">稍后完善</view>
  106. </view>
  107. </view>
  108. </template>
  109. <script>
  110. import {getDeptList,getDeptListminea} from "@/api/mine/mine.js"
  111. import config from '@/config'
  112. const baseUrl = config.baseUrl
  113. import {getToken} from '@/utils/auth'
  114. import {getparentsregFn,getstudentdetFn,getstudentputFn} from "@/api/mine/register.js"
  115. export default {
  116. props:{
  117. schoolval:{
  118. type: Array,
  119. default () {
  120. return []
  121. }
  122. },
  123. classvals:{
  124. type: Array,
  125. default () {
  126. return []
  127. }
  128. }
  129. },
  130. watch:{
  131. classvals(val){
  132. this.classval=val
  133. }
  134. },
  135. data() {
  136. return {
  137. rimg: require("@/static/images/rimg.png"),
  138. wimg: require('@/static/images/read.png'),
  139. delimg: require('@/static/images/del.png'),
  140. addimg: require('@/static/images/add.png'),
  141. tcdel: require('@/static/images/tcdel.png'),
  142. cyvalue: '',
  143. xxindex: 0,
  144. bjindex: 0,
  145. xkindex: 0,
  146. rulebs: {
  147. userName: {
  148. rules: [{
  149. required: true,
  150. errorMessage: '请输入姓名',
  151. }]
  152. },
  153. userPhone: {
  154. rules: [{
  155. required: true,
  156. errorMessage: '请输入联系方式',
  157. },{pattern:"^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$",errorMessage: '请输入正确的联系方式'}]
  158. },
  159. registerParentsStudentList: {
  160. rules: [{
  161. required: true,
  162. errorMessage: '请填写学生信息',
  163. }]
  164. }
  165. },
  166. rulesup: {
  167. parentsName: {
  168. rules: [{
  169. required: true,
  170. errorMessage: '请输入姓名',
  171. }]
  172. },
  173. parentsPhone: {
  174. rules: [{
  175. required: true,
  176. errorMessage: '请输入联系方式',
  177. },{pattern:"^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$",errorMessage: '请输入正确的联系方式'}]
  178. },
  179. studentName: {
  180. rules: [{
  181. required: true,
  182. errorMessage: '请输入学生姓名',
  183. }]
  184. },
  185. schoolName: {
  186. rules: [{
  187. required: true,
  188. errorMessage: '请选择学校',
  189. }]
  190. },
  191. className: {
  192. rules: [{
  193. required: true,
  194. errorMessage: '请选择班级',
  195. }]
  196. },
  197. },
  198. datainfob: {
  199. "userName": "",
  200. "userPhone": "",
  201. "registerParentsStudentList": [{
  202. "schoolId": "",
  203. "schoolName": "",
  204. "classId": "",
  205. "className": "",
  206. "studentName": "",
  207. "studentNumber": ""
  208. }]
  209. },
  210. classlist: [{
  211. "schoolId": "",
  212. "schoolName": "",
  213. "classId": "",
  214. "className": "",
  215. "studentName": "",
  216. "studentNumber": ""
  217. }],
  218. classval: [],
  219. checkidx: -1,
  220. id: '',
  221. type: 'add', //页面类型
  222. }
  223. },
  224. methods: {
  225. // 班级
  226. getAddFn() {
  227. var obj = {
  228. "schoolId": "",
  229. "schoolName": "",
  230. "classId": "",
  231. "className": "",
  232. "studentName": "",
  233. "studentNumber": ""
  234. }
  235. this.classlist.push(obj);
  236. },
  237. getDel(idx) {
  238. var that = this;
  239. uni.showModal({
  240. title: '确认删除',
  241. content: "是否确认删除",
  242. cancelText: '取消删除',
  243. confirmText: '确认删除',
  244. success: function(res) {
  245. if (res.confirm) {
  246. that.classlist.splice(idx, 1)
  247. } else if (res.cancel) {
  248. // console.log('用户点击取消');
  249. }
  250. }
  251. });
  252. },
  253. getShow(idx) {
  254. this.checkidx = idx;
  255. },
  256. // 选择学校
  257. bindDateChangea(e) {
  258. var val = e.detail.value;
  259. var v = this.schoolval[val];
  260. var id = v.dictValue;
  261. var idx = this.checkidx;
  262. if (this.classlist[idx].schoolId != id) {
  263. this.classlist[idx].schoolName = v.dictLabel
  264. this.classlist[idx].tenantId = v.tenantId
  265. this.classlist[idx].schoolId = id
  266. this.classlist[idx].className = '';
  267. this.classlist[idx].classId = '';
  268. this.$emit('getclassListFn',id)
  269. }
  270. },
  271. // 班级
  272. bindDateChangeb(e) {
  273. var val = e.detail.value;
  274. var idx = this.checkidx;
  275. this.classlist[idx].className = this.classval[val].dictLabel
  276. this.classlist[idx].classId = this.classval[val].dictValue
  277. },
  278. getSubmit() {
  279. var that = this;
  280. this.$refs.form.validate().then(res => {
  281. var params = JSON.parse(JSON.stringify(this.datainfob))
  282. var list=this.classlist;
  283. var newArr = []
  284. var a=0;
  285. Object.keys(list).some((key) => {
  286. if(!list[key].studentName){
  287. a=1;
  288. this.$toast("请输入学生姓名" )
  289. return
  290. }else if(!list[key].studentNumber){
  291. a=1;
  292. this.$toast("请输入学生身份证号" )
  293. return
  294. }else if (list[key].schoolName && list[key].className) {
  295. let _IDRe18 =
  296. /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
  297. let _IDre15 = /^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/
  298. // 校验身份证:
  299. if (_IDRe18.test(list[key].studentNumber) || _IDre15.test(list[key].studentNumber)) {
  300. newArr.push(list[key])
  301. }else{
  302. a=1;
  303. this.$toast('请输入学生'+ list[key].studentName + "正确身份证号")
  304. return
  305. }
  306. } else if (list[key].schoolName && !list[key].className) {
  307. a=1;
  308. this.$toast("请选择" + list[key].schoolName + "的班级")
  309. return
  310. } else if(!list[key].schoolName){
  311. a=1;
  312. this.$toast("请选择学校")
  313. return
  314. }
  315. })
  316. if(a==1){
  317. return
  318. }
  319. params.registerParentsStudentList = JSON.parse(JSON.stringify(newArr))
  320. this.$emit('getparentsregFn',params)
  321. // this.$tab.navigateTo(`/mine/pages/mine/success`)
  322. })
  323. },
  324. gethome() {
  325. this.$tab.reLaunch(`/pages/index/index`)
  326. },
  327. },
  328. }
  329. </script>
  330. <style lang="scss" scoped>
  331. .regbox{padding: 20rpx 36rpx 80rpx;box-sizing: border-box;min-height: auto;overflow: auto;
  332. .apllytxt{font-size:30rpx ;}
  333. .line{width: 40rpx;height: 6rpx;background: #FFB132;margin: 60rpx auto 0;}
  334. .addbox{font-weight: 500;
  335. image{width: 44rpx;height: 44rpx;margin-right: 24rpx;flex: 0 0 auto;}
  336. }
  337. .delbox{width: 40rpx;height: 40rpx;position: absolute;right: 0;top: -40rpx;
  338. image{
  339. width: 36rpx;height: 36rpx;
  340. }
  341. }
  342. }
  343. .regbox /deep/ .uni-forms{flex: 1;}
  344. .regbox /deep/ .uni-forms-item__label{flex: 0 0 auto;width: auto !important;font-size: 32rpx;font-weight: bold;
  345. color: #161616;}
  346. .regbox /deep/ .uni-forms .uni-forms-item{padding: 28rpx 24rpx 20rpx;border-bottom: 2rpx #C1C1C1 solid;margin-bottom: 0;
  347. // &:nth-of-type(3){margin-bottom: 0;border-bottom: 0;}
  348. }
  349. .regbox /deep/ .uni-forms-item__content{display: flex;align-items: center;flex-direction: row;}
  350. .regbox /deep/ .uni-easyinput{flex: 1;text-align: right;}
  351. .regbox /deep/ .uni-easyinput__placeholder-class{font-size: 30rpx;}
  352. .regbox /deep/ .uni-easyinput__content-input{font-size: 30rpx;}
  353. .regbox /deep/ .uni-forms-item__error{margin-top:20rpx;left: auto;right: 0;}
  354. </style>