applyteacher.vue 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <template>
  2. <view class="regbox flexdc">
  3. <uni-forms ref="form" :rules="ruleas" :modelValue="datainfo">
  4. <picker range-key='dictLabel' :value="xxindex" :range="schoolval" @change='bindDateChangea'>
  5. <uni-forms-item label="学校" required name="schoolName">
  6. <view class="f16 flex1 txr" :class="datainfo.schoolName?'co16':'coa'">{{datainfo.schoolName||"请选择学校"}}
  7. </view>
  8. <view class="rimg"><image :src="rimg" class="rimgs"></image> </view>
  9. </uni-forms-item>
  10. </picker>
  11. <uni-forms-item label="姓名" required name="userName">
  12. <uni-easyinput :inputBorder="false" v-model="datainfo.userName" placeholder="请输入您的姓名"></uni-easyinput>
  13. <view class="rimg"></view>
  14. </uni-forms-item>
  15. <uni-forms-item label="联系方式" required name="userPhone">
  16. <uni-easyinput :inputBorder="false" v-model="datainfo.userPhone" placeholder="请输入您的联系方式"></uni-easyinput>
  17. <view class="rimg"></view>
  18. </uni-forms-item>
  19. <!-- 单选 -->
  20. <view v-for="(ite,idx) in classlist" class="pr" :key="idx" @click="getShow(idx)">
  21. <view @click="getDel(idx)" class="delbox" v-if="idx!=0">
  22. <image :src="tcdel"></image>
  23. </view>
  24. <picker range-key='dictLabel' :value="bjindex" :range="classval" @change='bindDateChangeb'>
  25. <uni-forms-item label="班级" required name="className" @click="getClass">
  26. <view class="f16 flex1 txr" :class="ite.className?'co16':'coa'">{{ite.className||"请选择班级"}}
  27. </view>
  28. <view class="rimg"><image :src="rimg" class="rimgs"></image> </view>
  29. </uni-forms-item>
  30. </picker>
  31. <picker range-key='dictLabel' :value="xkindex" :range="subject" @change='bindDateChangec'>
  32. <uni-forms-item label="学科" required name="discipline" >
  33. <view class="f16 flex1 txr" :class="ite.discipline?'co16':'coa'">{{ite.discipline||"请选择学科"}}
  34. </view>
  35. <view class="rimg"><image :src="rimg" class="rimgs"></image> </view>
  36. </uni-forms-item>
  37. </picker>
  38. <view class="line"></view>
  39. </view>
  40. <view class="addbox f17 co47 flexcc mt26" @click="getAddFn">
  41. <image :src="addimg"></image>
  42. 新增班级信息
  43. </view>
  44. </uni-forms>
  45. <view class="mt26">
  46. <view class="rbtn" @click="getSubmit">保存</view>
  47. <view class="apllytxt f15" @click="gethome">稍后完善</view>
  48. </view>
  49. </view>
  50. </template>
  51. <script>
  52. import {getDeptList,getDeptListminea} from "@/api/mine/mine.js"
  53. import config from '@/config'
  54. const baseUrl = config.baseUrl
  55. import { getToken } from '@/utils/auth'
  56. import {getDictionaryFn,getteacherregFn,getteacherputFn,getteacherdetFn} from "@/api/mine/register.js"
  57. export default {
  58. props:{
  59. schoolval:{
  60. type: Array,
  61. default () {
  62. return []
  63. }
  64. },
  65. subject:{
  66. type: Array,
  67. default () {
  68. return []
  69. }
  70. },
  71. classvals:{
  72. type: Array,
  73. default () {
  74. return []
  75. }
  76. }
  77. },
  78. watch:{
  79. classvals(val){
  80. this.classval=val
  81. }
  82. },
  83. data(){
  84. return{
  85. rimg:require("@/static/images/rimg.png"),
  86. wimg:require('@/static/images/read.png'),
  87. delimg:require('@/static/images/del.png'),
  88. addimg:require('@/static/images/add.png'),
  89. tcdel:require('@/static/images/tcdel.png'),
  90. cyvalue:'',
  91. xxindex:0,
  92. bjindex:0,
  93. xkindex:0,
  94. ruleas: {
  95. schoolName: {rules: [{required: true,errorMessage: '请输入学校名称'}]},
  96. userName: {rules: [{required: true,errorMessage: '请输入姓名',}]},
  97. userPhone: {rules: [{required: true,errorMessage: '请输入联系方式'},{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: '请输入正确的联系方式'}]},
  98. },
  99. datainfo:{
  100. "schoolId": "",
  101. "schoolName":"",
  102. "userName":"",
  103. "userPhone":"",
  104. "registerTeacherClassList":[{
  105. "classId":"",
  106. "className":"",
  107. "discipline":""
  108. }]
  109. },
  110. classlist:[{
  111. "classId":"",
  112. "className":"",
  113. "discipline":""
  114. }],
  115. classval:[],
  116. checkidx:-1,
  117. id:'',
  118. type:'add',//页面类型
  119. }
  120. },
  121. mounted: function(e) {
  122. },
  123. methods:{
  124. getAddFn(){
  125. var obj={
  126. "classId":"",
  127. "className":"",
  128. "discipline":""
  129. }
  130. this.classlist.push(obj);
  131. },
  132. getDel(idx){
  133. var that=this;
  134. uni.showModal({
  135. title: '确认删除',
  136. content: "是否确认删除",
  137. cancelText: '取消删除',
  138. confirmText: '确认删除',
  139. success: function(res) {
  140. if (res.confirm) {
  141. that.classlist.splice(idx,1)
  142. } else if (res.cancel) {
  143. // console.log('用户点击取消');
  144. }
  145. }
  146. });
  147. },
  148. getShow(idx){
  149. this.checkidx=idx;
  150. },
  151. // 选择学校
  152. bindDateChangea(e){
  153. var val=e.detail.value;
  154. var v=this.schoolval[val];
  155. var id=v.dictValue;
  156. if(this.datainfo.schoolId!=id){
  157. this.datainfo.schoolName=v.dictLabel;
  158. this.datainfo.tenantId=v.tenantId;
  159. this.datainfo.schoolId=id;
  160. this.$emit("getclassListFn",id)
  161. this.$emit("getinit",v.tenantId)
  162. var obj={"classId":"","className":"","discipline":""};
  163. var newarr=[];
  164. newarr.push(obj)
  165. this.classlist=JSON.parse(JSON.stringify(newarr))
  166. }
  167. },
  168. // 班级
  169. bindDateChangeb(e) {
  170. var val=e.detail.value;
  171. var idx=this.checkidx;
  172. this.classlist[idx].className=this.classval[val].dictLabel
  173. this.classlist[idx].classId=this.classval[val].dictValue
  174. },
  175. // 学科
  176. bindDateChangec(e){
  177. var val=e.detail.value;
  178. var idx=this.checkidx;
  179. this.classlist[idx].discipline=this.subject[val].dictLabel
  180. },
  181. getSubmit(){
  182. var that=this;
  183. this.$refs.form.validate().then(res => {
  184. var list=this.classlist;
  185. var newArr = [];
  186. var a=0;
  187. Object.keys(list).some((key) => {
  188. // 去重
  189. if (list[key].className && list[key].discipline) {
  190. newArr.push(list[key])
  191. } else if (list[key].className && !list[key].discipline) {
  192. a=1;
  193. this.$toast("请选择"+list[key].className+"的学科")
  194. return
  195. } else {
  196. a=1;
  197. this.$toast("请选择班级")
  198. return
  199. }
  200. })
  201. // 相同班级去重
  202. var newArrs = [];
  203. const map = new Map();
  204. newArrs = list.filter(v => !map.has(v.classId) && map.set(v.classId, 1));
  205. if(newArrs.length<newArr.length){
  206. this.$toast("请勿添加同一年级")
  207. return
  208. }
  209. if(a==1){
  210. return
  211. }
  212. var params=JSON.parse(JSON.stringify(this.datainfo))
  213. params.registerTeacherClassList=JSON.parse(JSON.stringify(newArr))
  214. this.$emit('getteacherregFn',params)
  215. // this.$tab.navigateTo(`/mine/pages/mine/success`)
  216. })
  217. },
  218. gethome(){
  219. this.$tab.reLaunch(`/pages/index/index`)
  220. },
  221. },
  222. }
  223. </script>
  224. <style lang="scss" scoped>
  225. .regbox{padding: 20rpx 36rpx 80rpx;box-sizing: border-box;min-height: auto;overflow: auto;
  226. .apllytxt{font-size:30rpx ;}
  227. .line{width: 40rpx;height: 6rpx;background: #FFB132;margin: 60rpx auto 0;}
  228. .addbox{font-weight: 500;
  229. image{width: 44rpx;height: 44rpx;margin-right: 24rpx;flex: 0 0 auto;}
  230. }
  231. .delbox{width: 40rpx;height: 40rpx;position: absolute;right: 0;top: -40rpx;padding: 0;display: flex;align-items: center;justify-content: center;
  232. image{
  233. width: 36rpx;height: 36rpx;
  234. }
  235. }
  236. }
  237. .regbox /deep/ .uni-forms{flex: 1;}
  238. .regbox /deep/ .uni-forms-item__label{flex: 0 0 auto;width: auto !important;font-size: 32rpx;font-weight: bold;
  239. color: #161616;}
  240. .regbox /deep/ .uni-forms .uni-forms-item{padding: 28rpx 24rpx 20rpx;border-bottom: 2rpx #C1C1C1 solid;margin-bottom: 0;
  241. // &:nth-of-type(3){margin-bottom: 0;border-bottom: 0;}
  242. }
  243. .regbox /deep/ .uni-forms-item__content{display: flex;align-items: center;flex-direction: row;}
  244. .regbox /deep/ .uni-easyinput{flex: 1;text-align: right;}
  245. .regbox /deep/ .uni-easyinput__placeholder-class{font-size: 30rpx;}
  246. .regbox /deep/ .uni-easyinput__content-input{font-size: 30rpx;}
  247. .regbox /deep/ .uni-forms-item__error{margin-top:20rpx;left: auto;right: 0;}
  248. </style>