|
@@ -1,28 +1,28 @@
|
|
|
<script setup lang="ts">
|
|
|
-import {watch} from "vue";
|
|
|
-import {useUserStore} from "@/store/modules/user";
|
|
|
-import {TeacherList, TeacherManage} from "@/api/teacher/types";
|
|
|
-import {getTeacherList} from "@/api/teacher";
|
|
|
-import {EquipmentManage, EquipmentParams} from "@/api/equipment/types";
|
|
|
-import {getEquipmentLists} from "@/api/equipment";
|
|
|
+import { watch } from "vue";
|
|
|
+import { useUserStore } from "@/store/modules/user";
|
|
|
+import { TeacherList, TeacherManage } from "@/api/teacher/types";
|
|
|
+import { getTeacherList } from "@/api/teacher";
|
|
|
+import { EquipmentManage, EquipmentParams } from "@/api/equipment/types";
|
|
|
+import { getEquipmentLists } from "@/api/equipment";
|
|
|
const userStore = useUserStore();
|
|
|
defineOptions({
|
|
|
- name: "EquipmentIndex",
|
|
|
- inheritAttrs: false,
|
|
|
+ name: "EquipmentIndex",
|
|
|
+ inheritAttrs: false,
|
|
|
});
|
|
|
|
|
|
// 获取教师
|
|
|
const teacherSelect = ref<TeacherList[]>();
|
|
|
async function getTeacherData(schoolId: number) {
|
|
|
- getTeacherList(schoolId)
|
|
|
- .then(({data}) => {
|
|
|
- const temp: TeacherManage = data;
|
|
|
- teacherSelect.value = temp.lists;
|
|
|
- teacherSelect.value?.unshift({id: 0, name: "全部教师"})
|
|
|
- })
|
|
|
- .catch((error) => {
|
|
|
- console.log(error);
|
|
|
- });
|
|
|
+ getTeacherList(schoolId)
|
|
|
+ .then(({ data }) => {
|
|
|
+ const temp: TeacherManage = data;
|
|
|
+ teacherSelect.value = temp.lists;
|
|
|
+ teacherSelect.value?.unshift({ id: 0, name: "全部教师" });
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ console.log(error);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
// 获取设备
|
|
@@ -30,441 +30,482 @@ const pageParams: EquipmentParams = reactive({});
|
|
|
let equipmentData: EquipmentManage = reactive({});
|
|
|
const equipmentStatus = ref(false);
|
|
|
const dataStatus = reactive({
|
|
|
- AI: false,
|
|
|
- SW: false,
|
|
|
- KL: false,
|
|
|
- PP: false,
|
|
|
- SU: false,
|
|
|
- SC: false,
|
|
|
- UF: false,
|
|
|
- JM: false,
|
|
|
+ AI: false,
|
|
|
+ SW: false,
|
|
|
+ KL: false,
|
|
|
+ PP: false,
|
|
|
+ SU: false,
|
|
|
+ SC: false,
|
|
|
+ UF: false,
|
|
|
+ JM: false,
|
|
|
});
|
|
|
const dataMessage = ref("加载中...");
|
|
|
|
|
|
async function getEquipmentData(schoolId: number) {
|
|
|
- pageParams.school_id = schoolId;
|
|
|
- getEquipmentLists(pageParams)
|
|
|
- .then(({data}) => {
|
|
|
- equipmentData = <EquipmentManage>{...data};
|
|
|
- dataStatus.AI = equipmentData?.AI.length > 0 || false;
|
|
|
- dataStatus.SW = equipmentData?.SW.length > 0 || false;
|
|
|
- dataStatus.KL = equipmentData?.KL.length > 0 || false;
|
|
|
- dataStatus.PP = equipmentData?.PP.length > 0 || false;
|
|
|
- dataStatus.SU = equipmentData?.SU.length > 0 || false;
|
|
|
- dataStatus.SC = equipmentData?.SC.length > 0 || false;
|
|
|
- dataStatus.UF = equipmentData?.UF.length > 0 || false;
|
|
|
- dataStatus.JM = equipmentData?.JM.length > 0 || false;
|
|
|
- equipmentStatus.value = dataStatus.AI || dataStatus.SW || dataStatus.KL || dataStatus.PP || dataStatus.SU || dataStatus.SC || dataStatus.UF || dataStatus.JM;
|
|
|
- if (!equipmentStatus.value) {
|
|
|
- dataMessage.value = "没有符合条件的搜索记录或该学校未绑定任何设备!";
|
|
|
- }
|
|
|
- })
|
|
|
- .catch((error) => {
|
|
|
- dataMessage.value = error.message;
|
|
|
- console.log(error);
|
|
|
- });
|
|
|
+ pageParams.school_id = schoolId;
|
|
|
+ getEquipmentLists(pageParams)
|
|
|
+ .then(({ data }) => {
|
|
|
+ equipmentData = <EquipmentManage>{ ...data };
|
|
|
+ dataStatus.AI = equipmentData?.AI.length > 0 || false;
|
|
|
+ dataStatus.SW = equipmentData?.SW.length > 0 || false;
|
|
|
+ dataStatus.KL = equipmentData?.KL.length > 0 || false;
|
|
|
+ dataStatus.PP = equipmentData?.PP.length > 0 || false;
|
|
|
+ dataStatus.SU = equipmentData?.SU.length > 0 || false;
|
|
|
+ dataStatus.SC = equipmentData?.SC.length > 0 || false;
|
|
|
+ dataStatus.UF = equipmentData?.UF.length > 0 || false;
|
|
|
+ dataStatus.JM = equipmentData?.JM.length > 0 || false;
|
|
|
+ equipmentStatus.value =
|
|
|
+ dataStatus.AI ||
|
|
|
+ dataStatus.SW ||
|
|
|
+ dataStatus.KL ||
|
|
|
+ dataStatus.PP ||
|
|
|
+ dataStatus.SU ||
|
|
|
+ dataStatus.SC ||
|
|
|
+ dataStatus.UF ||
|
|
|
+ dataStatus.JM;
|
|
|
+ if (!equipmentStatus.value) {
|
|
|
+ dataMessage.value = "没有符合条件的搜索记录或该学校未绑定任何设备!";
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ dataMessage.value = error.message;
|
|
|
+ console.log(error);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
function getEquipmentSearch() {
|
|
|
- getEquipmentData(userStore.schoolId);
|
|
|
+ getEquipmentData(userStore.schoolId);
|
|
|
}
|
|
|
|
|
|
onMounted(() => {
|
|
|
- getTeacherData(userStore.schoolId);
|
|
|
- getEquipmentData(userStore.schoolId);
|
|
|
+ getTeacherData(userStore.schoolId);
|
|
|
+ getEquipmentData(userStore.schoolId);
|
|
|
});
|
|
|
watch(
|
|
|
- () => userStore.schoolId,
|
|
|
- (newValue) => {
|
|
|
- // 学校切换后重新获取
|
|
|
- pageParams.school_id = newValue;
|
|
|
- pageParams.teacher_id = 0;
|
|
|
- pageParams.sn = "";
|
|
|
- getTeacherData(newValue);
|
|
|
- getEquipmentData(newValue);
|
|
|
- }
|
|
|
+ () => userStore.schoolId,
|
|
|
+ (newValue) => {
|
|
|
+ // 学校切换后重新获取
|
|
|
+ pageParams.school_id = newValue;
|
|
|
+ pageParams.teacher_id = 0;
|
|
|
+ pageParams.sn = "";
|
|
|
+ getTeacherData(newValue);
|
|
|
+ getEquipmentData(newValue);
|
|
|
+ }
|
|
|
);
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
- <div class="equipment-container">
|
|
|
- <!-- 设备查找 -->
|
|
|
- <div class="equipment-search">
|
|
|
- <el-select
|
|
|
- v-model="pageParams.teacher_id"
|
|
|
- placeholder="请选择使用者名称"
|
|
|
- size="large"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in teacherSelect"
|
|
|
- :key="item.id"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- <el-input
|
|
|
- v-model="pageParams.sn"
|
|
|
- size="large"
|
|
|
- placeholder="请输入设备编号"
|
|
|
- />
|
|
|
- <el-button size="large" type="primary" @click="getEquipmentSearch()">查找</el-button>
|
|
|
- </div>
|
|
|
- <template v-if="equipmentStatus">
|
|
|
- <div v-if="dataStatus.AI" class="equipment-box">
|
|
|
- <div class="title"><span>水母星球脑机</span><b>{{ equipmentData.AI.length }}</b>台</div>
|
|
|
- <el-row :gutter="15">
|
|
|
- <template v-for="item in equipmentData.AI" :key="item.sn">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="6">
|
|
|
- <div class="box-card">
|
|
|
- <el-row>
|
|
|
- <el-col :span="9" class="img">
|
|
|
- <div class="i nj"></div>
|
|
|
- <div class="value">{{ item.sn }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="15" class="info">
|
|
|
- <div class="label mb-2">固件版本</div>
|
|
|
- <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
- <div class="label mb-2">绑定时间</div>
|
|
|
- <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
- <div class="label mb-2">使用者</div>
|
|
|
- <div class="value mb-2">{{ item.name }}</div>
|
|
|
- <div class="value">{{ item.phone }}</div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- </template>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- <div v-if="dataStatus.SW" class="equipment-box">
|
|
|
- <div class="title"><span>智脑水舞</span><b>{{ equipmentData.SW.length }}</b>台</div>
|
|
|
- <el-row :gutter="15">
|
|
|
- <template v-for="item in equipmentData.SW" :key="item.sn">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="6">
|
|
|
- <div class="box-card">
|
|
|
- <el-row>
|
|
|
- <el-col :span="9" class="img">
|
|
|
- <div class="i sw"></div>
|
|
|
- <div class="value">{{ item.sn }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="15" class="info">
|
|
|
- <div class="label mb-2">固件版本</div>
|
|
|
- <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
- <div class="label mb-2">绑定时间</div>
|
|
|
- <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
- <div class="label mb-2">使用者</div>
|
|
|
- <div class="value mb-2">{{ item.name }}</div>
|
|
|
- <div class="value">{{ item.phone }}</div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- </template>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- <div v-if="dataStatus.KL" class="equipment-box">
|
|
|
- <div class="title"><span>智脑恐龙</span><b>{{ equipmentData.KL.length }}</b>台</div>
|
|
|
- <el-row :gutter="15">
|
|
|
- <template v-for="item in equipmentData.KL" :key="item.sn">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="6">
|
|
|
- <div class="box-card">
|
|
|
- <el-row>
|
|
|
- <el-col :span="9" class="img">
|
|
|
- <div class="i sc"></div>
|
|
|
- <div class="value">{{ item.sn }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="15" class="info">
|
|
|
- <div class="label mb-2">固件版本</div>
|
|
|
- <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
- <div class="label mb-2">绑定时间</div>
|
|
|
- <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
- <div class="label mb-2">使用者</div>
|
|
|
- <div class="value mb-2">{{ item.name }}</div>
|
|
|
- <div class="value">{{ item.phone }}</div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- </template>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- <div v-if="dataStatus.PP" class="equipment-box">
|
|
|
- <div class="title"><span>智脑碰碰车</span><b>{{ equipmentData.PP.length }}</b>台</div>
|
|
|
- <el-row :gutter="15">
|
|
|
- <template v-for="item in equipmentData.PP" :key="item.sn">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="6">
|
|
|
- <div class="box-card">
|
|
|
- <el-row>
|
|
|
- <el-col :span="9" class="img">
|
|
|
- <div class="i ppc"></div>
|
|
|
- <div class="value">{{ item.sn }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="15" class="info">
|
|
|
- <div class="label mb-2">固件版本</div>
|
|
|
- <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
- <div class="label mb-2">绑定时间</div>
|
|
|
- <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
- <div class="label mb-2">使用者</div>
|
|
|
- <div class="value mb-2">{{ item.name }}</div>
|
|
|
- <div class="value">{{ item.phone }}</div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- </template>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- <div v-if="dataStatus.SU" class="equipment-box">
|
|
|
- <div class="title"><span>智脑SUV</span><b>{{ equipmentData.SU.length }}</b>台</div>
|
|
|
- <el-row :gutter="15">
|
|
|
- <template v-for="item in equipmentData.SU" :key="item.sn">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="6">
|
|
|
- <div class="box-card">
|
|
|
- <el-row>
|
|
|
- <el-col :span="9" class="img">
|
|
|
- <div class="i kl"></div>
|
|
|
- <div class="value">{{ item.sn }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="15" class="info">
|
|
|
- <div class="label mb-2">固件版本</div>
|
|
|
- <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
- <div class="label mb-2">绑定时间</div>
|
|
|
- <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
- <div class="label mb-2">使用者</div>
|
|
|
- <div class="value mb-2">{{ item.name }}</div>
|
|
|
- <div class="value">{{ item.phone }}</div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- </template>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- <div v-if="dataStatus.SC" class="equipment-box">
|
|
|
- <div class="title"><span>智脑赛车</span><b>{{ equipmentData.SC.length }}</b>台</div>
|
|
|
- <el-row :gutter="15">
|
|
|
- <template v-for="item in equipmentData.SC" :key="item.sn">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="6">
|
|
|
- <div class="box-card">
|
|
|
- <el-row>
|
|
|
- <el-col :span="9" class="img">
|
|
|
- <div class="i suv"></div>
|
|
|
- <div class="value">{{ item.sn }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="15" class="info">
|
|
|
- <div class="label mb-2">固件版本</div>
|
|
|
- <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
- <div class="label mb-2">绑定时间</div>
|
|
|
- <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
- <div class="label mb-2">使用者</div>
|
|
|
- <div class="value mb-2">{{ item.name }}</div>
|
|
|
- <div class="value">{{ item.phone }}</div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- </template>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- <div v-if="dataStatus.UF" class="equipment-box">
|
|
|
- <div class="title"><span>智脑UFO</span><b>{{ equipmentData.UF.length }}</b>台</div>
|
|
|
- <el-row :gutter="15">
|
|
|
- <template v-for="item in equipmentData.UF" :key="item.sn">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="6">
|
|
|
- <div class="box-card">
|
|
|
- <el-row>
|
|
|
- <el-col :span="9" class="img">
|
|
|
- <div class="i ufo"></div>
|
|
|
- <div class="value">{{ item.sn }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="15" class="info">
|
|
|
- <div class="label mb-2">固件版本</div>
|
|
|
- <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
- <div class="label mb-2">绑定时间</div>
|
|
|
- <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
- <div class="label mb-2">使用者</div>
|
|
|
- <div class="value mb-2">{{ item.name }}</div>
|
|
|
- <div class="value">{{ item.phone }}</div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- </template>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- <div v-if="dataStatus.JM" class="equipment-box">
|
|
|
- <div class="title"><span>智脑积木</span><b>{{ equipmentData.JM.length }}</b>台</div>
|
|
|
- <el-row :gutter="15">
|
|
|
- <template v-for="item in equipmentData.JM" :key="item.sn">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="6">
|
|
|
- <div class="box-card">
|
|
|
- <el-row>
|
|
|
- <el-col :span="9" class="img">
|
|
|
- <div class="i jm"></div>
|
|
|
- <div class="value">{{ item.sn }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="15" class="info">
|
|
|
- <div class="label mb-2">固件版本</div>
|
|
|
- <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
- <div class="label mb-2">绑定时间</div>
|
|
|
- <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
- <div class="label mb-2">使用者</div>
|
|
|
- <div class="value mb-2">{{ item.name }}</div>
|
|
|
- <div class="value">{{ item.phone }}</div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- </template>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <template v-else>
|
|
|
- <div class="empty">
|
|
|
- <img src="../../assets/empty.png" alt="数据为空">
|
|
|
- <p>{{ dataMessage }}</p>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </div>
|
|
|
+ <div class="equipment-container">
|
|
|
+ <!-- 设备查找 -->
|
|
|
+ <div class="equipment-search">
|
|
|
+ <el-select
|
|
|
+ v-model="pageParams.teacher_id"
|
|
|
+ placeholder="请选择使用者名称"
|
|
|
+ size="large"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in teacherSelect"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ <el-input
|
|
|
+ v-model="pageParams.sn"
|
|
|
+ size="large"
|
|
|
+ placeholder="请输入设备编号"
|
|
|
+ />
|
|
|
+ <el-button size="large" type="primary" @click="getEquipmentSearch()"
|
|
|
+ >查找</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <template v-if="equipmentStatus">
|
|
|
+ <div v-if="dataStatus.AI" class="equipment-box">
|
|
|
+ <div class="title">
|
|
|
+ <span>水母星球脑机</span><b>{{ equipmentData.AI.length }}</b
|
|
|
+ >台
|
|
|
+ </div>
|
|
|
+ <el-row :gutter="15">
|
|
|
+ <template v-for="item in equipmentData.AI" :key="item.sn">
|
|
|
+ <el-col :xs="12" :span="6">
|
|
|
+ <div class="box-card">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="9" class="img">
|
|
|
+ <div class="i nj"></div>
|
|
|
+ <div class="value">{{ item.sn }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="15" class="info">
|
|
|
+ <div class="label mb-2">固件版本</div>
|
|
|
+ <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
+ <div class="label mb-2">绑定时间</div>
|
|
|
+ <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
+ <div class="label mb-2">使用者</div>
|
|
|
+ <div class="value mb-2">{{ item.name }}</div>
|
|
|
+ <div class="value">{{ item.phone }}</div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </template>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div v-if="dataStatus.SW" class="equipment-box">
|
|
|
+ <div class="title">
|
|
|
+ <span>智脑水舞</span><b>{{ equipmentData.SW.length }}</b
|
|
|
+ >台
|
|
|
+ </div>
|
|
|
+ <el-row :gutter="15">
|
|
|
+ <template v-for="item in equipmentData.SW" :key="item.sn">
|
|
|
+ <el-col :xs="12" :span="6">
|
|
|
+ <div class="box-card">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="9" class="img">
|
|
|
+ <div class="i sw"></div>
|
|
|
+ <div class="value">{{ item.sn }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="15" class="info">
|
|
|
+ <div class="label mb-2">固件版本</div>
|
|
|
+ <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
+ <div class="label mb-2">绑定时间</div>
|
|
|
+ <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
+ <div class="label mb-2">使用者</div>
|
|
|
+ <div class="value mb-2">{{ item.name }}</div>
|
|
|
+ <div class="value">{{ item.phone }}</div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </template>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div v-if="dataStatus.KL" class="equipment-box">
|
|
|
+ <div class="title">
|
|
|
+ <span>智脑恐龙</span><b>{{ equipmentData.KL.length }}</b
|
|
|
+ >台
|
|
|
+ </div>
|
|
|
+ <el-row :gutter="15">
|
|
|
+ <template v-for="item in equipmentData.KL" :key="item.sn">
|
|
|
+ <el-col :xs="12" :span="6">
|
|
|
+ <div class="box-card">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="9" class="img">
|
|
|
+ <div class="i sc"></div>
|
|
|
+ <div class="value">{{ item.sn }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="15" class="info">
|
|
|
+ <div class="label mb-2">固件版本</div>
|
|
|
+ <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
+ <div class="label mb-2">绑定时间</div>
|
|
|
+ <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
+ <div class="label mb-2">使用者</div>
|
|
|
+ <div class="value mb-2">{{ item.name }}</div>
|
|
|
+ <div class="value">{{ item.phone }}</div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </template>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div v-if="dataStatus.PP" class="equipment-box">
|
|
|
+ <div class="title">
|
|
|
+ <span>智脑碰碰车</span><b>{{ equipmentData.PP.length }}</b
|
|
|
+ >台
|
|
|
+ </div>
|
|
|
+ <el-row :gutter="15">
|
|
|
+ <template v-for="item in equipmentData.PP" :key="item.sn">
|
|
|
+ <el-col :xs="12" :span="6">
|
|
|
+ <div class="box-card">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="9" class="img">
|
|
|
+ <div class="i ppc"></div>
|
|
|
+ <div class="value">{{ item.sn }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="15" class="info">
|
|
|
+ <div class="label mb-2">固件版本</div>
|
|
|
+ <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
+ <div class="label mb-2">绑定时间</div>
|
|
|
+ <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
+ <div class="label mb-2">使用者</div>
|
|
|
+ <div class="value mb-2">{{ item.name }}</div>
|
|
|
+ <div class="value">{{ item.phone }}</div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </template>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div v-if="dataStatus.SU" class="equipment-box">
|
|
|
+ <div class="title">
|
|
|
+ <span>智脑SUV</span><b>{{ equipmentData.SU.length }}</b
|
|
|
+ >台
|
|
|
+ </div>
|
|
|
+ <el-row :gutter="15">
|
|
|
+ <template v-for="item in equipmentData.SU" :key="item.sn">
|
|
|
+ <el-col :xs="12" :span="6">
|
|
|
+ <div class="box-card">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="9" class="img">
|
|
|
+ <div class="i kl"></div>
|
|
|
+ <div class="value">{{ item.sn }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="15" class="info">
|
|
|
+ <div class="label mb-2">固件版本</div>
|
|
|
+ <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
+ <div class="label mb-2">绑定时间</div>
|
|
|
+ <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
+ <div class="label mb-2">使用者</div>
|
|
|
+ <div class="value mb-2">{{ item.name }}</div>
|
|
|
+ <div class="value">{{ item.phone }}</div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </template>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div v-if="dataStatus.SC" class="equipment-box">
|
|
|
+ <div class="title">
|
|
|
+ <span>智脑赛车</span><b>{{ equipmentData.SC.length }}</b
|
|
|
+ >台
|
|
|
+ </div>
|
|
|
+ <el-row :gutter="15">
|
|
|
+ <template v-for="item in equipmentData.SC" :key="item.sn">
|
|
|
+ <el-col :xs="12" :span="6">
|
|
|
+ <div class="box-card">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="9" class="img">
|
|
|
+ <div class="i suv"></div>
|
|
|
+ <div class="value">{{ item.sn }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="15" class="info">
|
|
|
+ <div class="label mb-2">固件版本</div>
|
|
|
+ <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
+ <div class="label mb-2">绑定时间</div>
|
|
|
+ <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
+ <div class="label mb-2">使用者</div>
|
|
|
+ <div class="value mb-2">{{ item.name }}</div>
|
|
|
+ <div class="value">{{ item.phone }}</div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </template>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div v-if="dataStatus.UF" class="equipment-box">
|
|
|
+ <div class="title">
|
|
|
+ <span>智脑UFO</span><b>{{ equipmentData.UF.length }}</b
|
|
|
+ >台
|
|
|
+ </div>
|
|
|
+ <el-row :gutter="15">
|
|
|
+ <template v-for="item in equipmentData.UF" :key="item.sn">
|
|
|
+ <el-col :xs="12" :span="6">
|
|
|
+ <div class="box-card">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="9" class="img">
|
|
|
+ <div class="i ufo"></div>
|
|
|
+ <div class="value">{{ item.sn }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="15" class="info">
|
|
|
+ <div class="label mb-2">固件版本</div>
|
|
|
+ <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
+ <div class="label mb-2">绑定时间</div>
|
|
|
+ <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
+ <div class="label mb-2">使用者</div>
|
|
|
+ <div class="value mb-2">{{ item.name }}</div>
|
|
|
+ <div class="value">{{ item.phone }}</div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </template>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div v-if="dataStatus.JM" class="equipment-box">
|
|
|
+ <div class="title">
|
|
|
+ <span>智脑积木</span><b>{{ equipmentData.JM.length }}</b
|
|
|
+ >台
|
|
|
+ </div>
|
|
|
+ <el-row :gutter="15">
|
|
|
+ <template v-for="item in equipmentData.JM" :key="item.sn">
|
|
|
+ <el-col :xs="12" :span="6">
|
|
|
+ <div class="box-card">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="9" class="img">
|
|
|
+ <div class="i jm"></div>
|
|
|
+ <div class="value">{{ item.sn }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="15" class="info">
|
|
|
+ <div class="label mb-2">固件版本</div>
|
|
|
+ <div class="value mb-4">{{ item.software_version }}</div>
|
|
|
+ <div class="label mb-2">绑定时间</div>
|
|
|
+ <div class="value mb-4">{{ item.create_time }}</div>
|
|
|
+ <div class="label mb-2">使用者</div>
|
|
|
+ <div class="value mb-2">{{ item.name }}</div>
|
|
|
+ <div class="value">{{ item.phone }}</div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </template>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <div class="empty">
|
|
|
+ <img src="../../assets/empty.png" alt="数据为空" />
|
|
|
+ <p>{{ dataMessage }}</p>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
.equipment-container {
|
|
|
- position: relative;
|
|
|
- padding: 20px 30px;
|
|
|
+ position: relative;
|
|
|
+ padding: 20px 30px;
|
|
|
}
|
|
|
|
|
|
.equipment-search {
|
|
|
- margin-bottom: 20px;
|
|
|
- font-size: 16px;
|
|
|
-
|
|
|
- .el-select {
|
|
|
- width: 180px;
|
|
|
- margin: 0 20px 0 0;
|
|
|
- }
|
|
|
-
|
|
|
- .el-input {
|
|
|
- width: 180px;
|
|
|
- margin: 0;
|
|
|
- }
|
|
|
-
|
|
|
- :deep(.el-input__inner) {
|
|
|
- font-size: 16px;
|
|
|
- }
|
|
|
-
|
|
|
- .el-button {
|
|
|
- font-size: 16px;
|
|
|
- padding: 0 26px;
|
|
|
- margin: 0 20px;
|
|
|
- border-radius: 12px;
|
|
|
- }
|
|
|
+ margin-bottom: 20px;
|
|
|
+ font-size: 16px;
|
|
|
+
|
|
|
+ .el-select {
|
|
|
+ width: 180px;
|
|
|
+ margin: 0 20px 0 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-input {
|
|
|
+ width: 180px;
|
|
|
+ margin: 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.el-input__inner) {
|
|
|
+ font-size: 16px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-button {
|
|
|
+ padding: 0 26px;
|
|
|
+ margin: 0 20px;
|
|
|
+ font-size: 16px;
|
|
|
+ border-radius: 12px;
|
|
|
+ }
|
|
|
}
|
|
|
-.empty{
|
|
|
- padding:200px 0;
|
|
|
-}
|
|
|
-/* 自定义 el-select 样式 */
|
|
|
-:deep(.el-input__wrapper) {
|
|
|
- background: #ffffff;
|
|
|
- border-radius: 12px;
|
|
|
+
|
|
|
+.empty {
|
|
|
+ padding: 200px 0;
|
|
|
}
|
|
|
|
|
|
+/* 自定义 el-select 样式 */
|
|
|
:deep(.el-input__wrapper) {
|
|
|
- box-shadow: none !important;
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 12px;
|
|
|
+ box-shadow: none !important;
|
|
|
}
|
|
|
|
|
|
:deep(.el-select) {
|
|
|
- --el-select-input-focus-border-color: none !important;
|
|
|
+ --el-select-input-focus-border-color: none !important;
|
|
|
}
|
|
|
|
|
|
:deep(.el-select .el-input__wrapper.is-focus) {
|
|
|
- box-shadow: none !important;
|
|
|
+ box-shadow: none !important;
|
|
|
}
|
|
|
|
|
|
:deep(.el-select:hover:not(.el-select--disabled) .el-input__wrapper) {
|
|
|
- box-shadow: none !important;
|
|
|
+ box-shadow: none !important;
|
|
|
}
|
|
|
|
|
|
.equipment-box {
|
|
|
- .title {
|
|
|
- font-size: 16px;
|
|
|
- color: #4284f2;
|
|
|
- text-indent: 0.5em;
|
|
|
-
|
|
|
- span {
|
|
|
- font-size: 24px;
|
|
|
- display: inline-block;
|
|
|
- min-width: 180px;
|
|
|
- }
|
|
|
-
|
|
|
- b {
|
|
|
- font-size: 28px;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- .box-card {
|
|
|
- background: #ffffff;
|
|
|
- border-radius: 30px;
|
|
|
- border: 1px solid #e6e8eb;
|
|
|
- position: relative;
|
|
|
- padding: 20px 0;
|
|
|
- font-size: 14px;
|
|
|
- margin-bottom: 10px;
|
|
|
-
|
|
|
- .info {
|
|
|
- border-left: 1px solid #e0e6f1;
|
|
|
- padding-left: 28px;
|
|
|
- line-height: 14px;
|
|
|
-
|
|
|
- .label {
|
|
|
- color: #999999;
|
|
|
- }
|
|
|
-
|
|
|
- .value {
|
|
|
- color: #23283c;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- .img {
|
|
|
- text-align: center;
|
|
|
-
|
|
|
- .i {
|
|
|
- width: 120px;
|
|
|
- height: 120px;
|
|
|
- margin: 0 auto;
|
|
|
-
|
|
|
- &.nj {
|
|
|
- background: url("../../assets/equipment/NJ.png") center center no-repeat;
|
|
|
- }
|
|
|
-
|
|
|
- &.sw {
|
|
|
- background: url("../../assets/equipment/SW.png") center center no-repeat;
|
|
|
- }
|
|
|
-
|
|
|
- &.kl {
|
|
|
- background: url("../../assets/equipment/KL.png") center center no-repeat;
|
|
|
- }
|
|
|
-
|
|
|
- &.suv {
|
|
|
- background: url("../../assets/equipment/SUV.png") center center no-repeat;
|
|
|
- }
|
|
|
-
|
|
|
- &.ufo {
|
|
|
- background: url("../../assets/equipment/UFO.png") center center no-repeat;
|
|
|
- }
|
|
|
-
|
|
|
- &.ppc {
|
|
|
- background: url("../../assets/equipment/PPC.png") center center no-repeat;
|
|
|
- }
|
|
|
-
|
|
|
- &.sc {
|
|
|
- background: url("../../assets/equipment/SC.png") center center no-repeat;
|
|
|
- }
|
|
|
-
|
|
|
- &.jm {
|
|
|
- background: url("../../assets/equipment/JM.png") center center no-repeat;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ .title {
|
|
|
+ font-size: 16px;
|
|
|
+ color: #4284f2;
|
|
|
+ text-indent: 0.5em;
|
|
|
+
|
|
|
+ span {
|
|
|
+ display: inline-block;
|
|
|
+ min-width: 180px;
|
|
|
+ font-size: 24px;
|
|
|
+ }
|
|
|
+
|
|
|
+ b {
|
|
|
+ font-size: 28px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .box-card {
|
|
|
+ position: relative;
|
|
|
+ padding: 20px 0;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ font-size: 14px;
|
|
|
+ background: #fff;
|
|
|
+ border: 1px solid #e6e8eb;
|
|
|
+ border-radius: 30px;
|
|
|
+
|
|
|
+ .info {
|
|
|
+ padding-left: 28px;
|
|
|
+ line-height: 14px;
|
|
|
+ border-left: 1px solid #e0e6f1;
|
|
|
+
|
|
|
+ .label {
|
|
|
+ color: #999;
|
|
|
+ }
|
|
|
+
|
|
|
+ .value {
|
|
|
+ color: #23283c;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .img {
|
|
|
+ text-align: center;
|
|
|
+
|
|
|
+ .i {
|
|
|
+ width: 120px;
|
|
|
+ height: 120px;
|
|
|
+ margin: 0 auto;
|
|
|
+
|
|
|
+ &.nj {
|
|
|
+ background: url("../../assets/equipment/NJ.png") center center
|
|
|
+ no-repeat;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.sw {
|
|
|
+ background: url("../../assets/equipment/SW.png") center center
|
|
|
+ no-repeat;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.kl {
|
|
|
+ background: url("../../assets/equipment/KL.png") center center
|
|
|
+ no-repeat;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.suv {
|
|
|
+ background: url("../../assets/equipment/SUV.png") center center
|
|
|
+ no-repeat;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.ufo {
|
|
|
+ background: url("../../assets/equipment/UFO.png") center center
|
|
|
+ no-repeat;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.ppc {
|
|
|
+ background: url("../../assets/equipment/PPC.png") center center
|
|
|
+ no-repeat;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.sc {
|
|
|
+ background: url("../../assets/equipment/SC.png") center center
|
|
|
+ no-repeat;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.jm {
|
|
|
+ background: url("../../assets/equipment/JM.png") center center
|
|
|
+ no-repeat;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|