ketime.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  1. <template>
  2. <view class="course">
  3. <view class="cour_top">
  4. <view class="f17 co16 fw mb6">请认真完善以下课程表所需内容!</view>
  5. <view class="f15 coa">填写完成后可进行修改。</view>
  6. </view>
  7. <uni-forms ref="form" :rules="rules" :modelValue="datainfo">
  8. <view class="cour_box">
  9. <view class="list">
  10. <view class="line bg1"></view>
  11. <view class="listr">
  12. <!-- <picker range-key="dictLabel" :value="xxindex" :range="schoolval" @change="bindDateChange">
  13. <uni-forms-item label="学校名称" required name="schoolName">
  14. <view class="f16 flex1 " :class="datainfo.schoolName ? 'co16' : 'coa'">{{ datainfo.schoolName || '请选择学校名称' }}</view>
  15. <view class="rimg"><image :src="rimg" class="rimgs"></image></view>
  16. </uni-forms-item>
  17. </picker> -->
  18. <uni-forms-item label="学校名称" required name="schoolName">
  19. <view class="f16 flex1" :class="datainfo.schoolName ? 'co16' : 'coa'">{{ datainfo.schoolName || '请选择学校名称' }}</view>
  20. <view class="rimg"><image :src="rimg" class="rimgs"></image></view>
  21. </uni-forms-item>
  22. </view>
  23. </view>
  24. <view class="list_tit">课程信息</view>
  25. <view class="list" v-for="(ite,idx) in timelist" :key="idx">
  26. <view class="line bg2"></view>
  27. <view class="listr" @click="getChose(ite.val)">
  28. <picker mode="time" :value="time" @change="bindTimeChangea">
  29. <uni-forms-item :label="ite.tit+'开始时间'" name="oneStartTime">
  30. <block v-if="ite.val==1"><view class="f16 flex1" :class="datainfo.oneStartTime ? 'co16' : 'coa'">{{ datainfo.oneStartTime || '请选择开始时间' }}</view></block>
  31. <block v-if="ite.val==2"><view class="f16 flex1" :class="datainfo.twoStartTime ? 'co16' : 'coa'">{{ datainfo.twoStartTime || '请选择开始时间' }}</view></block>
  32. <block v-if="ite.val==3"><view class="f16 flex1" :class="datainfo.threeStartTime ? 'co16' : 'coa'">{{ datainfo.threeStartTime || '请选择开始时间' }}</view></block>
  33. <block v-if="ite.val==4"><view class="f16 flex1" :class="datainfo.fourStartTime ? 'co16' : 'coa'">{{ datainfo.fourStartTime || '请选择开始时间' }}</view></block>
  34. <block v-if="ite.val==5"><view class="f16 flex1" :class="datainfo.fiveStartTime ? 'co16' : 'coa'">{{ datainfo.fiveStartTime || '请选择开始时间' }}</view></block>
  35. <block v-if="ite.val==6"><view class="f16 flex1" :class="datainfo.sixStartTime ? 'co16' : 'coa'">{{ datainfo.sixStartTime || '请选择开始时间' }}</view></block>
  36. <block v-if="ite.val==7"><view class="f16 flex1" :class="datainfo.sevenStartTime ? 'co16' : 'coa'">{{ datainfo.sevenStartTime || '请选择开始时间' }}</view></block>
  37. <block v-if="ite.val==8"><view class="f16 flex1" :class="datainfo.eightStartTime ? 'co16' : 'coa'">{{ datainfo.eightStartTime || '请选择开始时间' }}</view></block>
  38. </uni-forms-item>
  39. </picker>
  40. <picker mode="time" :value="time" @change="bindTimeChangeb">
  41. <uni-forms-item :label="ite.tit+'结束时间'" name="oneEndTime">
  42. <block v-if="ite.val==1"><view class="f16 flex1 " :class="datainfo.oneEndTime ? 'co16' : 'coa'">{{ datainfo.oneEndTime || '请选择结束时间' }}</view></block>
  43. <block v-if="ite.val==2"><view class="f16 flex1" :class="datainfo.twoEndTime ? 'co16' : 'coa'">{{ datainfo.twoEndTime || '请选择结束时间' }}</view></block>
  44. <block v-if="ite.val==3"><view class="f16 flex1" :class="datainfo.threeEndTime ? 'co16' : 'coa'">{{ datainfo.threeEndTime || '请选择结束时间' }}</view></block>
  45. <block v-if="ite.val==4"><view class="f16 flex1" :class="datainfo.fourEndTime ? 'co16' : 'coa'">{{ datainfo.fourEndTime || '请选择结束时间' }}</view></block>
  46. <block v-if="ite.val==5"><view class="f16 flex1" :class="datainfo.fiveEndTime ? 'co16' : 'coa'">{{ datainfo.fiveEndTime || '请选择结束时间' }}</view></block>
  47. <block v-if="ite.val==6"><view class="f16 flex1" :class="datainfo.sixEndTime ? 'co16' : 'coa'">{{ datainfo.sixEndTime || '请选择结束时间' }}</view></block>
  48. <block v-if="ite.val==7"><view class="f16 flex1" :class="datainfo.sevenEndTime ? 'co16' : 'coa'">{{ datainfo.sevenEndTime || '请选择结束时间' }}</view></block>
  49. <block v-if="ite.val==8"><view class="f16 flex1" :class="datainfo.eightEndTime ? 'co16' : 'coa'">{{ datainfo.eightEndTime || '请选择结束时间' }}</view></block>
  50. </uni-forms-item>
  51. </picker>
  52. </view>
  53. </view>
  54. <view class="text">
  55. <uni-forms-item label="备注" name="remark" class="text">
  56. <uni-easyinput type="textarea" :inputBorder="false" v-model="datainfo.remark" placeholder="请输入备注内容,非必填项..."></uni-easyinput>
  57. </uni-forms-item>
  58. </view>
  59. </view>
  60. <view class="btnbox">
  61. <view class="btn btn1" @click="getSubmit">提交</view>
  62. <view class="btn btn2" @click="getRemove" v-if="pagetype=='update'">删除</view>
  63. </view>
  64. </uni-forms>
  65. </view>
  66. </template>
  67. <script>
  68. import {getTimelistFn,getTimeAddFn,getTimePutFn,getTimeDelFn} from "@/api/work/index.js"
  69. import {getDeptList,getselfList} from "@/api/mine/mine.js"
  70. export default {
  71. data() {
  72. return {
  73. rimg: require('@/static/images/wrimg.png'),
  74. datainfo: {
  75. "schoolId": "",
  76. "schoolName": "",
  77. "oneStartTime": "",
  78. "oneEndTime": "",
  79. "twoStartTime": "",
  80. "twoEndTime": "",
  81. "threeStartTime": "",
  82. "threeEndTime": "",
  83. "fourStartTime": "",
  84. "fourEndTime": "",
  85. "fiveStartTime": "",
  86. "fiveEndTime": "",
  87. "sixStartTime": "",
  88. "sixEndTime": "",
  89. "sevenStartTime": "",
  90. "sevenEndTime": "",
  91. "eightStartTime": "",
  92. "eightEndTime": "",
  93. "remark":''
  94. },
  95. rules: {
  96. schoolName: { rules: [{ required: true, errorMessage: '请输入学校名称' }] },
  97. },
  98. timelist:[
  99. {tit:"第一节课",val:'1'},
  100. {tit:"第二节课",val:'2'},
  101. {tit:"第三节课",val:'3'},
  102. {tit:"第四节课",val:'4'},
  103. {tit:"第五节课",val:'5'},
  104. {tit:"第六节课",val:'6'},
  105. {tit:"第七节课",val:'7'},
  106. {tit:"第八节课",val:'8'},
  107. ],
  108. schoolval: [],
  109. xxindex: [],
  110. pagetype:'add',
  111. };
  112. },
  113. onLoad: function() {
  114. this.datainfo.schoolId=this.$store.state.user.schoolId||this.$store.state.user.deptId;;
  115. this.datainfo.schoolName=this.$store.state.user.schoolName||this.$store.state.user.deptName;
  116. this.getclassinfoFn();
  117. // this.getDeptListFn();
  118. },
  119. methods: {
  120. // 学校列表
  121. getDeptListFn(){
  122. var params={
  123. parentId:0
  124. }
  125. getDeptList(0).then(res=>{
  126. if(res.code==200){
  127. this.schoolval = res.data.map(v => {
  128. return {
  129. dictLabel: v.deptName,
  130. dictValue: v.deptId
  131. }
  132. })
  133. }else{
  134. this.$toast(res.msg)
  135. }
  136. })
  137. },
  138. getTimelistFn(id){
  139. var id=this.datainfo.schoolId;
  140. var params={
  141. schoolId:id,
  142. }
  143. getTimelistFn(params).then(res=>{
  144. if(res.code==200){
  145. if(res.rows.length){
  146. this.datainfo=res.rows[0];
  147. this.pagetype='update'
  148. }
  149. }else{
  150. this.$toast(res.msg)
  151. }
  152. })
  153. },
  154. getselfList(id){
  155. var params={
  156. parentId:id,
  157. }
  158. params['params[role]']=this.$store.state.user.choseroles
  159. getselfList(params).then(res=>{
  160. if(res.code==200){
  161. var newArr=res.data;
  162. if(newArr&&newArr.length){
  163. this.classval = newArr.map(v => {
  164. return {
  165. dictLabel: v.deptName,
  166. dictValue: v.deptId
  167. }
  168. })
  169. }
  170. }else{
  171. this.$toast(res.msg)
  172. }
  173. })
  174. },
  175. getclassinfoFn(){
  176. var that=this;
  177. var roles=that.$store.state.user.choseroles;
  178. that.roles=roles;
  179. if(roles=='teacher'){
  180. var id=this.datainfo.schoolId;
  181. this.getselfList(id)
  182. }else if(roles=='parents'){
  183. this.$store.dispatch('GetInforoles').then(resd => {
  184. if(resd.code==200){
  185. var res=resd.data;
  186. if(res.user&&res.user.parentsStudent&&res.user.parentsStudent.length){
  187. this.classval = res.user.parentsStudent.map(v => {
  188. return {
  189. dictLabel: v.className,
  190. dictValue: v.classId,
  191. schoolName: v.schoolName
  192. }
  193. })
  194. }
  195. }
  196. })
  197. }else{
  198. // 学校
  199. that.datainfo.classId='';
  200. that.datainfo.className='';
  201. that.datainfo.schoolId=that.$store.state.user.deptId;
  202. that.datainfo.schoolName=that.$store.state.user.deptName;
  203. that.getTimelistFn()
  204. }
  205. },
  206. // 选择学校
  207. bindDateChange(e) {
  208. var val = e.detail.value;
  209. var v = this.schoolval[val];
  210. var idx = this.checkidx;
  211. var id = v.dictValue;
  212. this.datainfo.schoolId=v.dictValue;
  213. this.datainfo.schoolName=v.dictLabel;
  214. this.getTimelistFn(id);
  215. },
  216. getChose(idx){
  217. this.choseidx=idx;
  218. },
  219. bindTimeChangea(e){
  220. var idx=this.choseidx;
  221. var val=e.detail.value;
  222. if(idx==1){
  223. this.datainfo.oneStartTime=val
  224. }else if(idx==2){
  225. this.datainfo.twoStartTime=val;
  226. }else if(idx==3){
  227. this.datainfo.threeStartTime=val;
  228. }else if(idx==4){
  229. this.datainfo.fourStartTime=val;
  230. }else if(idx==5){
  231. this.datainfo.fiveStartTime=val;
  232. }else if(idx==6){
  233. this.datainfo.sixStartTime=val;
  234. }else if(idx==7){
  235. this.datainfo.sevenStartTime=val;
  236. }else if(idx==8){
  237. this.datainfo.eightStartTime=val;
  238. }
  239. },
  240. bindTimeChangeb(e){
  241. var val=e.detail.value;
  242. var idx=this.choseidx;
  243. if(idx==1){
  244. this.datainfo.oneEndTime=val
  245. }else if(idx==2){
  246. this.datainfo.twoEndTime=val
  247. }else if(idx==3){
  248. this.datainfo.threeEndTime=val;
  249. }else if(idx==4){
  250. this.datainfo.fourEndTime=val;
  251. }else if(idx==5){
  252. this.datainfo.fiveEndTime=val;
  253. }else if(idx==6){
  254. this.datainfo.sixEndTime=val;
  255. }else if(idx==7){
  256. this.datainfo.sevenEndTime=val;
  257. }else if(idx==8){
  258. this.datainfo.eightEndTime=val;
  259. }
  260. },
  261. getSubmit(){
  262. var that=this;
  263. this.$refs.form.validate().then(res => {
  264. var params=JSON.parse(JSON.stringify(this.datainfo))
  265. if(this.pagetype=='add'){
  266. getTimeAddFn(params).then(res=>{
  267. if(res.code==200){
  268. that.$toast("新增成功")
  269. setTimeout(function(){
  270. uni.$emit('refreshdatalis');
  271. that.$tab.reLaunch('/pages/work/index')
  272. },1500)
  273. }else{
  274. that.$toast(res.msg)
  275. }
  276. })
  277. }else{
  278. getTimePutFn(params).then(res=>{
  279. if(res.code==200){
  280. that.$toast("修改成功")
  281. setTimeout(function(){
  282. uni.$emit('refreshdatalis');
  283. that.$tab.reLaunch('/pages/work/index')
  284. },1500)
  285. }else{
  286. that.$toast(res.msg)
  287. }
  288. })
  289. }
  290. // this.$tab.navigateTo(`/mine/pages/mine/success`)
  291. })
  292. },
  293. getRemove(){
  294. var that=this;
  295. uni.showModal({
  296. title: '确认删除',
  297. content: "是否确认删除",
  298. cancelText: '取消删除',
  299. confirmText: '确认删除',
  300. success: function(res) {
  301. if (res.confirm) {
  302. var id=that.datainfo.id;
  303. getTimeDelFn(id).then(res=>{
  304. if(res.code==200){
  305. that.$toast("删除成功")
  306. setTimeout(function(){
  307. uni.$emit('refreshdatalis');
  308. that.$tab.reLaunch('/pages/work/index')
  309. },1500)
  310. }else{
  311. that.$toast(res.msg)
  312. }
  313. })
  314. } else if (res.cancel) {
  315. // console.log('用户点击取消');
  316. }
  317. }
  318. });
  319. }
  320. }
  321. };
  322. </script>
  323. <style lang="scss" scoped>
  324. .cour_top{padding: 60rpx 36rpx;}
  325. .cour_box{padding: 0 36rpx;
  326. .list_tit{font-size: 32rpx;color: #161616;font-weight: 500;padding: 16rpx 0 24rpx;}
  327. .list{width: 100%;background: #FFFFFF;border-radius: 14rpx;box-sizing: border-box;margin-bottom: 24rpx;display: flex;align-items: stretch;
  328. .rimg{flex: 0 0 auto;margin-left: 12rpx;display: flex;align-items: center;justify-content: center;width: 40rpx;height: 40rpx;
  329. image{width: 12rpx;height: 20rpx;}
  330. }
  331. .line{width: 12rpx;border-radius: 14rpx 0 0 14rpx;opacity: 0.7;
  332. &.bg1{background: #fc733a;}
  333. &.bg2{background: #1f57e6;}
  334. }
  335. .listr{padding: 16rpx 32rpx 16rpx 36rpx;flex: 1;}
  336. }
  337. }
  338. .course /deep/ .uni-forms{flex: 1;}
  339. .course /deep/ .uni-forms-item__label{flex: 0 0 auto;width: auto !important;font-size: 32rpx;font-weight: 500;
  340. color: #161616;}
  341. .course /deep/ .uni-forms .uni-forms-item{margin-bottom: 0;}
  342. .course /deep/ .uni-forms .text .uni-forms-item{margin-bottom: 0;border-bottom: 0;flex-direction: column;text-align: left;}
  343. .course /deep/ .uni-forms .uni-forms-item .uni-easyinput__content-textarea{border: 2rpx solid #CDCDCD;background-color: #FFFFFF;border-radius: 14rpx;padding: 32rpx 40rpx;font-size: 30rpx;margin: 0;min-height: 256rpx;box-sizing: border-box;
  344. }
  345. .course /deep/ .uni-forms-item__content{display: flex;align-items: center;flex-direction: row;}
  346. .course /deep/ .uni-easyinput{flex: 1;text-align: left;}
  347. .course /deep/ .uni-easyinput__placeholder-class{font-size: 30rpx;}
  348. .course /deep/ .uni-easyinput__content-input{font-size: 30rpx;}
  349. .course /deep/ .uni-forms-item__error{margin-top:20rpx;left: auto;right: 0;}
  350. .course{padding-bottom: 140rpx;
  351. .btnbox{position: fixed;left: 0;right: 0;bottom: 0;font-size: 34rpx;color: #FFFFFF;display: flex;align-items: center;z-index: 4;
  352. .btn{
  353. height: 100rpx;display: flex;align-items: center;justify-content: center;
  354. &.btn1{background-color: #1f57e6;flex: 1;}
  355. &.btn2{background-color: red;flex: 1;}
  356. }
  357. }
  358. }
  359. </style>