瀏覽代碼

已完成直播管理功能

朱鑫波 3 年之前
父節點
當前提交
4b798a7725
共有 3 個文件被更改,包括 270 次插入109 次删除
  1. 1 1
      package.json
  2. 84 39
      src/views/trader/accountList.vue
  3. 185 69
      src/views/trader/index.vue

+ 1 - 1
package.json

@@ -39,7 +39,7 @@
     "@riophae/vue-treeselect": "0.4.0",
     "axios": "0.24.0",
     "clipboard": "2.0.8",
-    "core-js": "3.19.1",
+    "core-js": "^3.23.1",
     "cos-js-sdk-v5": "^1.3.8",
     "echarts": "4.9.0",
     "element-ui": "2.15.8",

+ 84 - 39
src/views/trader/accountList.vue

@@ -58,7 +58,7 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="投放类型" prop="putType">
+      <!-- <el-form-item label="投放类型" prop="putType">
         <el-select
           v-model="queryParams.putType"
           placeholder="请选择投放类型"
@@ -72,7 +72,7 @@
             :value="item.value"
           />
         </el-select>
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item label="运营" prop="operatorLeaderId">
         <el-select
           v-model="queryParams.operatorLeaderId"
@@ -163,7 +163,7 @@
           {{ scope.row.accountType | accountTypeChinese }}
         </template>
       </el-table-column>
-      <el-table-column label="投放类型" align="center" prop="putType">
+      <!-- <el-table-column label="投放类型" align="center" prop="putType">
         <template slot-scope="scope">
           <div v-if="!!scope.row.putType">
             <span v-for="(item, index) in scope.row.putType.split(',')"
@@ -174,7 +174,7 @@
             >
           </div>
         </template>
-      </el-table-column>
+      </el-table-column> -->
       <el-table-column
         label="运营负责人"
         align="center"
@@ -297,7 +297,7 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="投放类型" prop="putType">
+        <!-- <el-form-item label="投放类型" prop="putType">
           <el-select
             v-model="form.putType"
             placeholder="请选择投放类型"
@@ -312,7 +312,7 @@
               :value="item.value"
             />
           </el-select>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="运营负责人" prop="operatorLeaderId">
           <el-select
             v-model="form.operatorLeaderId"
@@ -457,6 +457,7 @@
             v-model="formBroadcast.traderId"
             placeholder="请选择操盘手"
             clearable
+            multiple
             value-key="value"
             style="width: 240px"
           >
@@ -473,6 +474,7 @@
             v-model="formBroadcast.centralControlId"
             placeholder="请选择中控"
             clearable
+            multiple
             value-key="value"
             style="width: 240px"
           >
@@ -489,6 +491,7 @@
             v-model="formBroadcast.fieldControlId"
             placeholder="请选择场控"
             clearable
+            multiple
             value-key="value"
             style="width: 240px"
           >
@@ -506,6 +509,7 @@
             v-model="formBroadcast.contentControlId"
             placeholder="请选择内容"
             clearable
+            multiple
             value-key="value"
             style="width: 240px"
           >
@@ -522,6 +526,7 @@
             v-model="formBroadcast.inputControlId"
             placeholder="请选择投流"
             clearable
+            multiple
             value-key="value"
             style="width: 240px"
           >
@@ -628,6 +633,7 @@ export default {
         accountTypeList: [
           { value: "cljn", label: "磁力金牛" },
           { value: "cljnPhone", label: "磁力金牛移动端" },
+          { value: "cp", label: "操盘" },
         ], //账户类型下拉
         putTypeList: [
           { value: "cljn", label: "磁力金牛" },
@@ -733,7 +739,11 @@ export default {
           { required: true, message: "直播级别不能为空", trigger: "change" },
         ],
         traderId: [
-          { required: true, message: "操盘手不能为空", trigger: "blur" },
+          {
+            required: true,
+            message: "操盘手不能为空",
+            trigger: "change",
+          },
         ],
       },
       // 分配销售展示列表
@@ -753,6 +763,7 @@ export default {
       const statusMap = {
         cljn: "磁力金牛",
         cljnPhone: "磁力金牛移动端",
+        cp: "操盘",
       };
       return statusMap[status];
     },
@@ -944,7 +955,7 @@ export default {
           this.$set(this.form, "ksId", data.ksId);
           this.$set(this.form, "ksName", data.ksName);
           this.$set(this.form, "accountType", data.accountType);
-          this.$set(this.form, "putType", data.putType.split(","));
+          // this.$set(this.form, "putType", data.putType.split(","));
           this.$set(this.form, "saleLeaderId", {
             value: +data.saleLeaderId,
             label: data.saleLeader,
@@ -974,6 +985,10 @@ export default {
     handleAddbroadcast(item) {
       this.openAllocation = true;
       this.ksInfo = item;
+
+      setTimeout(() => {
+        this.$refs.formBroadcast.clearValidate();
+      }, 0);
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -1031,6 +1046,7 @@ export default {
     submitFormBroadcast: function () {
       this.$refs["formBroadcast"].validate((valid) => {
         if (valid) {
+          console.log(this.formBroadcast);
           this.confirmLoading = true;
           let formData = {};
           formData.createrId = this.userId;
@@ -1047,37 +1063,66 @@ export default {
 
           formData.liveLevel = this.formBroadcast.liveLevel;
           formData.anchor = this.formBroadcast.anchor;
-          formData.traderId = !!this.formBroadcast.traderId
-            ? this.formBroadcast.traderId.value
-            : null;
-          formData.trader = !!this.formBroadcast.traderId
-            ? this.formBroadcast.traderId.label
-            : null;
 
-          formData.centralControlId = !!this.formBroadcast.centralControlId
-            ? this.formBroadcast.centralControlId.value
-            : null;
-          formData.centralController = !!this.formBroadcast.centralControlId
-            ? this.formBroadcast.centralControlId.label
-            : null;
-          formData.fieldControlId = !!this.formBroadcast.fieldControlId
-            ? this.formBroadcast.fieldControlId.value
-            : null;
-          formData.fieldController = !!this.formBroadcast.fieldControlId
-            ? this.formBroadcast.fieldControlId.label
-            : null;
-          formData.contentControlId = !!this.formBroadcast.contentControlId
-            ? this.formBroadcast.contentControlId.value
-            : null;
-          formData.contentController = !!this.formBroadcast.contentControlId
-            ? this.formBroadcast.contentControlId.label
-            : null;
-          formData.inputControlId = !!this.formBroadcast.inputControlId
-            ? this.formBroadcast.inputControlId.value
-            : null;
-          formData.inputController = !!this.formBroadcast.inputControlId
-            ? this.formBroadcast.inputControlId.label
-            : null;
+          formData.trader =
+            this.formBroadcast.traderId.length > 0
+              ? JSON.stringify(
+                  this.formBroadcast.traderId.map((item) => {
+                    return {
+                      id: item.value,
+                      name: item.label,
+                    };
+                  })
+                )
+              : "[]";
+
+          formData.centralController =
+            this.formBroadcast.centralControlId.length > 0
+              ? JSON.stringify(
+                  this.formBroadcast.centralControlId.map((item) => {
+                    return {
+                      id: item.value,
+                      name: item.label,
+                    };
+                  })
+                )
+              : "[]";
+
+          formData.fieldController =
+            this.formBroadcast.fieldControlId.length > 0
+              ? JSON.stringify(
+                  this.formBroadcast.fieldControlId.map((item) => {
+                    return {
+                      id: item.value,
+                      name: item.label,
+                    };
+                  })
+                )
+              : "[]";
+
+          formData.contentController =
+            this.formBroadcast.contentControlId.length > 0
+              ? JSON.stringify(
+                  this.formBroadcast.contentControlId.map((item) => {
+                    return {
+                      id: item.value,
+                      name: item.label,
+                    };
+                  })
+                )
+              : "[]";
+
+          formData.inputController =
+            this.formBroadcast.inputControlId.length > 0
+              ? JSON.stringify(
+                  this.formBroadcast.inputControlId.map((item) => {
+                    return {
+                      id: item.value,
+                      name: item.label,
+                    };
+                  })
+                )
+              : "[]";
 
           addBroadcast(formData)
             .then((res) => {
@@ -1106,7 +1151,7 @@ export default {
           formData.accountId = this.form.accountId;
           formData.accountName = this.form.accountName;
           formData.accountType = this.form.accountType;
-          formData.putType = this.form.putType.join();
+          // formData.putType = this.form.putType.join();
           formData.designerLeaderId = !!this.form.designerLeaderId
             ? this.form.designerLeaderId.value
             : undefined;

+ 185 - 69
src/views/trader/index.vue

@@ -105,13 +105,7 @@
           plain
           icon="el-icon-document-add"
           size="mini"
-          @click="
-            openAllocation = true;
-            edit = false;
-            ids = null;
-            confirmLoading = false;
-            formBroadcast = {};
-          "
+          @click="addNew"
           >新增直播</el-button
         >
       </el-col>
@@ -147,24 +141,47 @@
       </el-table-column>
       <el-table-column label="操盘手" align="center" prop="trader">
         <template slot-scope="scope">
-          <div v-if="!!scope.row.trader">
-            {{ scope.row.trader }}
+          <div v-if="!!scope.row.trader&&scope.row.trader!='[]'">
+            <span v-for="(item, index) in JSON.parse(scope.row.trader)">
+              {{ item.name
+              }}{{
+                index == JSON.parse(scope.row.trader).length - 1 ? "" : ","
+              }}
+            </span>
           </div>
           <div v-else>-</div>
         </template>
       </el-table-column>
       <el-table-column label="中控" align="center" prop="centralController">
         <template slot-scope="scope">
-          <div v-if="!!scope.row.centralController">
-            {{ scope.row.centralController }}
+          <div v-if="!!scope.row.centralController&&scope.row.centralController!='[]'">
+            <span
+              v-for="(item, index) in JSON.parse(scope.row.centralController)"
+            >
+              {{ item.name
+              }}{{
+                index == JSON.parse(scope.row.centralController).length - 1
+                  ? ""
+                  : ","
+              }}
+            </span>
           </div>
           <div v-else>-</div>
         </template>
       </el-table-column>
       <el-table-column label="场控" align="center" prop="fieldController">
         <template slot-scope="scope">
-          <div v-if="!!scope.row.fieldController">
-            {{ scope.row.fieldController }}
+          <div v-if="!!scope.row.fieldController&&scope.row.fieldController!='[]'">
+            <span
+              v-for="(item, index) in JSON.parse(scope.row.fieldController)"
+            >
+              {{ item.name
+              }}{{
+                index == JSON.parse(scope.row.fieldController).length - 1
+                  ? ""
+                  : ","
+              }}
+            </span>
           </div>
           <div v-else>-</div>
         </template>
@@ -172,8 +189,17 @@
 
       <el-table-column label="内容" align="center" prop="contentController">
         <template slot-scope="scope">
-          <div v-if="!!scope.row.contentController">
-            {{ scope.row.contentController }}
+          <div v-if="!!scope.row.contentController&&scope.row.contentController!='[]'">
+            <span
+              v-for="(item, index) in JSON.parse(scope.row.contentController)"
+            >
+              {{ item.name
+              }}{{
+                index == JSON.parse(scope.row.contentController).length - 1
+                  ? ""
+                  : ","
+              }}
+            </span>
           </div>
           <div v-else>-</div>
         </template>
@@ -181,8 +207,17 @@
 
       <el-table-column label="投流" align="center" prop="inputController">
         <template slot-scope="scope">
-          <div v-if="!!scope.row.inputController">
-            {{ scope.row.inputController }}
+          <div v-if="!!scope.row.inputController&&scope.row.inputController!='[]'">
+            <span
+              v-for="(item, index) in JSON.parse(scope.row.inputController)"
+            >
+              {{ item.name
+              }}{{
+                index == JSON.parse(scope.row.inputController).length - 1
+                  ? ""
+                  : ","
+              }}
+            </span>
           </div>
           <div v-else>-</div>
         </template>
@@ -193,7 +228,11 @@
 
       <el-table-column label="GMV完成度" align="center" prop="gmvRoi">
       </el-table-column>
-      <el-table-column label="本次上传文件/图片数量" align="center" prop="gmvRoi">
+      <el-table-column
+        label="本次上传文件/图片数量"
+        align="center"
+        prop="gmvRoi"
+      >
         <template slot-scope="scope">
           <div>
             {{ scope.row.uploadFileCount }}/{{ scope.row.uploadPictureCount }}
@@ -389,6 +428,7 @@
             v-model="formBroadcast.traderId"
             placeholder="请选择操盘手"
             clearable
+            multiple
             value-key="value"
             style="width: 240px"
           >
@@ -405,6 +445,7 @@
             v-model="formBroadcast.centralControlId"
             placeholder="请选择中控"
             clearable
+            multiple
             value-key="value"
             style="width: 240px"
           >
@@ -421,6 +462,7 @@
             v-model="formBroadcast.fieldControlId"
             placeholder="请选择场控"
             clearable
+            multiple
             value-key="value"
             style="width: 240px"
           >
@@ -438,6 +480,7 @@
             v-model="formBroadcast.contentControlId"
             placeholder="请选择内容"
             clearable
+            multiple
             value-key="value"
             style="width: 240px"
           >
@@ -454,6 +497,7 @@
             v-model="formBroadcast.inputControlId"
             placeholder="请选择投流"
             clearable
+            multiple
             value-key="value"
             style="width: 240px"
           >
@@ -682,7 +726,7 @@ export default {
           { required: true, message: "直播级别不能为空", trigger: "change" },
         ],
         traderId: [
-          { required: true, message: "操盘手不能为空", trigger: "blur" },
+          { required: true, message: "操盘手不能为空", trigger: "change" },
         ],
       },
       // 分配销售展示列表
@@ -900,6 +944,16 @@ export default {
         this.title = "上传复盘数据";
       }
     },
+    addNew() {
+      this.openAllocation = true;
+      this.edit = false;
+      this.ids = null;
+      this.confirmLoading = false;
+      this.formBroadcast = {};
+      setTimeout(() => {
+        this.$refs.formBroadcast.clearValidate();
+      }, 0);
+    },
     /** 编辑直播 */
     handleAddbroadcast(item) {
       getForEdit({ id: item.id })
@@ -923,29 +977,62 @@ export default {
           this.$set(this.formBroadcast, "liveTime", data.liveTime.split("~"));
           this.$set(this.formBroadcast, "liveLevel", data.liveLevel);
           this.$set(this.formBroadcast, "anchor", data.anchor);
-          this.$set(this.formBroadcast, "traderId", {
-            value: +data.traderId,
-            label: data.trader,
-          });
-          this.$set(this.formBroadcast, "centralControlId", {
-            value: +data.centralControlId,
-            label: data.centralController,
-          });
+          this.$set(
+            this.formBroadcast,
+            "traderId",
+            JSON.parse(data.trader).map((item) => {
+              return {
+                value: +item.id,
+                label: item.name,
+              };
+            })
+          );
+          this.$set(
+            this.formBroadcast,
+            "centralControlId",
+            JSON.parse(data.centralController).map((item) => {
+              return {
+                value: +item.id,
+                label: item.name,
+              };
+            })
+          );
 
-          this.$set(this.formBroadcast, "fieldControlId", {
-            value: +data.fieldControlId,
-            label: data.fieldController,
-          });
+          this.$set(
+            this.formBroadcast,
+            "fieldControlId",
+            JSON.parse(data.fieldController).map((item) => {
+              return {
+                value: +item.id,
+                label: item.name,
+              };
+            })
+          );
 
-          this.$set(this.formBroadcast, "contentControlId", {
-            value: +data.contentControlId,
-            label: data.contentController,
-          });
-          this.$set(this.formBroadcast, "inputControlId", {
-            value: +data.inputControlId,
-            label: data.inputController,
-          });
+          this.$set(
+            this.formBroadcast,
+            "contentControlId",
+            JSON.parse(data.contentController).map((item) => {
+              return {
+                value: +item.id,
+                label: item.name,
+              };
+            })
+          );
+          this.$set(
+            this.formBroadcast,
+            "inputControlId",
+            JSON.parse(data.inputController).map((item) => {
+              return {
+                value: +item.id,
+                label: item.name,
+              };
+            })
+          );
           this.$set(this.formBroadcast, "goalGmv", data.goalGmv);
+          setTimeout(() => {
+            this.$refs.formBroadcast.clearValidate();
+          }, 0);
         })
         .catch((error) => {});
     },
@@ -1037,37 +1124,66 @@ export default {
 
           formData.liveLevel = this.formBroadcast.liveLevel;
           formData.anchor = this.formBroadcast.anchor;
-          formData.traderId = !!this.formBroadcast.traderId
-            ? this.formBroadcast.traderId.value
-            : null;
-          formData.trader = !!this.formBroadcast.traderId
-            ? this.formBroadcast.traderId.label
-            : null;
 
-          formData.centralControlId = !!this.formBroadcast.centralControlId
-            ? this.formBroadcast.centralControlId.value
-            : null;
-          formData.centralController = !!this.formBroadcast.centralControlId
-            ? this.formBroadcast.centralControlId.label
-            : null;
-          formData.fieldControlId = !!this.formBroadcast.fieldControlId
-            ? this.formBroadcast.fieldControlId.value
-            : null;
-          formData.fieldController = !!this.formBroadcast.fieldControlId
-            ? this.formBroadcast.fieldControlId.label
-            : null;
-          formData.contentControlId = !!this.formBroadcast.contentControlId
-            ? this.formBroadcast.contentControlId.value
-            : null;
-          formData.contentController = !!this.formBroadcast.contentControlId
-            ? this.formBroadcast.contentControlId.label
-            : null;
-          formData.inputControlId = !!this.formBroadcast.inputControlId
-            ? this.formBroadcast.inputControlId.value
-            : null;
-          formData.inputController = !!this.formBroadcast.inputControlId
-            ? this.formBroadcast.inputControlId.label
-            : null;
+          formData.trader =
+            this.formBroadcast.traderId.length > 0
+              ? JSON.stringify(
+                  this.formBroadcast.traderId.map((item) => {
+                    return {
+                      id: item.value,
+                      name: item.label,
+                    };
+                  })
+                )
+              : "[]";
+
+          formData.centralController =
+            this.formBroadcast.centralControlId.length > 0
+              ? JSON.stringify(
+                  this.formBroadcast.centralControlId.map((item) => {
+                    return {
+                      id: item.value,
+                      name: item.label,
+                    };
+                  })
+                )
+              : "[]";
+
+          formData.fieldController =
+            this.formBroadcast.fieldControlId.length > 0
+              ? JSON.stringify(
+                  this.formBroadcast.fieldControlId.map((item) => {
+                    return {
+                      id: item.value,
+                      name: item.label,
+                    };
+                  })
+                )
+              : "[]";
+
+          formData.contentController =
+            this.formBroadcast.contentControlId.length > 0
+              ? JSON.stringify(
+                  this.formBroadcast.contentControlId.map((item) => {
+                    return {
+                      id: item.value,
+                      name: item.label,
+                    };
+                  })
+                )
+              : "[]";
+
+          formData.inputController =
+            this.formBroadcast.inputControlId.length > 0
+              ? JSON.stringify(
+                  this.formBroadcast.inputControlId.map((item) => {
+                    return {
+                      id: item.value,
+                      name: item.label,
+                    };
+                  })
+                )
+              : "[]";
 
           if (!this.ids) {
             addBroadcast(formData)