Jelajahi Sumber

红德堂-过程页配置

Long 1 Minggu lalu
induk
melakukan
2cb30fda8a
1 mengubah file dengan 51 tambahan dan 8 penghapusan
  1. 51 8
      src/views/course/userCourse/index.vue

+ 51 - 8
src/views/course/userCourse/index.vue

@@ -296,6 +296,16 @@
           <i class="el-icon-warning"/>
           <span style="color: rgb(153, 169, 191)"> 不配置将使用课程默认图片</span>
         </el-form-item>
+        <el-form-item label="风格模板" prop="templateId">
+          <el-select v-model="configDialog.form.templateId" placeholder="请选择模板">
+            <el-option
+              v-for="item in configDialog.templateList"
+              :key="item.key"
+              :label="item.value"
+              :value="item.key">
+            </el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item label="首播电视台" prop="tvEnable">
           <el-switch v-model="configDialog.form.tvEnable" active-color="#13ce66"/>
         </el-form-item>
@@ -521,9 +531,18 @@ export default {
       configDialog: {
         dialogVisible: false,
         updating: false,
+        templateList: [
+          {"key":1,"value":"我和我的父亲"},
+          {"key":2,"value":"御医有方"},
+          {"key":3,"value":"大国医者"},
+          {"key":4,"value":"自救与希望"},
+          {"key":5,"value":"大国医典"},
+          {"key":6,"value":"道医有道"},
+        ],
         form: {
           id: null,
           coverImg: null,
+          templateId: null,
           tvEnable: 0,
           tv: null,
           networkEnable: 0,
@@ -536,6 +555,9 @@ export default {
           support: null
         },
         rules: {
+          templateId: [
+            { required: true, message: '模板名称不能为空', trigger: 'blur' }
+          ],
           tv: [
             { required: true, message: '首播电视台不能为空', trigger: 'blur' }
           ],
@@ -911,17 +933,36 @@ export default {
       });
     },
     configCourse(row) {
+      const defaultForm = {
+        id: null,
+        coverImg: null,
+        templateId: null,
+        tvEnable: 0,
+        tv: null,
+        networkEnable: 0,
+        network: null,
+        unitEnable: 0,
+        unit: null,
+        teamEnable: 0,
+        team: null,
+        supportEnable: 0,
+        support: null,
+      }
+
+      let parsedConfig = {}
       if (row.configJson) {
-        this.configDialog.form = {
-          tvEnable: 0,
-          networkEnable: 0,
-          unitEnable: 0,
-          teamEnable: 0,
-          supportEnable: 0,
-          ...JSON.parse(row.configJson)
+        try {
+          parsedConfig = JSON.parse(row.configJson)
+        } catch (e) {
+          console.warn('configJson 解析失败:', e)
         }
       }
-      this.configDialog.form.id = row.courseId
+
+      this.configDialog.form = {
+        ...defaultForm,
+        ...parsedConfig,
+        id: row.courseId,
+      }
       this.configDialog.dialogVisible = true;
       this.configDialog.updating = false
     },
@@ -939,6 +980,7 @@ export default {
 
         const content = {
           coverImg: this.configDialog.form.coverImg,
+          templateId: this.configDialog.form.templateId,
           tvEnable: this.configDialog.form.tvEnable,
           tv: this.configDialog.form.tv?.replace(",",","),
           networkEnable: this.configDialog.form.networkEnable,
@@ -971,6 +1013,7 @@ export default {
       this.configDialog.form = {
         id: null,
         coverImg: null,
+        templateId: null,
         tvEnable: 0,
         tv: null,
         networkEnable: 0,