From d6fb18b49cd61427a343fbe7a2a4f94e4b597bdc Mon Sep 17 00:00:00 2001 From: wl <173@qq.com> Date: 星期四, 29 十二月 2022 14:00:41 +0800 Subject: [PATCH] fix:店铺状态 --- src/views/operate/video/index.vue | 796 +++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 528 insertions(+), 268 deletions(-) diff --git a/src/views/operate/video/index.vue b/src/views/operate/video/index.vue index 011fa59..5968ca9 100644 --- a/src/views/operate/video/index.vue +++ b/src/views/operate/video/index.vue @@ -1,296 +1,556 @@ <template> - <div class="otherInterface"> - <header> - <div class="headerTitle">杩愯惀绠$悊 >> 瑙嗛绠$悊</div> - </header> - <main> - <div class="mainHeader"> - <div class="add"> - <el-button type="primary" icon="el-icon-plus">鏂板浠诲姟</el-button> - </div> - <div class="date-search"> - <span>鎸夊ぉ鏌ヨ:</span> - <div class="mydate"> - <el-input placeholder="璇疯緭鍏ュ紑濮嬫椂闂�"></el-input> - <div class="line"> - 鈥斺�斺�� 鈥斺�斺�� - </div> - <el-input placeholder="璇疯緭鍏ョ粨鏉熸椂闂�"></el-input> - </div> - </div> - <div class="search"> - <el-input placeholder="璇疯緭鍏ユ爣棰樻垨鑰呬换鍔$紪鍙�"></el-input> - </div> - <div class="btn"> - <el-button icon="el-icon-plus" type="primary">鎼滅储</el-button> - <el-button icon="el-icon-delete">閲嶇疆</el-button> - </div> + <div class="userList"> + <header> + <div class="headerContent"> + <div class="search"> + <span>涓婁紶鏃堕棿锛�</span> + <div class="option"> + <el-date-picker + v-model="datePicked" + type="datetimerange" + value-format="yyyy-MM-dd HH:mm:ss" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡"> + </el-date-picker> + </div> + <div class="findBtn"> + <el-button type="primary" @click="searchVideoList">鏌ヨ</el-button> + </div> + </div> + <div class="addBtn"> + <el-button type="primary" @click="handleOpera(null, 'create')">鏂板</el-button> + </div> + </div> + </header> + <main> + <div class="mainContent"> + <div class="type-nav"> + <div + @click="changeTypeChecked(index)" + v-for="(item, index) in typeList" + :key="item.name" + :class="[item.checked ? 'is-active' : '', 'type-item']" + > + {{ item.name }} + </div> + </div> + <!-- 鏁版嵁灞曠ず --> + <el-table + ref="multipleTable" + :header-cell-style="{ + 'font-weight': '650', + 'line-height': '45px', + }" + :data="tableData" + style="width: 100%" + :row-class-name="tableRowClassName" + @selection-change="tableChange" + > + <el-table-column v-show="mystatus == 1" type="selection" min-width="5" :selectable="selectable"> </el-table-column> + <el-table-column prop="code" label="鎵�灞炰簨浠剁紪鍙�" min-width="18"> + </el-table-column> + <el-table-column prop="category" label="闂绫诲埆" min-width="8"> + <template slot-scope="scope"> + <span>{{ getCategory(scope.row.category)?.label }}</span> + </template> + </el-table-column> + <el-table-column prop="eventSource" label="浜嬩欢鏉ユ簮" min-width="8"> + <template slot-scope="scope"> + <span>{{ getEventSource(scope.row.eventSource)?.label }}</span> + </template> + </el-table-column> + <el-table-column prop="regionName" label="绀惧尯鍚嶇О" min-width="8"> + </el-table-column> + <el-table-column prop="id" label="瑙嗛Id" min-width="8"> + </el-table-column> + <el-table-column + prop="createTime" + label="涓婁紶鏃堕棿" + min-width="15" + v-if="mystatus === 1" + > + </el-table-column> + <el-table-column prop="operation" label="鎿嶄綔" min-width="15"> + <template slot-scope="scope"> + <div class="operation"> + <span @click="handleOpera(scope.row, 'view')">鏌ョ湅</span> + <span v-if="mystatus === 2" class="line">|</span> + <span v-if="mystatus === 2" @click="handleOpera(scope.row, 'update')">淇敼</span> + <span v-if="mystatus === 2" class="line">|</span> + <span v-if="mystatus === 2" @click="handleDelete(scope.row)">鍒犻櫎</span> + </div> + </template> + </el-table-column> + </el-table> + <!-- 鏌ョ湅淇敼椤甸潰 --> + <el-dialog + :visible.sync="isShowDialog" + :destroy-on-close="true" + :key="dialogTitle" + width="40%" + :title="dialogTitle"> + <updateInterface v-if="isShowDialog" :isUpdate="isUpdate" :dialogData="dialogData" @closeDialog="closeDialog" /> + </el-dialog> + + <div class="tools"> + <div class="funs"> + <div class="funsItem funs-sp"> + <el-checkbox v-model="all" @change="selectAll()" + >鍏ㄩ��</el-checkbox + > </div> - <div class="mainContent"> - <!-- @selection-change="handleSelectionChange" --> - <!-- 鏁版嵁娓叉煋 --> - <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%" - :header-cell-style="{background:'#06122c','font-size':'12px',color:'#4b9bb7','font-weight':'650','line-height':'45px'}" - :row-class-name="tableRowClassName"> - <el-table-column type="selection" width="55"> - </el-table-column> - <el-table-column label="浠诲姟缂栧彿" prop="applicationName" min-width="10"> - </el-table-column> - <el-table-column prop="applicationType" label="鏍囬" min-width="10"> - </el-table-column> - <el-table-column prop="websiteUrl" label="绫诲瀷" min-width="10"> - </el-table-column> - <el-table-column prop="applicationType" label="绾у埆" min-width="10"> - </el-table-column> - <el-table-column prop="applicationType" label="琛楅亾" min-width="10"> - </el-table-column> - <el-table-column prop="applicationType" label="绀惧尯" min-width="10"> - </el-table-column> - <el-table-column prop="applicationType" label="寮�濮嬫椂闂�" min-width="10"> - </el-table-column> - <el-table-column prop="applicationType" label="缁撴潫鏃堕棿" min-width="10"> - </el-table-column> - <el-table-column prop="applicationType" label="浠诲姟鎻忚堪" min-width="10"> - </el-table-column> - <el-table-column prop="applicationType" label="鐘舵��" min-width="10"> - </el-table-column> - <el-table-column label="鎿嶄綔" min-width="10"> - <template slot-scope="scope"> - <span @click="handleView(scope.row)">缂栬緫</span> - <span class="line">|</span> - <span @click="handleDelete(scope.row)">鏌ョ湅</span> - </template> - </el-table-column> - </el-table> - <!-- 鍒嗛〉 --> - <!-- <div class="pagination"> - <el-pagination background :current-page="currentPage" layout="prev, pager, next" :total="totalNum" - :page-size="pageSize" @current-change="changeCurrentPage" @prev-click="handlePrev" - @next-click="handleNext"> - </el-pagination> - </div> --> + <div class="funsItem funs-sp"> + <el-checkbox v-model="unsame" @change="disSame(tableData)" + >鍙嶉��</el-checkbox + > </div> - </main> - <footer> - <!-- 鍒涘缓寮圭獥 --> - <el-dialog :visible.sync="dialogCreate" title="鏂板绗笁鏂规帴鍙�" width="45%" v-if="dialogCreate" - :before-close="handleClose"> - <createInterface /> - </el-dialog> - <!-- 鏌ョ湅寮圭獥 --> - <el-dialog :visible.sync="dialogUpdate" :title="updateFlag ?'淇敼绗笁鏂规帴鍙�':'鏌ョ湅绗笁鏂规帴鍙�'" width="45%" - v-if="dialogUpdate" :before-close="handleClose"> - <viewInterface :updateFlag="updateFlag" :userInfo=userInfo /> - </el-dialog> - </footer> - </div> + <div class="funsItem"> + <el-select + v-model="myIdx" + placeholder="鎵归噺鎿嶄綔" + > + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + :disabled="item.disabled" + @click.native="selectChange" + > + </el-option> + </el-select> + </div> + </div> + <div class="pagination"> + <el-pagination + background + :current-page="currentPage" + layout="prev, pager, next" + :total="totalNum" + :page-size="pageSize" + @current-change="changeCurrentPage" + > + </el-pagination> + </div> + </div> + </div> + </main> + </div> </template> <script> -// import createInterface from './components/createInterface'; -// import viewInterface from './components/viewInterface' +import updateInterface from "./updateInterface"; +import videoManagement from "@/api/operate/videoManagement"; +import { CATEGOTY, EVENT_SOURCE } from "@/utils/helper"; + export default { - components: { - // createInterface, viewInterface - }, - data() { - return { - tableData: [], - search: "", - dialogCreate: false, - dialogUpdate: false, - updateFlag: false, - userInfo: '', - date:'', - // totalNum: 200, - // pageSize: 10, - // currentPage: 1, - } - }, - created() { - this.getUserList(); - }, - methods: { - // 鑾峰彇鎺ュ彛鍒楄〃 - getUserList() { - const that = this; - // const { currentPage, pageSize, search } = this; - this.dialogCreate = false; - this.$axios.get("sccg/system/portal/thirdApp/search").then(res => { - const { code, data } = res; - if (code == 200) { - this.tableData = data; - } - }) + name: 'video-upload-page', + components: { updateInterface }, + data() { + return { + isShowDialog: false, + searchContent: '', + datePicked: null, + tableData: [], + isUpdate: false, + dialogData: null, + info: {}, + totalNum: 5, + pageSize: 10, + currentPage: 1, + all: false, + unsame: false, + myIdx: 0, + preMyIdx: 0, + options: [ + { + value: 0, + label: "鎵归噺鎿嶄綔", + disabled: true, }, - // 璁剧疆琛ㄦ牸鏂戦┈绾� - tableRowClassName({ row, rowIndex }) { - if ((rowIndex + 1) % 2 == 0) { - return 'warning-row'; - } else { - return 'success-row'; - } - return ''; + // { + // value: 1, + // label: "鎵归噺鍚敤", + // }, + // { + // value: 2, + // label: "鎵归噺绂佺敤", + // }, + { + value: 3, + label: "鎵归噺鍒犻櫎", }, - // 鎵撳紑鏂板鐣岄潰 - handleAdd() { - this.dialogCreate = true; + ], + tempList: [], + typeList: [ + { + name: "鎽勫儚澶存帹閫�", + value: "01", + checked: true, }, - // 鍒涘缓寮圭獥鍏抽棴 - handleClose(done) { - const that = this; - this.$confirm('纭鍏抽棴锛�') - .then(_ => { - that.dialogCreate = false; - done(); + { + name: "鍗曞叺鎺ㄩ��", + value: "03", + checked: false, + }, + ], + statusArr: [], + mystatus: 1, + }; + }, + computed: { + dialogTitle() { + if (this.isUpdate && this.dialogData) { + return '鏇存柊'; + } + if (this.isUpdate && !this.dialogData) { + return '鍒涘缓'; + } + if (!this.isUpdate) { + return '鏌ョ湅'; + } + } + }, + created() { + this.searchContent = this.typeList.find((item) => item.checked).value; + this.searchVideoList(); + }, + methods: { + // 椤堕儴涓嬫媺妗� + setMystatus(value) { + this.statusArr[1] = value; + this.changeTypeChecked(value - 1); + }, + // 鎵归噺鍒犻櫎 + mulDelete(idArr) { + this.$confirm("鎮ㄧ‘瀹氳鎵归噺鍒犻櫎瑙嗛鍚�?") + .then((_) => { + this.$axios({ + method: "delete", + url: "/sccg/video_resources/deletion_batch?ids=" + idArr, + }).then((res) => { + if (res.code === 200) { + this.$message({ + type: "success", + message: "鎵归噺鍒犻櫎瑙嗛鎴愬姛", + }); + this.searchVideoList(); + } else { + this.$message({ + type: "error", + message: res.message, + }); + } + }); }) - .catch(_ => { }); - }, - // 鍒涘缓鏌ョ湅寮圭獥 - handleView(rowData) { - this.userInfo = rowData; - this.dialogUpdate = true; - }, - // 鍒犻櫎绗笁鏂规帴鍙� - handleDelete({ id }) { - console.log(id); - this.$axios.delete('sccg/system/portal/thirdApp/delete', { - params: { - id - } - }).then(res => { - console.log(res); - }) - } - // // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠� - // changeCurrentPage(page) { - // this.currentPage = page; - // this.getUserList(); - // }, - // // 涓婁竴椤电偣鍑讳簨浠� - // handlePrev(page) { - // this.currentPage = page; - // this.getUserList(); - // }, - // // 涓嬩竴椤电偣鍑讳簨浠� - // handleNext(page) { - // this.currentPage = page; - // this.getUserList(); - // }, - } -} + .catch((err) => { + console.log(err); + }); + }, + // 鎵ц涓嬫媺妗嗘搷浣� + selectChange(list) { + if (this.tempList.length !== 0) { + this.preMyIdx = list; + this.mulDelete(this.tempList); + } else { + this.myIdx = this.preMyIdx; + this.$message({ + type: "warning", + message: "鎮ㄨ繕娌¢�変腑浠讳綍鏁版嵁", + }); + } + }, + // 鐩戝惉琛ㄦ牸 + tableChange(list) { + this.tempList = []; + list.forEach((item) => { + this.tempList.push(item.id); + }); + this.all = list.length === this.tableData.length; + }, + // 鍏ㄩ�� + selectAll() { + this.$refs.multipleTable.toggleAllSelection(); + }, + // 鍙嶉�� + disSame(list) { + list.forEach((row) => { + this.$refs.multipleTable.toggleRowSelection(row); + }); + }, + // 鍒犻櫎鍗曟潯鏁版嵁 + handleDelete({ id }) { + this.$confirm("纭鍒犻櫎锛�") + .then(() => { + videoManagement.deleteVideoRescource({ id }) + .then(() => { + this.$message.success('鎿嶄綔鎴愬姛'); + this.searchVideoList(); + }) + .catch(err => { + this.$message.error(`${err}`); + }) + }) + }, + searchVideoList() { + const startTime = this.datePicked ? this.datePicked[0] : null; + const endTime = this.datePicked ? this.datePicked[1] : null; + videoManagement.getVideoResources({ current: this.currentPage, size: this.pageSize, + type: this.searchContent, startTime, endTime }) + .then(res => { + this.tableData = res.records; + this.totalNum = res.total; + }) + .catch(err => this.$message.error(`${err}`)) + }, + // 鏇存敼杩濊/杩濆缓 + changeTypeChecked(idx) { + this.typeList.forEach((item, index) => { + item.checked = index === idx; + }); + this.mystatus = idx + 1; + this.statusArr[1] = this.typeList[idx].value; + this.searchContent = this.typeList[idx].value; + this.searchVideoList(); + }, + // 璁剧疆琛ㄦ牸鏂戦┈绾� + tableRowClassName({ row, rowIndex }) { + if ((rowIndex + 1) % 2 === 0) { + return "warning-row"; + } else { + return "success-row"; + } + }, + // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠� + changeCurrentPage(page) { + this.currentPage = page; + this.searchVideoList(); + }, + + handleOpera(data, type) { + this.isShowDialog = true; + this.isUpdate = type !== 'view'; + this.dialogData = data; + }, + + handleClose(done) { + this.$confirm("纭鍏抽棴锛�") + .then(() => { + done(); + }) + }, + // 鍏抽棴涓婁紶鐣岄潰 + closeDialog() { + this.isShowDialog = false; + this.searchVideoList(); + }, + + getCategory(value) { + return CATEGOTY.find(item => item.value === value); + }, + + getEventSource(value) { + return EVENT_SOURCE.find(item => item.value === value); + }, + selectable(row,index){ + if(this.mystatus == '1'){ + return false;//绂佺敤鐘舵�� + }else{ + return true;//闈炵鐢ㄧ姸鎬� + } + }, + }, +}; </script> -<!-- sccg/system/portal/thirdApp/search --> + <style lang="scss" scoped> -.otherInterface { - header { +.userList { + text-align: left; + margin: 10px 20px; + color: #4b9bb7; + + header { + background-color: white; + + .headerContent { + padding: 0 40px; + display: flex; + line-height: 100px; + justify-content: space-between; + align-items: center; + + .search { display: flex; - line-height: 60px; - justify-content: space-between; - padding: 0 20px; - color: #4b9bb7; + justify-content: flex-start; - &::v-deep .el-button { - background-color: #eb5d01; - border: none; + span { + flex: 1; + } + + .el-input { + flex: 2; + color: #1d3f57; + + &::v-deep .el-input__inner { + // background-color: #09152f; + border: 1px solid #17324c; + } + } + } + + .findBtn { + line-height: 100px; + margin-left: 15px; + display: flex; + align-items: center; + margin-top: -2px; + + .el-button { + padding: 12px 25px; + border-radius: 20px; + } + } + + .addBtn { + // background-color: #eb5d01; + border: none; + border-radius: 20px; + padding: 12px 30px; + } + } + } + + &::v-deep .el-input__inner { + // background-color: #09152f; + border: 1px solid #17324c; + } + + main { + // background-color: #09152f; + margin-top: 20px; + padding-bottom: 50px; + + .btn span:hover { + cursor: pointer; + } + + .type-nav { + display: flex; + line-height: 40px; + margin-left: 30px; + padding-top: 10px; + margin-bottom: 10px; + + .type-item { + min-width: 80px; + text-align: center; + padding-right: 10px; + + &:hover { + cursor: pointer; + } + } + + .is-active { + // background-color: #070f22; + border-radius: 4px; + color: #333; + font-size: 500; + } + } + + .tools { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 20px; + + .funs-sp { + border: 1px solid #17324c; + } + + .funs { + display: flex; + + .funsItem { + line-height: 28px; + display: flex; + align-items: center; + border-radius: 4px; + font-size: 12px; + margin-left: 10px; + + .el-checkbox { + width: 80px; + padding: 0 10px; + } + + .el-select { + width: 120px; + } + + &:hover { + border: 1px solid #4b9bb7; + } + + &:hover .el-checkbox { + color: #4b9bb7; + } + } + } + + .pagination { + margin-top: 50px; + display: flex; + line-height: 50px; + justify-content: center; + + .el-pagination { + &::v-deep li, + &::v-deep .btn-prev, + &::v-deep .btn-next { + // background-color: #071f39; + color: #4b9bb7; + } + + &::v-deep .active { + background-color: #409eff; color: #fff; - border-radius: 20px; + } } + } } - main { - padding: 10px 20px; + .el-table { + // color: #4b9bb7; + // font-size: 10px; - .mainHeader { - padding-left: 20px; - display: flex; - line-height: 60px; - color: #4b9bb7; - background-color: #09152f; - display: flex; - .add,.search,.btn{ - flex:1; - } - .date-search{ - flex: 3; - display: flex; - .mydate{ - display: flex; - .line{ - margin:0 10px 0 20px; - } - } - } - .el-input { - width: 180px; - height: 35px; - margin-left: 10px; + &::v-deep .cell { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } - &::v-deep .el-input__inner { - background-color: #09152f; - border: 1px solid #17324c; - font-size: 12px; - } - } + .operation { + display: flex; + + .line { + padding: 0 5px; } - .mainContent { - margin-top: 20px; - - .el-table { - color: #4b9bb7; - - &::v-deep .el-table__empty-block { - background-color: #06122c; - } - - &::v-deep .el-table__empty-text { - color: #4b9bb7; - } - - &::v-deep .warning-row { - background-color: #06122c; - } - - &::v-deep .success-row { - background-color: #071f39; - } - } - - .line { - padding: 0 5px; - // margin-top: -10px; - } + span:hover { + cursor: pointer; } + } } + } - footer { + .line { + padding: 0 5px; + } - &::v-deep .el-dialog__header, - &::v-deep .el-dialog__body { - background-color: #06122c; - } - - &::v-deep .el-dialog__header { - display: flex; - align-items: center; - background-color: #fff; - padding: 20px; - line-height: 60px; - } - - &::v-deep .el-dialog__title { - color: #4b9bb7; - } - - &::v-deep .el-dialog__close { - width: 20px; - height: 20px; - // color: #fff; - } - - &::v-deep .el-dialog__body { - padding: 0; - } - } + :deep(.el-range-input) { + // background-color: #09152f; + } } </style> \ No newline at end of file -- Gitblit v1.8.0