江西小程序管理端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

312 lines
8.0 KiB

1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
10 months ago
1 year ago
1 year ago
11 months ago
1 year ago
10 months ago
1 year ago
10 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
12 months ago
11 months ago
12 months ago
11 months ago
10 months ago
1 year ago
10 months ago
1 year ago
11 months ago
12 months ago
11 months ago
10 months ago
1 year ago
12 months ago
11 months ago
10 months ago
11 months ago
1 year ago
10 months ago
11 months ago
10 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
10 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
12 months ago
11 months ago
12 months ago
11 months ago
10 months ago
11 months ago
12 months ago
1 year ago
11 months ago
12 months ago
11 months ago
10 months ago
12 months ago
10 months ago
11 months ago
11 months ago
11 months ago
12 months ago
11 months ago
12 months ago
11 months ago
12 months ago
11 months ago
12 months ago
10 months ago
12 months ago
1 year ago
1 year ago
1 year ago
  1. <template>
  2. <view class="pageBgImg">
  3. <topNavbar title="排课计划"></topNavbar>
  4. <view class="pad">
  5. <view class="card">
  6. <view class="row">
  7. <view class="lab">计划开始日期</view>
  8. <view class="rightCon" @click="showClick('classBeginDate')">
  9. <view class="inputBox">
  10. <input type="text" v-model="form.classBeginDate" placeholder="请选择" disabled style="pointer-events: none;">
  11. </view>
  12. <view class="icon">
  13. <u-icon name="arrow-right" :size="12" :color="'#696B72'"></u-icon>
  14. </view>
  15. </view>
  16. </view>
  17. <view class="row">
  18. <view class="lab">计划结束日期</view>
  19. <view class="rightCon" @click="showClick('classEndDate')">
  20. <view class="inputBox">
  21. <input type="text" v-model="form.classEndDate" placeholder="请选择" disabled style="pointer-events: none;">
  22. </view>
  23. <view class="icon">
  24. <u-icon name="arrow-right" :size="12" :color="'#696B72'"></u-icon>
  25. </view>
  26. </view>
  27. </view>
  28. <view class="row">
  29. <view class="lab">选择训练场地</view>
  30. <view class="rightCon" @click="showSite=true">
  31. <view class="inputBox">
  32. <input type="text" v-model="form.siteName" placeholder="请选择" disabled style="pointer-events: none;">
  33. </view>
  34. <view class="icon">
  35. <u-icon name="arrow-right" :size="12" :color="'#696B72'"></u-icon>
  36. </view>
  37. </view>
  38. </view>
  39. <view class="row">
  40. <view class="lab">选择开课时间段</view>
  41. <view class="rightCon" @click="$goPage('/pages/recordEntry/operate/mySchedule/mould/mould')">
  42. <view class="inputBox">
  43. <input type="text" v-model="currentMould.templateName" placeholder="请选择" disabled style="pointer-events: none;">
  44. </view>
  45. <view class="icon">
  46. <u-icon name="arrow-right" :size="12" :color="'#696B72'"></u-icon>
  47. </view>
  48. </view>
  49. </view>
  50. <view class="blueBg">
  51. <view class="time_row hui">
  52. <text>时间段</text> <text>最多人数</text>
  53. </view>
  54. <view class="time_row" v-for="(item,index) in currentMould.detailVO" :key="index">
  55. <text>{{item.startTime}} <text>-</text> {{item.endTime}}</text> <text>{{item.personCount}}</text>
  56. </view>
  57. </view>
  58. <view class="row">
  59. <view class="lab">训练科目</view>
  60. <view class="rightCon">
  61. <myRadio @changeRadio="changeRadioSubject" :radioData="radiolist1" :radioVal="{value: form.subject}"></myRadio>
  62. </view>
  63. </view>
  64. <view class="row">
  65. <view class="lab">选择教练车</view>
  66. <view class="rightCon" @click="showCar=true">
  67. <view class="inputBox">
  68. <input type="text" v-model="form.carNumber" placeholder="请选择" disabled style="pointer-events: none;">
  69. </view>
  70. <view class="icon">
  71. <u-icon name="arrow-right" :size="12" :color="'#696B72'"></u-icon>
  72. </view>
  73. </view>
  74. </view>
  75. <view class="row">
  76. <view class="lab">开放范围</view>
  77. <view class="rightCon">
  78. <myRadio @changeRadio="changeRadioOpenRange" :radioData="radiolist3" :radioVal="{value: form.openRange}"></myRadio>
  79. </view>
  80. </view>
  81. </view>
  82. <view class="btnBg" @click="scheduleClassCreateFn">确认发布</view>
  83. </view>
  84. <u-datetime-picker
  85. :show="show"
  86. :minDate="minDate"
  87. :maxDate="maxDate"
  88. mode="date"
  89. @confirm="changeDate"
  90. @cancel="show=false"
  91. ></u-datetime-picker>
  92. <u-picker :show="showSite" :columns="siteColumns" keyName="name" @confirm="changeSite" @cancel="showSite=false" ></u-picker>
  93. <u-picker :show="showCar" :columns="carColumns" keyName="licnum" @confirm="changeCarNumber" @cancel="showCar=false" ></u-picker>
  94. </view>
  95. </template>
  96. <script>
  97. import { scheduleClassCreate, getClassDateLimit, trainingSiteList, carPage} from '@/config/api.js'
  98. export default {
  99. data() {
  100. return {
  101. tmpDateName:'',//选择日期临时变量
  102. minDate: null,
  103. maxDate: null,
  104. show: false,
  105. showSite: false,
  106. showCar: false,
  107. form: {
  108. classDate: '',
  109. carNumber: '',
  110. subject: 0, //科目类别:0:不限;2:科目二;3:科目三
  111. openRange: '1', //开放范围:0:自己的学员;1:绑定的驾校的学员
  112. siteName: '',
  113. siteId: ''
  114. },
  115. formToast: {
  116. classBeginDate: '请选择开始时间',
  117. classEndDate: '请选择结束时间',
  118. siteId: '请选择场地',
  119. carNumber: '请选择车辆',
  120. },
  121. currentMould: {},
  122. siteColumns: [],
  123. carColumns: [],
  124. radiolist1: [{
  125. name: '不限制',
  126. id: 0,
  127. disabled: false
  128. },
  129. {
  130. name: '科目二',
  131. id: 2,
  132. disabled: false
  133. },
  134. {
  135. name: '科目三',
  136. id: 3,
  137. disabled: false
  138. },
  139. ],
  140. radiolist3: [{
  141. name: '我的学员',
  142. id: 0,
  143. disabled: false
  144. },
  145. {
  146. name: '所有学员',
  147. id: 1,
  148. disabled: false
  149. },
  150. ] //开放范围:0:自己的学员;1:绑定的驾校的学员
  151. }
  152. },
  153. onLoad() {
  154. this.form.deptId = this.vuex_deptId
  155. this.form.coachId = this.vuex_coachId
  156. this.getClassDateLimitFn()
  157. this.trainingSiteListFn()
  158. this.carPageFn()
  159. uni.$on('chooseMould',(item)=>{
  160. this.form.templateId = item.id
  161. this.currentMould = item
  162. console.log(item)
  163. })
  164. },
  165. methods: {
  166. // 点击显示选择日期组件
  167. showClick(name) {
  168. this.show = true
  169. this.tmpDateName = name
  170. },
  171. // 选择车牌号
  172. changeCarNumber(val) {
  173. const item = val.value[0]
  174. this.showCar = false
  175. this.form.carNumber = item.licnum
  176. // console.log()
  177. },
  178. // 发布排课计划
  179. async scheduleClassCreateFn() {
  180. for(let k in this.formToast) {
  181. if(!this.form[k])
  182. return this.$u.toast(this.formToast[k])
  183. }
  184. console.log(this.form)
  185. const res = await scheduleClassCreate(this.form)
  186. if(res.code==0) {
  187. this.$goPage('/pages/recordEntry/operate/mySchedule/mySchedule')
  188. }
  189. console.log(res)
  190. },
  191. // 选择训练场地
  192. changeSite(val) {
  193. let item = val.value[0]
  194. this.form.address = item.address
  195. this.form.seq = item.seq
  196. this.form.area = item.area
  197. this.form.siteName = item.name
  198. this.form.siteId = item.id
  199. this.showSite = false
  200. },
  201. // 获取训练场地
  202. async trainingSiteListFn() {
  203. let obj = {
  204. pageNo: 1,
  205. pageSize: 100,
  206. schoolId: this.vuex_userInfo.user.schoolId
  207. }
  208. const {data: res} = await trainingSiteList(obj)
  209. this.siteColumns = [ res ]
  210. console.log(res)
  211. },
  212. changeRadio(val) {
  213. console.log(val)
  214. },
  215. changeRadioOpenRange(val) {
  216. this.form.openRange = val
  217. },
  218. // 选择科目
  219. changeRadioSubject(val) {
  220. this.form.subject = val
  221. console.log(this.form.subject)
  222. },
  223. // 选择日期
  224. changeDate(val) {
  225. this.form[this.tmpDateName] = this.$u.date(val.value, 'yyyy-mm-dd')
  226. this.show = false
  227. console.log(val)
  228. },
  229. // 获取排课日期范围
  230. async getClassDateLimitFn() {
  231. let obj = {
  232. coachId: this.vuex_coachId
  233. }
  234. const {data: res} = await getClassDateLimit(obj)
  235. this.minDate = new Date(res.beginDateLimit)*1 + 86400000
  236. this.maxDate = new Date(res.endDateLimit)*1
  237. },
  238. async carPageFn() {
  239. let obj = {
  240. pageNo: 1,
  241. pageSize: 40,
  242. schoolId: this.vuex_schoolId,
  243. coachId: this.vuex_coachId
  244. }
  245. const {data: res} = await carPage(obj)
  246. this.carColumns = [res.list]
  247. },
  248. }
  249. }
  250. </script>
  251. <style lang="scss" scoped>
  252. .card {
  253. padding: 10rpx 28rpx;
  254. .row {
  255. display: flex;
  256. justify-content: space-between;
  257. padding: 26rpx 0;
  258. .lab {
  259. font-weight: 500;
  260. }
  261. }
  262. }
  263. .btnBg {
  264. width: 396rpx;
  265. margin: 120rpx auto 0 auto;
  266. }
  267. .rightCon {
  268. display: flex;
  269. align-items: center;
  270. .icon {
  271. margin-left: 10rpx;
  272. }
  273. .inputBox {
  274. flex: 1;
  275. input {
  276. text-align: right;
  277. font-size: 28rpx;
  278. color: #333;
  279. }
  280. }
  281. }
  282. .blueBg {
  283. background-color: #E8F3FE;
  284. padding: 12rpx 32rpx;
  285. border-radius: 16rpx;
  286. text-align: center;
  287. .time_row {
  288. display: flex;
  289. justify-content: space-between;
  290. padding: 12rpx 0;
  291. &.hui {
  292. color: #ADADAD;
  293. }
  294. text {
  295. width: 170rpx;
  296. }
  297. }
  298. }
  299. </style>