| | |
| | | <template> |
| | | <div> |
| | | <el-segmented :model-value="activeName" :options="activeTabs" @change="tabChange" /> |
| | | <div class="monitor-obj-wrapper"> |
| | | <el-affix v-if="affix" :offset="60" target=".monitor-obj-wrapper"> |
| | | <el-scrollbar class="p-b-8" always> |
| | | <!-- <el-segmented |
| | | :model-value="activeName" |
| | | :options="activeTabs" |
| | | @change="tabChange" |
| | | /> --> |
| | | <el-tabs v-model="activeName" @tab-change="tabChange"> |
| | | <el-tab-pane |
| | | v-for="item in activeTabs" |
| | | :key="item" |
| | | :label="item" |
| | | :name="item" |
| | | ></el-tab-pane> |
| | | </el-tabs> |
| | | </el-scrollbar> |
| | | </el-affix> |
| | | <el-scrollbar class="" always v-else> |
| | | <!-- <el-segmented |
| | | :model-value="activeName" |
| | | :options="activeTabs" |
| | | @change="tabChange" |
| | | /> --> |
| | | <el-tabs v-model="activeName" @tab-change="tabChange"> |
| | | <el-tab-pane |
| | | v-for="item in activeTabs" |
| | | :key="item" |
| | | :label="item" |
| | | :name="item" |
| | | ></el-tab-pane> |
| | | </el-tabs> |
| | | </el-scrollbar> |
| | | <el-space size="large"> |
| | | <el-tag type="info"> 总数:{{ activeData.length }} </el-tag> |
| | | <el-checkbox-group v-model="checkList"> |
| | | <el-checkbox label="未监管" :value="0" /> |
| | | <el-checkbox label="已监管" :value="1" /> |
| | | <el-checkbox label="已复核" :value="2" /> |
| | | </el-checkbox-group> |
| | | </el-space> |
| | | <el-scrollbar :height="height"> |
| | | <el-space wrap> |
| | | <ItemMonitorObj v-for="obj in activeData" :key="obj.movid" :item="obj"> |
| | | <template #default="{ item }"> |
| | | <slot :item="item"> |
| | | <el-button |
| | | v-if="showBtn" |
| | | size="small" |
| | | plain |
| | | :type="btnType" |
| | | @click="itemClick(item)" |
| | | >{{ btnName }}</el-button |
| | | > |
| | | </slot> |
| | | </template> |
| | | </ItemMonitorObj> |
| | | </el-space> |
| | | </el-scrollbar> |
| | | </div> |
| | | <el-space wrap> |
| | | <ItemMonitorObj v-for="obj in activeData" :key="obj.movid" :item="obj"> |
| | | <template #default="{ item }"> |
| | | <!-- <slot :item="item"></slot> --> |
| | | <el-button v-if="showBtn" size="small" type="danger" @click="itemClick(item)">{{ |
| | | btnName |
| | | }}</el-button> |
| | | </template> |
| | | </ItemMonitorObj> |
| | | </el-space> |
| | | </template> |
| | | |
| | | <script> |
| | |
| | | btnName: { |
| | | type: String, |
| | | default: '移除' |
| | | } |
| | | }, |
| | | btnType: { |
| | | type: String, |
| | | default: 'default' |
| | | }, |
| | | // 头部选项是否吸顶 |
| | | affix: Boolean, |
| | | height: String |
| | | }, |
| | | emits: ['update:tabName', 'update:showData', 'itemClick'], |
| | | data() { |
| | | return { |
| | | activeName: defaultTabName, |
| | | tabs: [] |
| | | tabs: [], |
| | | checkList: [0, 1, 2] |
| | | }; |
| | | }, |
| | | computed: { |
| | | activeData() { |
| | | const list = this.data.filter((v) => { |
| | | return this.activeName == defaultTabName || v.sceneType == this.activeName; |
| | | // return this.tabName == defaultTabName || v.sceneType == this.tabName; |
| | | // 筛选当前选择的标签页对应的场景类型 |
| | | const b1 = |
| | | this.activeName == defaultTabName || v.sceneType == this.activeName; |
| | | |
| | | // 计算场景的监管状态 |
| | | let status; |
| | | if (v.extension1 == undefined || null) { |
| | | // 未监管 |
| | | status = 0; |
| | | } else { |
| | | const num = parseInt(v.extension1); |
| | | if (num >= 2) { |
| | | // 已复核 |
| | | status = 2; |
| | | } else { |
| | | // 已监管(1次) |
| | | status = num; |
| | | } |
| | | } |
| | | const b2 = this.checkList.indexOf(status) != -1; |
| | | return b1 && b2; |
| | | }); |
| | | this.$emit('update:showData', list); |
| | | return list; |