From e921f14f600ed33bb24c921968a048a0b39e882c Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期三, 24 十一月 2021 19:05:27 +0800
Subject: [PATCH] 恢复测试前的代码
---
src/pages/shuohuangMonitorAnalyze/components/taskManage.vue | 524 +++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 410 insertions(+), 114 deletions(-)
diff --git a/src/pages/shuohuangMonitorAnalyze/components/taskManage.vue b/src/pages/shuohuangMonitorAnalyze/components/taskManage.vue
index 9374856..a3d85f7 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/taskManage.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/taskManage.vue
@@ -7,7 +7,7 @@
</div>
<div class="body">
<div class="flex-box">
- <div>
+ <!-- <div>
<el-date-picker
v-model="videoSearchTime"
type="datetimerange"
@@ -18,59 +18,122 @@
end-placeholder="缁撴潫鏃ユ湡"
align="right"
></el-date-picker>
+ </div> -->
+ <div>
+ <el-input
+ class="keyword-input"
+ v-model="keyword1"
+ placeholder="璇疯緭鍏ユ満杞﹀彿"
+ size="small"
+ style="margin: 0 10px"
+ clearable
+ ></el-input>
</div>
<div>
<el-input
class="keyword-input"
- v-model="videoListSearchWord"
- placeholder="璇疯緭鍏ユ満杞﹀彿锛屽涓敤','鍒嗛殧"
- size="mini"
- style="margin: 0 10px;"
+ v-model="keyword2"
+ placeholder="璇疯緭鍏ヨ溅娆�"
+ size="small"
+ style="margin: 0 10px"
+ clearable
></el-input>
</div>
- <div></div>
+ <div>
+ <el-input
+ class="keyword-input"
+ v-model="keyword3"
+ placeholder="璇疯緭鍏ュ徃鏈哄鍚�"
+ size="small"
+ style="margin: 0 10px"
+ clearable
+ ></el-input>
+ </div>
<el-button
type="primary"
- @click="searchVideoList"
- size="mini"
- style="margin-right:10px;"
- >鎼滅储</el-button>
- <el-checkbox v-model="isShowUndistributedOnly">浠呮樉绀烘湭鍒嗛厤</el-checkbox>
+ @click="renderVideoTable"
+ size="small"
+ style="margin-right: 10px"
+ >鎼滅储</el-button
+ >
+ <el-checkbox v-model="notAssignedOnly" @change="renderVideoTable">浠呮樉绀烘湭鍒嗛厤</el-checkbox>
</div>
<div class="video-list">
- <el-collapse v-model="actCollapseName">
- <el-collapse-item :name="trainNo.id" v-for="trainNo in trainNoList" :key="trainNo.id">
- <template slot="title">
- <div>
- <el-checkbox v-model="trainNo.checked" style="padding-right:10px;"></el-checkbox>
- <span>{{trainNo.no}}({{trainNo.videos.length}})</span>
+ <el-checkbox-group v-model="trainNochecked">
+ <el-collapse v-model="actCollapseName">
+ <el-collapse-item
+ :name="vkey"
+ v-for="(v, vkey, i) in videoPackageList"
+ :key="i"
+ >
+ <template slot="title">
+ <div>
+ <el-checkbox
+ :label="vkey"
+ style="padding-right: 10px"
+ ></el-checkbox>
+ <span>{{ vkey }}({{ v.length }})</span>
+ </div>
+ </template>
+ <div class="video-detail" v-for="video in v" :key="video.ID">
+ <i class="el-icon-film" style="margin-left: 20px"></i>
+ <span style="padding-left: 10px">{{
+ video.VideoName
+ }}</span>
</div>
- </template>
- <div v-for="video in trainNo.videos" :key="video.id">
- <i class="el-icon-film" style="margin-left: 20px;"></i>
- <span style="padding-left: 10px;">{{video.name}}</span>
- </div>
- </el-collapse-item>
- </el-collapse>
+ </el-collapse-item>
+ </el-collapse>
+ </el-checkbox-group>
+ <!-- <el-pagination
+ @size-change="handleTrainNoSizeChange"
+ @current-change="handleTrainNoCurChange"
+ :current-page.sync="trainNoCurPage"
+ :page-size="trainNoPageSize"
+ :page-sizes="trainNoPageSizes"
+ layout="total,sizes, prev, pager, next"
+ :total="trainNoTotal"
+ ></el-pagination> -->
</div>
</div>
</div>
<div class="top-right partment">
<div class="header">
+ <el-checkbox
+ v-model="isAllCheck"
+ :indeterminate="isIndeterminate"
+ @change="handleCheckAllChange"
+ ></el-checkbox>
<div class="title">浜哄憳鍒楄〃</div>
+ <el-input
+ size="small"
+ @input="searchName"
+ v-model="inputName"
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ clearable
+ ></el-input>
</div>
<div class="body">
- <div class="flex-box">
+ <!-- <div class="flex-box">
<label>閮ㄩ棬:</label>
- <el-select placeholder="鍏ㄩ儴" size="mini" style="width: 200px;margin-right: 10px;">
- <el-option></el-option>
- </el-select>
- <el-button type="primary" size="mini" @click="searchPerson">鎼滅储</el-button>
- </div>
+ <span class="checked-org" :class="{'null':!checkedOrg.id}">{{checkedOrg.label||'鍏ㄩ儴'}}</span>
+ <el-button type="primary" size="mini" @click="selOrg">閫夋嫨閮ㄩ棬</el-button>
+ </div> -->
<div class="person-list">
- <div class="person" v-for="person in personList" :key="person.id">
- <el-checkbox v-model="person.personChecked">{{person.name}}</el-checkbox>
- </div>
+ <el-checkbox-group
+ v-model="memberChecked"
+ @change="handleCheckedCitiesChange"
+ >
+ <div class="person" v-for="person in personList" :key="person.ID">
+ <el-checkbox :label="person.ID">{{ person.Name }}</el-checkbox>
+ </div>
+ </el-checkbox-group>
+ <el-button
+ v-show="memberChecked.length && trainNochecked.length"
+ type="primary"
+ @click="toAddAssignList"
+ size="small"
+ >鍔犲叆寰呭垎閰嶅垪琛�</el-button
+ >
</div>
</div>
</div>
@@ -80,125 +143,313 @@
<div class="header">
<div class="title">浠诲姟鍒楄〃</div>
<div class="header-right flex-box">
- <el-radio-group v-model="taskType" size="mini">
+ <el-radio-group v-model="taskType" size="mini" @change="renderTaskTable">
<el-radio-button label="1">寰呭垎閰�</el-radio-button>
<el-radio-button label="2">宸插垎閰�</el-radio-button>
</el-radio-group>
<el-input
class="keyword-input"
- placeholder="璇疯緭鍏�"
+ placeholder="鎼滅储鍏抽敭瀛�"
v-model="keyWordOfTask"
size="mini"
- style="margin-left: 10px;"
+ style="margin-left: 10px"
+ @input="reRenderWhenClear"
+ clearable
>
- <el-button slot="append" icon="el-icon-search" @click="searchTask"></el-button>
+ <el-button
+ slot="append"
+ icon="el-icon-search"
+ @click="searchKeyword"
+ ></el-button>
</el-input>
</div>
</div>
- <div class="body table-area">
+ <div class="table-area">
<div class="actions">
- <el-button type="primary" size="small" @click="distributeTask">鍒嗛厤浠诲姟</el-button>
+ <el-button
+ type="primary"
+ size="small"
+ @click="distributeTask"
+ v-if="taskType == 1"
+ >鍒嗛厤浠诲姟</el-button
+ >
</div>
- <el-table class="thbg" :data="taskTableData" ref="elTable">
- <el-table-column type="expand">
- <template slot-scope="props">
- <div class="video-item" v-for="video in props.videos" :key="video.id">{{video.name}}</div>
- </template>
- </el-table-column>
- <el-table-column prop="trainNo" label="鏈鸿溅鍙�"></el-table-column>
+ <el-table
+ class="thbg"
+ :data="taskTableData"
+ v-if="taskTableData"
+ ref="elTable"
+ @selection-change="taskTableSelection"
+ v-loading
+ >
+ <el-table-column
+ v-if="taskType == 1"
+ type="selection"
+ width="55"
+ ></el-table-column>
+ <el-table-column prop="Title" label="鏈鸿溅鍙�"></el-table-column>
<el-table-column label="瑙嗛鏁伴噺">
<template slot-scope="scope">
- <div>{{scope.row.videos.length}}</div>
+ <div>{{ scope.row.VideoList.length }}</div>
</template>
</el-table-column>
- <el-table-column prop="person" label="鍒嗛厤浜�"></el-table-column>
- <el-table-column prop="time" label="鍒嗛厤鏃堕棿"></el-table-column>
- <el-table-column prop="handle" label="澶勭悊浜�"></el-table-column>
+ <el-table-column
+ prop="DistributionUser"
+ label="鍒嗛厤浜�"
+ ></el-table-column>
+ <el-table-column
+ prop="DistributionDate"
+ label="鍒嗛厤鏃堕棿"
+ ></el-table-column>
+ <el-table-column
+ prop="HandlingUsers"
+ label="澶勭悊浜�"
+ ></el-table-column>
<el-table-column label="鎿嶄綔">
<template slot-scope="scope">
<div class="operation">
- <span @click="cancelDistribute(scope.row)">鍙栨秷鍒嗛厤/鎸囨淳</span>
- <span @click="toggleCollapse(scope.row)">鏌ョ湅/闅愯棌杞︽</span>
+ <span
+ @click="cancelDistribute(scope.row)"
+ v-show="taskType == 1"
+ >鍙栨秷鍒嗛厤</span
+ >
+ <span
+ @click="cancelAssign(scope.row)"
+ v-show="taskType == 2"
+ >鍙栨秷鎸囨淳</span
+ >
+ <!-- <span @click="toggleCollapse(scope.row)">鏌ョ湅/闅愯棌杞︽</span> -->
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column type="expand">
+ <template slot-scope="scope">
+ <div
+ class="video-item"
+ v-for="video in scope.row.VideoList"
+ :key="video.ID"
+ >
+ {{ video.VideoName }}
</div>
</template>
</el-table-column>
</el-table>
</div>
</div>
+ <!-- <el-dialog :visible="orgTreeDialogVisible">
+ <div>
+ <el-tree
+ :data="organizeData"
+ node-key="id"
+ default-expand-all
+ @node-click="checkOrgNode"
+ :expand-on-click-node="false"
+ :check-on-click-node="true"
+ :highlight-current="true"
+ ></el-tree>
+ <div slot="footer" class="btns">
+ <el-button size="small" @click="orgTreeDialogVisible = false"
+ >鍙栨秷</el-button
+ >
+ <el-button size="small" type="primary" @click="searchMemberByOrg"
+ >纭畾</el-button
+ >
+ </div>
+ </div>
+ </el-dialog> -->
</div>
</template>
<script>
+import {
+ getOrganizeTree,
+ getMemberByOrg,
+ getVideoListBySearch,
+ addToAssignList,
+ getTaskList,
+ distributeTask,
+ cancelMission,cancelAssign,
+} from "@/api/shuohuang";
export default {
- data () {
+ data() {
return {
- taskType: '1',
- keyWordOfTask: '',
- videoSearchTime: [],
- pickerOptions: {
- shortcuts: [{
- text: '浠婂ぉ',
- onClick (picker) {
- const end = new Date();
- const start = new Date();
- start.setHours(0, 0, 0);
- picker.$emit('pick', [start, end]);
- }
- }, {
- text: '鏄ㄥぉ',
- onClick (picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24);
- start.setHours(0, 0, 0);
- end.setTime(end.getTime() - 3600 * 1000 * 24);
- end.setHours(23, 59, 59);
- picker.$emit('pick', [start, end]);
- }
- }, {
- text: '杩戜竴鍛�',
- onClick (picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
- //start.setHours(0,0,0);
- picker.$emit('pick', [start, end]);
- }
- }]
- },
+ isAllCheck: false,
+ taskType: "1",
+ keyWordOfTask: "",
isShowUndistributedOnly: false,
- trainNoList: [
- { no: 'SS4B115', id: 'SS4B115', videos: [{ id: 'SS4B115', name: 'SS4B115_06_B鑺備簩绔徃鏈哄_20201115_091500.mp4' }, { id: 'SS4B116', name: 'SS4B116_06_B鑺備簩绔徃鏈哄_20201115_091500.mp4' }] },
- { no: 'SS5B115', id: 'SS5B115', videos: [{ id: 'SS5B116', name: 'SS5B116_06_B鑺備簩绔徃鏈哄_20201115_091500.mp4' }] }
- ],
- videoListSearchWord: '',
- actCollapseName: '',
- username: '',
- personList: [
- { name: '寮犱笁', id: 'zs' },
- { name: '鏉庢柉', id: 'ls' }
- ],
+ videoPackageList: {},
+ trainNochecked: [],
+ trainNoTotal: 0,
+ keyword1: "",
+ keyword2: "",
+ keyword3: "",
+ actCollapseName: "",
+ personList: [],
+ memberChecked: [],
taskTableData: [],
- }
+ taskVideoChecked: [],
+ notAssignedOnly: false,
+ isIndeterminate: false,
+ inputName: "",
+ };
},
- mounted () {
-
+ mounted() {
+ // this.getOrganizeTreeData();
+ this.refreshAll();
},
methods: {
- distributeTask () {
-
+ reRenderWhenClear(val){
+ if (val.trim() == "") {
+ this.renderTaskTable()
+ }
},
- searchVideoList () {
-
+ searchName(val) {
+ if (val == "") {
+ this.searchMemberByOrg();
+ }
+ if (val.trim() == "") {
+ return;
+ }
+ this.personList = this.personList.filter((item) => {
+ return item.Name.indexOf(val) > -1;
+ });
},
- searchPerson () {
-
+ handleCheckAllChange(val) {
+ let arr = [];
+ this.personList.forEach((item) => {
+ arr.push(item.ID);
+ });
+ this.memberChecked = val ? arr : [];
+ this.isIndeterminate = false;
},
- searchTask () {
+ handleCheckedCitiesChange(value) {
+ let checkedCount = value.length;
+ this.isAllCheck = checkedCount === this.personList.length;
+ this.isIndeterminate =
+ checkedCount > 0 && checkedCount < this.personList.length;
+ },
+ cancelDistribute(row) {
+ let arr = row.VideoList.map(x => x.ID);
+ cancelMission({ VideoIDs: arr }).then((res) => {
+ if (res.success) {
+ this.$notify({
+ type: "success",
+ message: res.msg,
+ });
+ this.refreshAll();
+ }
+ });
+ },
+ cancelAssign(row) {
+ let arr = row.VideoList.map(x => x.ID);
+ cancelAssign({ VideoIDs: arr }).then((res) => {
+ if (res.success) {
+ this.$notify({
+ type: "success",
+ message: res.msg,
+ });
+ this.refreshAll();
+ }
+ });
+ },
+ searchKeyword() {
+ const val = this.keyWordOfTask
+ this.taskTableData = this.taskTableData.filter((item) => {
+ const b1 = item.DistributionUser.indexOf(val) > -1;
+ const b2 = item.HandlingUsers.indexOf(val) > -1;
+ const b3 = item.Title.indexOf(val) > -1;
+ return b1 || b2 || b3;
+ });
+ },
+ refreshAll() {
+ this.trainNochecked = [];
+ this.checkedOrg = {};
+ this.memberChecked = [];
+ this.searchMemberByOrg();
+ this.renderVideoTable();
+ this.renderTaskTable();
+ },
+ taskTableSelection(val) {
+ let arr = val.map((item) => item.VideoList.map((x) => x.ID));
+ this.taskVideoChecked = arr;
+ },
+ renderTaskTable() {
+ let _this = this;
+ getTaskList({
+ Status: this.taskType,
+ }).then((res) => {
+ _this.taskTableData = res.data;
+ });
+ },
+ renderVideoTable() {
+ let _this = this;
+ getVideoListBySearch({
+ CarNumber: this.keyword1,
+ TrainNumber: this.keyword2,
+ DriverName: this.keyword3,
+ notAssignedOnly: this.notAssignedOnly,
+ }).then((res) => {
+ _this.videoPackageList = res.data;
+ _this.trainNoTotal = res.total;
+ });
+ },
+ toAddAssignList() {
+ let _this = this;
+ let total = this.trainNochecked.length;
+ let people = this.memberChecked.length;
+ let least = (total / people) | 0;
+ let left = total % people;
- }
- }
-}
+ let checkedTrain = [...this.trainNochecked];
+ let pickList = [];
+ for (let i = 0; i < people; i++) {
+ pickList[i] = [];
+ if (i < left) {
+ for (let j = 0; j < least + 1; j++) {
+ pickList[i].push(...this.videoPackageList[checkedTrain[0]]);
+ checkedTrain.shift();
+ }
+ } else {
+ for (let j = 0; j < least; j++) {
+ pickList[i].push(...this.videoPackageList[checkedTrain[0]]);
+ checkedTrain.shift();
+ }
+ }
+ }
+ let arr = pickList.map((a) => {
+ return a.map((item) => item.ID);
+ });
+ addToAssignList({
+ HandlerUserID: this.memberChecked,
+ VideoIDs: arr,
+ }).then((res) => {
+ if (res.success) {
+ this.$notify({
+ type: "success",
+ message: res.msg,
+ });
+ _this.refreshAll();
+ }
+ });
+ },
+ searchMemberByOrg() {
+ let _this = this;
+ getMemberByOrg({}).then((res) => {
+ _this.personList = res.data;
+ // _this.orgTreeDialogVisible = false;
+ });
+ },
+ distributeTask() {
+ let _this = this;
+ distributeTask({
+ VideoIDs: this.taskVideoChecked,
+ distributerID: ""
+ }).then((res) => {
+ _this.renderTaskTable();
+ });
+ },
+ },
+};
</script>
<style lang="scss">
@@ -215,11 +466,12 @@
height: 40px;
.title {
float: left;
- padding-left: 20px;
height: 40px;
+ padding-left: 10px;
+
line-height: 40px;
font-size: 14px;
- font-family: 'PingFangSC-Semibold', 'PingFang SC Semibold', 'PingFang SC';
+ font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC";
}
.header-right {
float: right;
@@ -247,15 +499,60 @@
.video-list {
margin-top: 14px;
text-align: left;
+ height: 420px;
+ overflow: auto;
+ .el-checkbox-group {
+ margin-bottom: 20px;
+ .el-checkbox__label {
+ display: none;
+ }
+ .video-detail {
+ i {
+ //color: #409EFF;
+ }
+ color: #888;
+ }
+ }
}
}
.top-right {
width: 360px;
+ height: 465px;
+ // overflow-y:auto;
+ .header {
+ .el-input {
+ line-height: 41px;
+ width: 185px;
+ font-size: 14px;
+ }
+ .el-checkbox {
+ float: left;
+ padding-left: 20px;
+ height: 40px;
+ line-height: 40px;
+ font-size: 14px;
+ }
+ }
+ .checked-org {
+ flex: 1;
+ text-align: left;
+ &.null {
+ color: #999;
+ }
+ }
.person-list {
padding-top: 14px;
+
+ .el-checkbox-group {
+ height: 330px;
+
+ margin-bottom: 8px;
+ overflow: auto;
+ }
.person {
text-align: left;
margin-bottom: 10px;
+
padding-bottom: 6px;
border-bottom: 1px solid #eee;
}
@@ -272,7 +569,6 @@
.actions {
text-align: left;
}
-
}
}
}
--
Gitblit v1.8.0