editForm.vue 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. <template>
  2. <el-dialog title="课程详情"
  3. :visible.sync="dialogVisible"
  4. @opened="dialogOpen"
  5. @closed="dialogClose"
  6. width="40%"
  7. >
  8. <el-form ref="form"
  9. :model="formdata"
  10. label-width="110px"
  11. :rules="rules"
  12. size="small">
  13. <el-form-item prop="CourseName"
  14. label="课程名">
  15. <el-input v-model="formdata.CourseName"></el-input>
  16. </el-form-item>
  17. <el-form-item label="授课教师" prop="Teacher">
  18. <el-select v-model="formdata.Teacher"
  19. style="width: 100%">
  20. <el-option v-for="item in TeacherList"
  21. :key="item.Teacher"
  22. :label="item.ItemName"
  23. :value="parseInt(item.ItemValue)">
  24. </el-option>
  25. </el-select>
  26. </el-form-item>
  27. <el-form-item label="实验地点" prop="Local">
  28. <el-select v-model="formdata.Local"
  29. style="width: 100%">
  30. <el-option v-for="item in RoomList"
  31. :key="item.Id"
  32. :label="item.RoomName"
  33. :value="parseInt(item.Id)">
  34. </el-option>
  35. </el-select>
  36. </el-form-item>
  37. <el-form-item prop="Mark"
  38. label="学分">
  39. <el-input v-model="formdata.Mark"></el-input>
  40. </el-form-item>
  41. <el-form-item prop="Num"
  42. label="人数">
  43. <el-input v-model="formdata.Num"></el-input>
  44. </el-form-item>
  45. <el-form-item prop="WeekTitle"
  46. label="教学周">
  47. <el-input v-model="formdata.WeekTitle"></el-input>
  48. </el-form-item>
  49. <el-form-item prop="DayOfWeek"
  50. label="周次">
  51. <el-input v-model="formdata.DayOfWeek"></el-input>
  52. </el-form-item>
  53. <el-form-item label="节次">
  54. <el-checkbox-group style="width:100%;text-align:left" v-model="checkedTimes" @change="handleCheckedChange">
  55. <el-checkbox :label="item.ItemValue" v-for="item in TimeList" :key="item.ItemValue">{{ item.ItemName }}</el-checkbox>
  56. </el-checkbox-group>
  57. </el-form-item>
  58. <!-- <el-form-item label="发布状态" prop="Status">-->
  59. <!-- <el-switch style="width:100%;text-align:left" v-model="formdata.Status"></el-switch>-->
  60. <!-- </el-form-item>-->
  61. </el-form>
  62. <div slot="footer"
  63. class="dialog-footer">
  64. <el-button type="primary"
  65. size="mini"
  66. :loading="loading"
  67. @click="saveEntity">保存</el-button>
  68. <el-button size="mini"
  69. @click="close">关闭</el-button>
  70. </div>
  71. </el-dialog>
  72. </template>
  73. <script>
  74. import detailApi from '@/api/course/detail'
  75. import itemDetailApi from '@/api/sysadmin/itemdetail'
  76. export default {
  77. name: 'detailEditForm',
  78. props: {
  79. id: Number,
  80. value: Boolean,
  81. CourseId: Number,
  82. Year: Number,
  83. Term: Number,
  84. ClassId: Number,
  85. RoomList: Array,
  86. TeacherList: Array
  87. },
  88. data () {
  89. return {
  90. loading: false,
  91. dialogVisible: false,
  92. checkedTimes: [],
  93. Teachers: [],
  94. formdata: {
  95. Id: '',
  96. CourseId: '',
  97. Year: '',
  98. Term: '',
  99. CourseName: '',
  100. Teacher: 1,
  101. Local: '',
  102. Class: '',
  103. Mark: '',
  104. Num: '',
  105. WeekTitle: '',
  106. DayOfWeek: '',
  107. Time: []
  108. // Status : 0,
  109. },
  110. rules: {
  111. CourseName: [{
  112. required: true,
  113. message: '课程名不能为空',
  114. trigger: 'blur'
  115. }],
  116. Teacher: [{
  117. required: true,
  118. message: '授课教师不能为空',
  119. trigger: 'blur'
  120. }],
  121. Local: [{
  122. required: true,
  123. message: '实验地点不能为空',
  124. trigger: 'blur'
  125. }],
  126. Mark: [{
  127. required: true,
  128. message: '学分不能为空',
  129. trigger: 'blur'
  130. }],
  131. Num: [{
  132. required: true,
  133. message: '人数不能为空',
  134. trigger: 'blur'
  135. }],
  136. WeekTitle: [{
  137. required: true,
  138. message: '教学周不能为空',
  139. trigger: 'blur'
  140. }],
  141. DayOfWeek: [{
  142. required: true,
  143. message: '周次不能为空',
  144. trigger: 'blur'
  145. }],
  146. Time: [{
  147. required: true,
  148. message: '节次不能为空',
  149. trigger: 'blur'
  150. }]
  151. }
  152. }
  153. },
  154. watch: {
  155. value (val) {
  156. this.dialogVisible = val
  157. },
  158. dialogVisible (val) {
  159. this.$emit('input', val)
  160. }
  161. },
  162. mounted () {
  163. this.getTimeList()
  164. },
  165. methods: {
  166. dialogOpen () {
  167. this.$refs.form.resetFields()
  168. this.initData()
  169. },
  170. initData () {
  171. let _this = this
  172. if (this.id > 0) {
  173. _this.formdata = {}
  174. const params = {
  175. Id: this.id
  176. }
  177. detailApi.getEntityById(params)
  178. .then(res => {
  179. _this.formdata = res
  180. // 编辑时初始化表单数据,给字段赋值
  181. // _this.formdata.Status = _this.formdata.Status === 1
  182. // 判断多选的选中状态
  183. if (_this.formdata.Time) {
  184. let subStr = _this.formdata.Time
  185. _this.checkedTimes = subStr.split(',').map(Number)
  186. console.log(_this.checkedTimes)
  187. } else {
  188. _this.checkedTimes = []
  189. }
  190. })
  191. .catch(err => {
  192. console.error(err)
  193. })
  194. } else {
  195. _this.formdata.Id = ''
  196. _this.formdata.CourseId = _this.CourseId
  197. _this.formdata.Year = _this.Year
  198. _this.formdata.Term = _this.Term
  199. _this.formdata.CourseName = ''
  200. _this.formdata.Teacher = ''
  201. _this.formdata.Local = ''
  202. _this.formdata.Class = _this.Class
  203. _this.formdata.Mark = ''
  204. _this.formdata.Num = ''
  205. _this.formdata.WeekTitle = ''
  206. _this.formdata.DayOfWeek = ''
  207. _this.formdata.Time = []
  208. // _this.formdata.Status = 0
  209. _this.checkedTimes = [] // 多选选中项、
  210. }
  211. },
  212. saveEntity () {
  213. let _this = this
  214. _this.formdata.Id = this.id
  215. _this.$refs['form'].validate(valid => {
  216. if (valid) {
  217. // _this.formdata.Status = _this.formdata.Status ? 1 : 0
  218. _this.loading = true
  219. detailApi.save(_this.formdata)
  220. .then(data => {
  221. _this.loading = false
  222. _this.dialogVisible = false
  223. _this.$emit('submit')
  224. }).catch(err => {
  225. _this.loading = false
  226. console.error(err)
  227. })
  228. } else {
  229. return false
  230. }
  231. })
  232. },
  233. // 获取课程节次列表
  234. getTimeList (query) {
  235. let _this = this
  236. if (query !== '') {
  237. _this.loading = true
  238. itemDetailApi.getItemDetailByItemCode({ ItemCode: 'Time' })
  239. .then(res => {
  240. _this.loading = false
  241. this.TimeList = res
  242. this.initData()
  243. })
  244. .catch(err => {
  245. console.error(err)
  246. })
  247. } else {
  248. _this.TimeList = []
  249. }
  250. },
  251. handleCheckedChange (val) {
  252. let _this = this
  253. _this.formdata.Time = val
  254. },
  255. dialogClose () {
  256. this.$refs['form'].resetFields()
  257. this.dialogVisible = false
  258. },
  259. close () {
  260. this.dialogClose()
  261. }
  262. }
  263. }
  264. </script>
  265. <style>
  266. </style>