edit.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. <style>
  2. .form-body {
  3. padding: 20px 0;
  4. background-color: #fff;
  5. margin-bottom: 20px;
  6. padding-right: 50%;
  7. }
  8. .form-button {
  9. margin: 0!important;
  10. }
  11. .form-button .el-form-item__content {
  12. margin-left: 0!important;
  13. }
  14. .button-item {
  15. padding: 9px 25px;
  16. }
  17. .text {
  18. cursor: pointer;
  19. color: #419EFB;
  20. }
  21. </style>
  22. <section id="app" v-cloak>
  23. <el-card class="box-card" shadow="never" style="border:0" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  24. <div slot="header" class="clearfix">
  25. <div flex="cross:center box:first">
  26. <div><span @click="$navigate({r:'plugin/course/admin/group/index'})" class="text">分组管理</span>/分组编辑</div>
  27. </div>
  28. </div>
  29. <div class="form-body" >
  30. <el-form :model="ruleForm" label-width="80px" v-loading="loading" :rules="formRules" ref="ruleForm">
  31. <el-form-item label="分组名称" size="small" prop="gname">
  32. <el-input v-model="ruleForm.gname" auto-complete="off"></el-input>
  33. </el-form-item>
  34. <el-form-item label="排序" size="small" prop="sort">
  35. <el-input v-model="ruleForm.sort" auto-complete="off"></el-input>
  36. </el-form-item>
  37. <el-form-item label="是否启用" prop="status">
  38. <el-switch
  39. v-model="ruleForm.status"
  40. :active-value="1"
  41. :inactive-value="0"
  42. inactive-text="不启用"
  43. active-text="启用"
  44. >
  45. </el-switch>
  46. </el-form-item>
  47. <el-form-item label="选择课程" prop="cid">
  48. <el-select
  49. v-model="ruleForm.cid"
  50. multiple
  51. style="margin-left: 20px;width: 100%" placeholder="请选择">
  52. <el-option
  53. v-for="item in course_info"
  54. :key="item.id"
  55. :label="item.name"
  56. :value="item.id"> </el-option>
  57. </el-select>
  58. </el-form-item>
  59. <el-form-item prop="logo">
  60. <label slot="label">
  61. <span>LOGO</span>
  62. <el-tooltip effect="dark" content="分组 logo 图片" placement="top">
  63. <i class="el-icon-info"></i>
  64. </el-tooltip>
  65. </label>
  66. <com-attachment v-model="ruleForm.logo" :multiple="false" :max="1">
  67. <el-tooltip class="item" effect="dark" content="建议尺寸:420 * 336" placement="top">
  68. <el-button size="mini">选择图片</el-button>
  69. </el-tooltip>
  70. </com-attachment>
  71. <div class="customize-share-title">
  72. <com-image mode="aspectFill" width='80px' height='80px'
  73. :src="ruleForm.logo ? ruleForm.logo : ''"></com-image>
  74. <el-button v-if="ruleForm.logo" class="del-btn" size="mini"
  75. type="danger" icon="el-icon-close" circle
  76. @click="ruleForm.logo = ''"></el-button>
  77. </div>
  78. <div flex="dir:right">
  79. <div>
  80. <el-button class="button-item" type="primary" size="small" :loading=btnLoading @click="submit('ruleForm')">提交</el-button>
  81. </div>
  82. </div>
  83. </el-form>
  84. </div>
  85. </el-card>
  86. </section>
  87. <script>
  88. const app = new Vue({
  89. el: '#app',
  90. data() {
  91. return {
  92. form: {},
  93. loading: false,
  94. btnLoading: false,
  95. course_info: {
  96. id: '',
  97. name:''
  98. },
  99. ruleForm: {
  100. gname:'',
  101. sort:'',
  102. is_navicat:'',
  103. status:0,
  104. logo:'',
  105. },
  106. formRules: {
  107. gname: [
  108. { required: true, pattern:/\S/, message: '分组名称不能为空', trigger: 'blur' },
  109. { min: 2, max: 6, message: "分组名称长度在2-6个字符内" }
  110. ],
  111. sort: [
  112. { required: true, pattern: /^[0-9]\d{0,8}$/, message: '排序必须在9位整数内' }
  113. ],
  114. is_use: [{ required: true, message: '请选择分组是否展示在导航', trigger: 'blur' }],
  115. // logo: [
  116. // { required: true, message: '请上传分组LOGO' }
  117. // ],
  118. cid: [{required: true, message: '请选择该分组下的课程', trigger: 'blur'}],
  119. },
  120. };
  121. },
  122. methods: {
  123. submit(formName) {
  124. this.$refs[formName].validate((valid, obj) => {
  125. if (valid) {
  126. this.ruleForm.cid = this.ruleForm.cid.toString();
  127. this.btnLoading = true;
  128. request({
  129. params: {
  130. r: 'course/recommend/edit',
  131. },
  132. data: this.ruleForm,
  133. method: 'post'
  134. }).then(e => {
  135. this.btnLoading = false;
  136. if (e.data.code == 0) {
  137. const h = this.$createElement;
  138. this.$message({
  139. message: e.data.msg,
  140. type: 'success'
  141. });
  142. setTimeout(function(){
  143. navigateTo({ r: 'course/recommend/index' });
  144. },300);
  145. } else {
  146. this.$message({
  147. message: e.data.msg,
  148. type: 'error'
  149. });
  150. }
  151. }).catch(e => {
  152. this.btnLoading = false;
  153. this.$message.error(e.data.msg);
  154. });
  155. }else{
  156. var msg = '';
  157. for (let index in obj) {
  158. msg = msg + '*' + obj[index][0].message + ' ';
  159. }
  160. this.$message({
  161. message: msg,
  162. type: 'error'
  163. });
  164. return false;
  165. }
  166. });
  167. },
  168. getGroupForm() {
  169. this.loading = true;
  170. let _this = this;
  171. request({
  172. params: {
  173. r: 'course/recommend/edit',
  174. id: getQuery('id'),
  175. },
  176. method: 'get'
  177. }).then(e => {
  178. this.loading = false;
  179. if (e.data.code == 0) {
  180. if(e.data.data.group_info!=''){
  181. _this.ruleForm = e.data.data.group_info;
  182. }
  183. _this.course_info = e.data.data.course_list;
  184. }
  185. }).catch(e => {
  186. this.loading = false;
  187. this.$alert(e.data.msg, '提示', {
  188. confirmButtonText: '确定'
  189. })
  190. });
  191. }
  192. },
  193. mounted() {
  194. this.getGroupForm();
  195. }
  196. })
  197. </script>