Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

xgb 1 týždeň pred
rodič
commit
e797ee4d94

+ 9 - 0
src/api/course/userCourse.js

@@ -98,3 +98,12 @@ export function pullOff(courseIds) {
     method: 'post'
   })
 }
+
+// 修改课堂配置
+export function editConfig(data) {
+  return request({
+    url: '/course/userCourse/editConfig',
+    method: 'post',
+    data: data
+  })
+}

+ 4 - 4
src/api/qw/user.js

@@ -67,9 +67,9 @@ export function getQwUserByIds(ids) {
   })
 }
 
-export function addQwUserName(id,companyId) {
+export function addQwUserName(id) {
   return request({
-    url: '/qw/user/syncName/' + id+"/"+companyId,
+    url: '/qw/user/syncName/' + id,
     method: 'post',
   })
 }
@@ -82,9 +82,9 @@ export function addUser(data) {
     data: data
   })
 }
-export function addQwUser(id,companyId) {
+export function addQwUser(id) {
   return request({
-    url: '/qw/user/sync/' + id+"/"+companyId,
+    url: '/qw/user/sync/' + id,
     method: 'post',
   })
 }

+ 59 - 34
src/views/company/companyUser/indexAll.vue

@@ -46,9 +46,6 @@
           <el-col :span="1.5">
             <el-button  plain type="success" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['company:user:edit']">修改</el-button>
           </el-col>
-          <el-col :span="1.5">
-            <el-button  plain type="success" icon="el-icon-edit" size="mini" :disabled="multiple" @click="batchEditRole"v-hasPermi="['company:user:edit']">批量修改角色</el-button>
-          </el-col>
           <el-col :span="1.5">
             <el-button  plain type="danger" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['company:user:remove']">删除</el-button>
           </el-col>
@@ -490,21 +487,38 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="归属部门" prop="deptId">
-              <treeselect v-model="formBindCompany.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="角色" prop="roleIds">
-              <el-select v-model="formBindCompany.roleIds" multiple placeholder="请选择">
-                <el-option v-for="item in roleOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId "></el-option>
+            <el-form-item label="销售公司" prop="companyId">
+              <el-select filterable  v-model="formBindCompany.companyId" placeholder="请选择销售公司"  clearable size="small" @change="formBindCompanyChange">
+                <el-option
+                  v-for="item in companys"
+                  :key="item.companyId"
+                  :label="item.companyName"
+                  :value="item.companyId"
+                />
               </el-select>
             </el-form-item>
           </el-col>
         </el-row>
+
+        <div v-if="formBindCompany.companyId!=null">
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="归属部门" prop="deptId">
+                <treeselect v-model="formBindCompany.deptId" :options="deptOptionsByCompanyId" :show-count="true" placeholder="请选择归属部门" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="角色" prop="roleIds">
+                <el-select v-model="formBindCompany.roleIds" multiple placeholder="请选择">
+                  <el-option v-for="item in roleBindOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId "></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </div>
+
         <el-row>
           <el-col :span="12">
             <el-form-item label="销售区域" prop="addressId">
@@ -742,6 +756,7 @@ export default {
       postOptions: [],
       // 角色选项
       roleOptions: [],
+      roleBindOptions: [],
       userTypeOptions:[
         { "dictLabel": "临时管理员","dictValue": "02"},
         { "dictLabel": "普通用户","dictValue": "01"}
@@ -849,6 +864,9 @@ export default {
       },
       // 表单校验
       bindCompanyRules: {
+        companyId: [
+          { required: true, message: "销售公司不能为空", trigger: "blur" },
+        ],
         deptId: [
           { required: true, message: "归属部门不能为空", trigger: "blur" },
         ],
@@ -984,20 +1002,6 @@ export default {
       });
     },
 
-    // 在 methods 中添加批量修改角色的方法
-    batchEditRole() {
-      if (this.ids.length === 0) {
-        this.$message.warning("请至少选择一个用户");
-        return;
-      }
-      // 获取角色列表数据
-      getUser().then((response) => {
-        this.roleOptions = response.roles;
-        this.batchRoleDialogVisible = true;
-        this.selectedRoleIds = []; // 清空之前的选择
-      });
-    },
-
     // 添加批量角色更新提交方法
     submitBatchRoles() {
       // 验证选择的角色
@@ -1146,6 +1150,7 @@ export default {
         deptId: null,
         addressId: null,
         roleIds: [],
+        companyId: null,
       };
       this.resetForm("formBindCompany");
     },
@@ -1201,12 +1206,10 @@ export default {
     handleBindCompanyUserCode() {
       this.reset();
       this.getTreeselect();
-      getUser().then((response) => {
-        this.postOptions = response.posts;
-        this.roleOptions = response.roles;
-        this.bindCompanyOpen = true;
-        this.title = "创建 新增/绑定销售 的二维码";
-      });
+
+      this.bindCompanyOpen = true;
+      this.title = "创建 新增/绑定销售 的二维码";
+
     },
 
     /** 修改按钮操作 */
@@ -1298,6 +1301,28 @@ export default {
       document.body.removeChild(link);
     },
 
+    formBindCompanyChange(){
+
+
+        if (this.formBindCompany.companyId == null) {
+          return this.$message.warning("请选择公司");
+        }
+
+        this.getTreeselectByCompanyId(this.formBindCompany.companyId);
+
+        addInfo(this.formBindCompany.companyId).then((response) => {
+
+          this.formBindCompany.deptId= null;
+          this.formBindCompany.roleIds=[];
+
+          this.postOptions = response.posts;
+          this.roleBindOptions = response.roles;
+
+
+        });
+
+    },
+
     submitBingCompanyForm: function() {
 
       this.$refs["formBindCompany"].validate((valid) => {

+ 184 - 2
src/views/course/userCourse/index.vue

@@ -169,6 +169,14 @@
             v-hasPermi="['course:userCourse:remove']"
           >删除
           </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            v-if="scope.row.isPrivate === 1"
+            v-has-permi="['course:userCourse:editConfig']"
+            @click="configCourse(scope.row)"
+          >过程页配置
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -275,6 +283,69 @@
       </div>
     </el-dialog>
 
+    <!-- 过程页配置 -->
+    <el-dialog
+      :visible.sync="configDialog.dialogVisible"
+      title="过程页配置"
+      append-to-body
+      width="1200px"
+    >
+      <el-form :model="configDialog.form" :rules="configDialog.rules" ref="configForm" label-width="110px">
+        <el-form-item label="过程页图片" prop="coverImg">
+          <ImageUpload v-model="configDialog.form.coverImg" :height="150" :limit="1" :width="150" type="image"/>
+          <i class="el-icon-warning"/>
+          <span style="color: rgb(153, 169, 191)"> 不配置将使用课程默认图片</span>
+        </el-form-item>
+        <el-form-item label="首播电视台" prop="tvEnable">
+          <el-switch v-model="configDialog.form.tvEnable" active-color="#13ce66"/>
+        </el-form-item>
+        <el-form-item prop="tv" v-if="configDialog.form.tvEnable">
+          <el-input v-model="configDialog.form.tv" clearable></el-input>
+          <i class="el-icon-warning"/>
+          <span style="color: rgb(153, 169, 191)"> 多个首播电视台,请用英文逗号隔开</span>
+        </el-form-item>
+        <el-form-item label="网络播放平台" prop="networkEnable">
+          <el-switch v-model="configDialog.form.networkEnable" active-color="#13ce66"/>
+        </el-form-item>
+        <el-form-item prop="network" v-if="configDialog.form.networkEnable">
+          <el-input v-model="configDialog.form.network" clearable></el-input>
+          <i class="el-icon-warning"/>
+          <span style="color: rgb(153, 169, 191)"> 多个网络播放平台,请用英文逗号隔开</span>
+        </el-form-item>
+        <el-form-item label="制作单位" prop="unitEnable">
+          <el-switch v-model="configDialog.form.unitEnable" active-color="#13ce66"/>
+        </el-form-item>
+        <el-form-item prop="unit" v-if="configDialog.form.unitEnable">
+          <el-input v-model="configDialog.form.unit" clearable></el-input>
+          <i class="el-icon-warning"/>
+          <span style="color: rgb(153, 169, 191)"> 多个制作单位,请用英文逗号隔开</span>
+        </el-form-item>
+        <el-form-item label="专家顾问团队" prop="teamEnable">
+          <el-switch v-model="configDialog.form.teamEnable" active-color="#13ce66"/>
+        </el-form-item>
+        <el-form-item prop="team" v-if="configDialog.form.teamEnable">
+          <el-input v-model="configDialog.form.team" clearable></el-input>
+          <i class="el-icon-warning"/>
+          <span style="color: rgb(153, 169, 191)"> 多个专家顾问,请用英文逗号隔开</span>
+        </el-form-item>
+        <el-form-item label="支持单位" prop="supportEnable">
+          <el-switch v-model="configDialog.form.supportEnable" active-color="#13ce66"/>
+        </el-form-item>
+        <el-form-item prop="support" v-if="configDialog.form.supportEnable">
+          <el-input v-model="configDialog.form.support" clearable></el-input>
+          <i class="el-icon-warning"/>
+          <span style="color: rgb(153, 169, 191)"> 多个支持单位,请用英文逗号隔开</span>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary"
+                   :loading="configDialog.updating"
+                   :disabled="configDialog.updating"
+                   @click="submitConfigForm">确 定</el-button>
+        <el-button @click="cancelConfig">取 消</el-button>
+      </div>
+    </el-dialog>
+
     <el-drawer
       :with-header="false"
       size="75%"
@@ -295,7 +366,8 @@ import {
   updateIsShow,
   copyUserCourse,
   putOn,
-  pullOff, updateUserCourseRedPage
+  pullOff, updateUserCourseRedPage,
+  editConfig
 } from '@/api/course/userCourse'
 
 import {getSelectableRange} from "@/api/qw/sopTemp";
@@ -445,6 +517,41 @@ export default {
         redPacketMoney: [
           {required: true, message: "红包金额不能为空", trigger: "blur"}
         ],
+      },
+      configDialog: {
+        dialogVisible: false,
+        updating: false,
+        form: {
+          id: null,
+          coverImg: null,
+          tvEnable: 0,
+          tv: null,
+          networkEnable: 0,
+          network: null,
+          unitEnable: 0,
+          unit: null,
+          teamEnable: 0,
+          team: null,
+          supportEnable: 0,
+          support: null
+        },
+        rules: {
+          tv: [
+            { required: true, message: '首播电视台不能为空', trigger: 'blur' }
+          ],
+          network: [
+            { required: true, message: '网络播放平台不能为空', trigger: 'blur' }
+          ],
+          unit: [
+            { required: true, message: '制作单位不能为空', trigger: 'blur' }
+          ],
+          team: [
+            { required: true, message: '专家顾问团队不能为空', trigger: 'blur' }
+          ],
+          support: [
+            { required: true, message: '支持单位不能为空', trigger: 'blur' }
+          ],
+        }
       }
     };
   },
@@ -802,7 +909,82 @@ export default {
         this.msgSuccess("下架成功");
       }).catch(function () {
       });
-    }
+    },
+    configCourse(row) {
+      if (row.configJson) {
+        this.configDialog.form = {
+          tvEnable: 0,
+          networkEnable: 0,
+          unitEnable: 0,
+          teamEnable: 0,
+          supportEnable: 0,
+          ...JSON.parse(row.configJson)
+        }
+      }
+      this.configDialog.form.id = row.courseId
+      this.configDialog.dialogVisible = true;
+      this.configDialog.updating = false
+    },
+    submitConfigForm() {
+      this.$refs['configForm'].validate(valid => {
+        if (!valid) {
+          this.msgError('请完善配置内容')
+          return
+        }
+
+        if (this.configDialog.updating) {
+          return
+        }
+        this.configDialog.updating = true
+
+        const content = {
+          coverImg: this.configDialog.form.coverImg,
+          tvEnable: this.configDialog.form.tvEnable,
+          tv: this.configDialog.form.tv?.replace(",",","),
+          networkEnable: this.configDialog.form.networkEnable,
+          network: this.configDialog.form.network?.replace(",",","),
+          unitEnable: this.configDialog.form.unitEnable,
+          unit: this.configDialog.form.unit?.replace(",",","),
+          teamEnable: this.configDialog.form.teamEnable,
+          team: this.configDialog.form.team?.replace(",",","),
+          supportEnable: this.configDialog.form.supportEnable,
+          support: this.configDialog.form.support?.replace(",",","),
+        }
+
+        const params = {
+          id: this.configDialog.form.id,
+          configJson: JSON.stringify(content)
+        }
+
+        editConfig(params).then(() => {
+          this.msgSuccess('修改成功')
+          this.configDialog.dialogVisible = false;
+          this.getList()
+        }).finally(() => {
+          setTimeout(() => {
+            this.configDialog.updating = false
+          }, 500)
+        })
+      })
+    },
+    cancelConfig() {
+      this.configDialog.form = {
+        id: null,
+        coverImg: null,
+        tvEnable: 0,
+        tv: null,
+        networkEnable: 0,
+        network: null,
+        unitEnable: 0,
+        unit: null,
+        teamEnable: 0,
+        team: null,
+        supportEnable: 0,
+        support: null
+      }
+      this.resetForm('configForm')
+      this.configDialog.dialogVisible = false;
+    },
   }
 };
 </script>