Commit 8ad0bc8d authored by 朱松文's avatar 朱松文

创建一个baseVue基类,维护公共属性,继承子类可以直接获取,无需每个地方都需要写

parent ae9040be
...@@ -19,12 +19,13 @@ ...@@ -19,12 +19,13 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { Component, Vue, Prop } from "vue-property-decorator"; import { Component, Prop } from "vue-property-decorator";
import { CameraItem } from "./data"; import { CameraItem } from "./data";
import Icon from "@/components/Icon/index.vue"; import Icon from "@/components/Icon/index.vue";
import BaseVue from "@/types/baseVue";
@Component({ components: { Icon } }) @Component({ components: { Icon } })
export default class Camera extends Vue { export default class Camera extends BaseVue {
@Prop() private cameraItem!: CameraItem; @Prop() private cameraItem!: CameraItem;
showCarmera = true; showCarmera = true;
......
<template> <template>
<div class="dog"> <div :class="`${prefixCls}-dog`">
<div class="dog-info"> <table>
<tbody>
<tr>
<td class="td-img" rowspan="6">
<div class="dog-img"> <div class="dog-img">
<img :src="dog.picture" alt /> <img :src="dog.picture" alt />
</div> </div>
<div class="dog-data"> </td>
<div class="row"> <td>
<div class="col-left">识别开始时间</div> <div class="col-left">识别开始时间</div>
<div class="col">{{ dog.beginTime }}</div> </td>
</div> <td>
<div class="row"> <div>{{ dog.beginTime }}</div>
</td>
</tr>
<tr>
<td>
<div class="col-left">识别结束时间</div> <div class="col-left">识别结束时间</div>
<div class="col">{{ dog.endTime }}</div> </td>
</div> <td>
<div class="row"> <div>{{ dog.endTime }}</div>
</td>
</tr>
<tr>
<td>
<div class="col-left">识别时长</div> <div class="col-left">识别时长</div>
<div class="col">{{ dog.totalTime }}</div> </td>
</div> <td>
<div class="row"> <div>{{ dog.totalTime }}</div>
</td>
</tr>
<tr>
<td>
<div class="col-left">是否牵狗绳</div> <div class="col-left">是否牵狗绳</div>
<div class="col">{{ dog.isHand ? "" : "" }}</div> </td>
</div> <td>
<div class="row"> <div>{{ dog.isHand ? "" : "" }}</div>
</td>
</tr>
<tr>
<td>
<div class="col-left">品种</div> <div class="col-left">品种</div>
<div class="col">{{ dog.dogType }}</div> </td>
</div> <td>
<div class="row none-border-bottom"> <div>{{ dog.dogType }}</div>
</td>
</tr>
<tr>
<td>
<div class="col-left">毛色</div> <div class="col-left">毛色</div>
<div class="col">{{ dog.hairColor }}</div> </td>
</div> <td>
</div> <div>{{ dog.hairColor }}</div>
</div> </td>
</tr>
<tr>
<td colspan="3">
<div class="dog-footer"> <div class="dog-footer">
<a v-on:click="play"> <a v-on:click="play">
<Icon name="bofang" iconClass="icon-player" /> <Icon name="bofang" iconClass="icon-player" />
<span>播放</span> <span>播放</span>
</a> </a>
</div> </div>
</td>
</tr>
</tbody>
</table>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { Component, Vue, Prop } from "vue-property-decorator"; import { Component, Prop } from "vue-property-decorator";
import { DogData } from "./data"; import { DogData } from "./data";
import Icon from "@/components/Icon/index.vue"; import Icon from "@/components/Icon/index.vue";
import BaseVue from "@/types/baseVue";
@Component({ components: { Icon } }) @Component({ components: { Icon } })
export default class DogInfo extends Vue { export default class DogInfo extends BaseVue {
@Prop() private dog: DogData; @Prop() private dog: DogData;
play(): void { play(): void {
...@@ -56,51 +87,48 @@ export default class DogInfo extends Vue { ...@@ -56,51 +87,48 @@ export default class DogInfo extends Vue {
</script> </script>
<style lang="scss"> <style lang="scss">
.dog { .#{$prefixCls}-dog {
border: $border-color;
margin-bottom: 10px;
background-color: black;
font-size: 12px; font-size: 12px;
font-weight: 700; font-weight: 700;
.none-border-bottom { .td-img {
border-bottom: 0 !important; width: 120px;
} }
.dog-info {
display: flex;
.dog-img { .dog-img {
width: 100px; width: 100px;
height: 100px;
padding: 10px; padding: 10px;
img { img {
width: 100%; width: 100%;
height: 100%;
} }
} }
.dog-data { table {
flex: 1; width: 100%;
.row { margin-bottom: 10px;
display: flex; border-collapse: collapse;
border-bottom: $border-color;
.col-left {
width: 120px;
text-align: center;
border-right: $border-color;
border-left: $border-color;
height: 20px;
line-height: 20px;
} }
.col {
flex: 1; table,
padding-left: 8px; th,
td {
border: $border-color;
} }
td {
div {
height: 20px;
line-height: 20px;
text-align: left;
padding-left: 10px;
} }
} }
.col-left {
text-align: center;
} }
.dog-footer { .dog-footer {
height: 30px; height: 30px;
line-height: 30px; line-height: 30px;
text-align: center; text-align: center;
color: #0079fe; color: #0079fe;
border-top: $border-color;
a { a {
cursor: pointer; cursor: pointer;
text-decoration: none; text-decoration: none;
......
...@@ -14,14 +14,15 @@ ...@@ -14,14 +14,15 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { Component, Vue } from "vue-property-decorator"; import { Component } from "vue-property-decorator";
import { MenuItem } from "../data"; import { MenuItem } from "../data";
import Icon from "@/components/Icon/index.vue"; import Icon from "@/components/Icon/index.vue";
import { MENU_CURRENT_PATH_KEY, CLICK_HOME_PAGE_EVENT } from "@/utils/constant"; import { MENU_CURRENT_PATH_KEY, CLICK_HOME_PAGE_EVENT } from "@/utils/constant";
import eventBus from "@/utils/eventBus"; import eventBus from "@/utils/eventBus";
import BaseVue from "@/types/baseVue";
@Component({ components: { Icon } }) @Component({ components: { Icon } })
export default class Menu extends Vue { export default class Menu extends BaseVue {
currentPath = "/"; currentPath = "/";
created(): void { created(): void {
...@@ -35,10 +36,6 @@ export default class Menu extends Vue { ...@@ -35,10 +36,6 @@ export default class Menu extends Vue {
}); });
} }
get prefixCls(): string {
return process.env.VUE_APP_PRE_CSS;
}
get getMenus(): MenuItem[] { get getMenus(): MenuItem[] {
const { routes } = this.$router.options; const { routes } = this.$router.options;
if (!routes) return []; if (!routes) return [];
......
...@@ -5,12 +5,9 @@ ...@@ -5,12 +5,9 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { Vue, Component } from "vue-property-decorator"; import { Component } from "vue-property-decorator";
import BaseVue from "@/types/baseVue";
@Component({}) @Component({})
export default class Main extends Vue { export default class Main extends BaseVue {}
get prefixCls(): string {
return process.env.VUE_APP_PRE_CSS;
}
}
</script> </script>
...@@ -13,17 +13,14 @@ ...@@ -13,17 +13,14 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { Vue, Component } from "vue-property-decorator"; import { Component } from "vue-property-decorator";
import Menu from "./compoments/menu.vue"; import Menu from "./compoments/menu.vue";
import { MENU_CURRENT_PATH_KEY, CLICK_HOME_PAGE_EVENT } from "@/utils/constant"; import { MENU_CURRENT_PATH_KEY, CLICK_HOME_PAGE_EVENT } from "@/utils/constant";
import eventBus from "@/utils/eventBus"; import eventBus from "@/utils/eventBus";
import BaseVue from "@/types/baseVue";
@Component({ components: { Menu } }) @Component({ components: { Menu } })
export default class Nav extends Vue { export default class Nav extends BaseVue {
get prefixCls(): string {
return process.env.VUE_APP_PRE_CSS;
}
handleClick(): void { handleClick(): void {
sessionStorage.setItem(MENU_CURRENT_PATH_KEY, "/"); sessionStorage.setItem(MENU_CURRENT_PATH_KEY, "/");
eventBus.$emit(CLICK_HOME_PAGE_EVENT); eventBus.$emit(CLICK_HOME_PAGE_EVENT);
......
import { Vue } from 'vue-property-decorator'
export default class BaseVue extends Vue {
get prefixCls(): string {
return process.env.VUE_APP_PRE_CSS;
}
}
\ No newline at end of file
...@@ -26,14 +26,10 @@ import Camera from "@/components/Camera/index.vue"; ...@@ -26,14 +26,10 @@ import Camera from "@/components/Camera/index.vue";
import { DashBoardData } from "./data"; import { DashBoardData } from "./data";
import DogInfo from "@/components/DogInfo/index.vue"; import DogInfo from "@/components/DogInfo/index.vue";
import Search from "@/components/Camera/search.vue"; import Search from "@/components/Camera/search.vue";
import BaseVue from "@/types/baseVue";
@Component({ components: { Camera, DogInfo, Search } }) @Component({ components: { Camera, DogInfo, Search } })
export default class Dashboard extends Vue { export default class Dashboard extends BaseVue {
get prefixCls(): string {
return process.env.VUE_APP_PRE_CSS;
}
//#region data
data(): DashBoardData { data(): DashBoardData {
return { return {
cameras: [ cameras: [
......
...@@ -41,15 +41,12 @@ ...@@ -41,15 +41,12 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { Component, Vue } from "vue-property-decorator"; import { Component } from "vue-property-decorator";
import { getCamera } from "@/service/CameraService"; import { getCamera } from "@/service/CameraService";
import BaseVue from "@/types/baseVue";
@Component({}) @Component({})
export default class SysSetting extends Vue { export default class SysSetting extends BaseVue {
get prefixCls(): string {
return process.env.VUE_APP_PRE_CSS;
}
cameraData = []; cameraData = [];
created(): void { created(): void {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment