edit.php 7.8 KB

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