Commit f39b4be3 authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents 2e61f738 f2b5ee4e
...@@ -36,3 +36,30 @@ export const delDeviceMatter = (params) => { ...@@ -36,3 +36,30 @@ export const delDeviceMatter = (params) => {
params, params,
}); });
}; };
// 修改保存设备信息
export const saveDevice = (data) => {
return request({
url: `/sampleform/device/save`,
method: "post",
data,
});
};
// 设备激活
export const saveDeviceActive = (data) => {
return request({
url: `/sampleform/device/active`,
method: "post",
data,
});
};
// 设备启停用
export const saveDeviceEnable = (data) => {
return request({
url: `/sampleform/device/enable`,
method: "post",
data,
});
};
...@@ -21,11 +21,21 @@ ...@@ -21,11 +21,21 @@
--> -->
</div> </div>
<div slot="right" class="flex"> <div slot="right" class="flex">
<el-select
class="select"
size="small"
v-model="type"
placeholder="请选择搜索类型"
>
<el-option label="按设备名称" :value="1"> </el-option>
<el-option label="按mac地址" :value="2"> </el-option>
<el-option label="按设备IP" :value="3"> </el-option>
</el-select>
<el-input <el-input
size="small" size="small"
v-model="searchVal" v-model="searchVal"
class="ml10 mr10" class="ml10 mr10"
placeholder="请输入设备名称搜索" placeholder="请输入关键字搜索"
@keyup.native.enter="handleSearch" @keyup.native.enter="handleSearch"
></el-input> ></el-input>
<el-button size="small" type="primary" @click="handleSearch" <el-button size="small" type="primary" @click="handleSearch"
...@@ -114,37 +124,44 @@ ...@@ -114,37 +124,44 @@
<el-tag size="small" v-else type="danger">离线</el-tag> <el-tag size="small" v-else type="danger">离线</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column align="center" prop="enabled" label="启用/停用"> <el-table-column align="center" prop="enabled" label="启用/停用">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag <el-switch
size="small" class="tableScopeSwitch"
:type="scope.row.enabled === 1 ? 'success' : 'danger'" :active-value="1"
>{{ scope.row.enabled === 1 ? "" : "" }}</el-tag :inactive-value="0"
v-model="scope.row.enabled"
@change="handleChange(scope.row)"
inactive-text="停用"
active-text="启用"
> >
</el-switch>
</template> </template>
</el-table-column> --> </el-table-column>
<el-table-column align="center" label="操作" width="100"> <el-table-column align="center" prop="deviceRemark" label="备注">
</el-table-column>
<el-table-column align="center" label="操作" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="flex jca"> <div class="flex jca">
<!-- <span <span
v-if="scope.row.active !== 1" v-if="scope.row.deviceStatus == 0"
class="primary pointer" class="primary pointer"
@click="handleActive(scope.row)" @click="handleActive(scope.row)"
>激活</span >激活</span
> >
<span <span
v-if="scope.row.active == 1" v-if="scope.row.active != 0"
style="opacity: 0" style="opacity: 0"
class="primary" class="primary"
>激活</span >激活</span
> --> >
<span class="primary pointer" @click="handleBound(scope.row)" <span class="primary pointer" @click="handleBound(scope.row)"
>绑定表单</span >绑定表单</span
> >
<!-- <span class="primary pointer" @click="handleEdit(scope.row)" <span class="primary pointer" @click="handleEdit(scope.row)"
>编辑</span >编辑</span
> >
<span class="delete pointer" @click="handleDel(scope.row.id)" <!-- <span class="delete pointer" @click="handleDel(scope.row.id)"
>删除</span >删除</span
> --> > -->
</div> </div>
...@@ -162,9 +179,11 @@ ...@@ -162,9 +179,11 @@
</el-card> </el-card>
<!-- 新增设备 --> <!-- 新增设备 -->
<AddDevice <AddDevice
:dict="dict"
:dialogVisible.sync="dialogVisible" :dialogVisible.sync="dialogVisible"
:title="title" :title="title"
ref="AddDevice" ref="AddDevice"
@addSuccess="getDeviceList"
></AddDevice> ></AddDevice>
<!-- 关联事项 --> <!-- 关联事项 -->
<AddMatter ref="AddMatter" :matterDrawer.sync="matterDrawer"></AddMatter> <AddMatter ref="AddMatter" :matterDrawer.sync="matterDrawer"></AddMatter>
...@@ -176,7 +195,11 @@ import TableHeader from "@/components/TableHeader.vue"; ...@@ -176,7 +195,11 @@ import TableHeader from "@/components/TableHeader.vue";
import Pagination from "@/components/Pagination.vue"; import Pagination from "@/components/Pagination.vue";
import AddMatter from "./modal/AddMatter.vue"; import AddMatter from "./modal/AddMatter.vue";
import AddDevice from "./modal/AddDevice.vue"; import AddDevice from "./modal/AddDevice.vue";
import { getDeviceList } from "@/api/device"; import {
getDeviceList,
saveDeviceEnable,
saveDeviceActive,
} from "@/api/device";
import local from "@/utils/local"; import local from "@/utils/local";
export default { export default {
components: { components: {
...@@ -199,6 +222,8 @@ export default { ...@@ -199,6 +222,8 @@ export default {
title: "新增数字样表设备", title: "新增数字样表设备",
loading: false, loading: false,
matterDrawer: false, matterDrawer: false,
dict: {}, // 字典
type: 1,
}; };
}, },
created() { created() {
...@@ -208,18 +233,29 @@ export default { ...@@ -208,18 +233,29 @@ export default {
// 获取设备列表 // 获取设备列表
async getDeviceList() { async getDeviceList() {
this.loading = true; this.loading = true;
let res = await getDeviceList({ let obj = {
siteId: this.siteId, siteId: this.siteId,
page: this.current, page: this.current,
size: this.size, size: this.size,
deviceName: `%${this.searchVal}%`,
productName: "样表机", productName: "样表机",
}); };
if (this.type == 1) {
obj.deviceName = `%${this.searchVal}%`;
} else if (this.type == 2) {
obj.deviceMac = `%${this.searchVal}%`;
} else if (this.type == 3) {
obj.ip = `%${this.searchVal}%`;
}
let res = await getDeviceList(obj);
this.loading = false; this.loading = false;
let { data, total } = res.data.data; if (res.data.code == 1) {
this.total = total; let { data, total, dict } = res.data.data;
this.tableData = data; this.total = total;
this.$refs.multipleTable.bodyWrapper.scrollTop = 0; this.tableData = data;
this.dict = dict;
this.$refs.multipleTable.bodyWrapper.scrollTop = 0;
}
}, },
// 新增 // 新增
handleAdd() { handleAdd() {
...@@ -237,6 +273,7 @@ export default { ...@@ -237,6 +273,7 @@ export default {
searchReset() { searchReset() {
this.searchVal = ""; this.searchVal = "";
this.current = 1; this.current = 1;
this.type = 1;
this.getDeviceList(); this.getDeviceList();
}, },
// 翻页 // 翻页
...@@ -262,7 +299,12 @@ export default { ...@@ -262,7 +299,12 @@ export default {
type: "warning", type: "warning",
}) })
.then(async () => { .then(async () => {
console.log(row); let res = await saveDeviceActive({ deviceCode: row.deviceCode });
let { code, msg } = res.data;
if (code == 1) {
this.$message.success(msg);
this.getDeviceList();
}
}) })
.catch(() => { .catch(() => {
console.log("取消成功!"); console.log("取消成功!");
...@@ -290,8 +332,17 @@ export default { ...@@ -290,8 +332,17 @@ export default {
}); });
}, },
// 启停用 // 启停用
handleChange(row) { async handleChange(row) {
console.log(row); let obj = {
id: row.id,
enabled: row.enabled,
};
let res = await saveDeviceEnable(obj);
let { code } = res.data;
if (code == 1) {
this.$message.success("修改成功");
this.getDeviceList();
}
}, },
// 绑定表单 // 绑定表单
handleBound(row) { handleBound(row) {
...@@ -312,6 +363,9 @@ export default { ...@@ -312,6 +363,9 @@ export default {
:deep(.el-card) { :deep(.el-card) {
height: auto; height: auto;
} }
.select {
width: 220px !important;
}
} }
// .table-content { // .table-content {
// height: 550px; // height: 550px;
......
...@@ -6,37 +6,48 @@ ...@@ -6,37 +6,48 @@
width="50%" width="50%"
@close="handleClose" @close="handleClose"
> >
<el-form ref="form" size="small" :model="form" label-width="80px"> <el-form
ref="form"
size="small"
:model="form"
:rules="rules"
label-width="80px"
>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12" <el-col :span="12"
><el-form-item label="设备名称" prop="name"> ><el-form-item label="设备名称" prop="deviceName">
<el-input <el-input
v-model="form.name" v-model="form.deviceName"
placeholder="请输入设备名称" placeholder="请输入设备名称"
></el-input> </el-form-item ></el-input> </el-form-item
></el-col> ></el-col>
<el-col :span="12" <el-col :span="12"
><el-form-item label="设备类型" prop="name"> ><el-form-item label="设备类型">
<el-input <el-input disabled value="数字样表"></el-input> </el-form-item
v-model="form.name"
placeholder="请输入设备名称"
></el-input> </el-form-item
></el-col> ></el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12" <el-col :span="12"
><el-form-item label="mac地址" prop="name"> ><el-form-item label="mac地址" prop="deviceMac">
<el-input <el-input
v-model="form.name" v-model="form.deviceMac"
placeholder="请输入mac地址" placeholder="请输入mac地址"
></el-input> </el-form-item ></el-input> </el-form-item
></el-col> ></el-col>
<el-col :span="12" <el-col :span="12"
><el-form-item label="设备厂商" prop="name"> ><el-form-item label="设备厂商" prop="deviceFirmId">
<el-input <el-select
v-model="form.name" v-model="form.deviceFirmId"
placeholder="请输入设备厂商" placeholder="请选择设备厂商"
></el-input> </el-form-item >
<el-option
v-for="(v, key) in dict.deviceFirmId"
:key="key"
:label="v"
:value="Number(key)"
>
</el-option>
</el-select> </el-form-item
></el-col> ></el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
...@@ -53,60 +64,70 @@ ...@@ -53,60 +64,70 @@
</el-select> </el-form-item </el-select> </el-form-item
></el-col> ></el-col>
<el-col :span="12" <el-col :span="12"
><el-form-item label="设备IP" prop="name"> ><el-form-item label="设备IP" prop="ip">
<el-input <el-input
v-model="form.name" v-model="form.ip"
placeholder="请输入设备IP" placeholder="请输入设备IP"
></el-input> </el-form-item ></el-input> </el-form-item
></el-col> ></el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12" <el-col :span="12"
><el-form-item label="端口号" prop="name"> ><el-form-item label="端口号" prop="port">
<el-input <el-input
v-model="form.name" v-model="form.port"
placeholder="请输入端口号" placeholder="请输入端口号"
></el-input> </el-form-item ></el-input> </el-form-item
></el-col> ></el-col>
<el-col :span="12" <el-col :span="12"
><el-form-item label="负责人" prop="name"> ><el-form-item label="负责人" prop="leadingOfficial">
<el-input <el-input
v-model="form.name" v-model="form.leadingOfficial"
placeholder="请输入责任人姓名" placeholder="请输入责任人姓名"
></el-input> </el-form-item ></el-input> </el-form-item
></el-col> ></el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12" <el-col :span="12"
><el-form-item label="手机号" prop="name"> ><el-form-item label="手机号" prop="leadingOfficialTelephone">
<el-input <el-input
v-model="form.name" v-model="form.leadingOfficialTelephone"
placeholder="请输入责任人手机号" placeholder="请输入责任人手机号"
></el-input> </el-form-item ></el-input> </el-form-item
></el-col> ></el-col>
<el-col :span="12" <el-col :span="12"
><el-form-item label="设备位置" prop="name"> ><el-form-item label="设备经度" prop="lon">
<el-input <el-input
v-model="form.name" v-model="form.lon"
placeholder="请输入设备位置(X坐标,Y坐标)" placeholder="请输入设备经度"
></el-input> </el-form-item ></el-input> </el-form-item
></el-col> ></el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12" <el-col :span="12"
><el-form-item label="所在楼栋" prop="name"> ><el-form-item label="设备纬度" prop="lati">
<el-input
v-model="form.lati"
placeholder="请输入设备纬度"
></el-input> </el-form-item
></el-col>
<el-col :span="12"
><el-form-item label="所在楼栋" prop="deviceInBuilding">
<el-input-number <el-input-number
v-model="form.num" v-model="form.deviceInBuilding"
controls-position="right" controls-position="right"
:min="1" :min="1"
:max="100" :max="100"
placeholder="请输入楼栋" placeholder="请输入楼栋"
></el-input-number> </el-form-item ></el-input-number> </el-form-item
></el-col> ></el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12" <el-col :span="12"
><el-form-item label="所在楼层" prop="name"> ><el-form-item label="所在楼层" prop="deviceInFloor">
<el-input-number <el-input-number
v-model="form.num" v-model="form.deviceInFloor"
controls-position="right" controls-position="right"
:min="1" :min="1"
:max="100" :max="100"
...@@ -116,13 +137,13 @@ ...@@ -116,13 +137,13 @@
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="24" <el-col :span="24"
><el-form-item label="备注" prop="name"> ><el-form-item label="备注" prop="deviceRemark">
<el-input <el-input
type="textarea" type="textarea"
:autosize="{ minRows: 4, maxRows: 4 }" :autosize="{ minRows: 4, maxRows: 4 }"
clearable clearable
placeholder="请输入备注" placeholder="请输入备注"
v-model="form.textarea" v-model="form.deviceRemark"
resize="none" resize="none"
> >
</el-input> </el-form-item </el-input> </el-form-item
...@@ -140,6 +161,7 @@ ...@@ -140,6 +161,7 @@
</template> </template>
<script> <script>
import { saveDevice } from "@/api/device";
export default { export default {
props: { props: {
title: { title: {
...@@ -152,11 +174,53 @@ export default { ...@@ -152,11 +174,53 @@ export default {
required: true, required: true,
default: false, default: false,
}, },
dict: {
type: Object,
required: true,
default: () => {},
},
}, },
data() { data() {
return { return {
form: { form: {
name: "", deviceId: "", // 设备id
deviceName: "", // 设备名称
deviceCode: "", // 设备编码
deviceMac: "", // 设备的MAC地址
siteId: "", // 站点Id
siteCode: "", // 站点编号
siteName: "", // 站点名称
productCode: "", // 产品编码
productName: "", // 产品名称
deviceSrc: "", // 设备来源(0.子设备,1.网关设备,2.直连设备)
lon: "", // 经度
lati: "", // 纬度
leadingOfficial: "", // 负责人
leadingOfficialTelephone: "", // 联系电话
// deviceStatus: "", // 设备状态 (0.未激活,1.离线,2.在线)
deviceRemark: "", // 备注
source: "", // 设备来源(0.旧设备,1.新设备)
deviceFirmId: "", // 设备生产厂商ID
deviceFirmname: "", // 设备生产厂商名称
ip: "", // 设备访问ip
port: "", // 端口
// enabled: "", // 启用状态 (0.停止,1.启用)
deviceInBuilding: "", // 所在楼宇
deviceInFloor: "", // 所在楼层
},
rules: {
deviceName: [
{ required: true, message: "请输入设备名称", trigger: "blur" },
],
deviceMac: [
{ required: true, message: "请输入设备mac地址", trigger: "blur" },
],
leadingOfficial: [
{ required: true, message: "请输入负责人姓名", trigger: "blur" },
],
leadingOfficialTelephone: [
{ required: true, message: "请输入负责人手机号码", trigger: "blur" },
],
}, },
options: [ options: [
{ {
...@@ -185,7 +249,17 @@ export default { ...@@ -185,7 +249,17 @@ export default {
this.$refs.form.resetFields(); this.$refs.form.resetFields();
}, },
handleOk() { handleOk() {
console.log(1); this.$refs.form.validate(async (valid) => {
if (valid) {
let res = await saveDevice(this.form);
let { code, msg } = res.data;
if (code == 1) {
this.$message.success(msg);
this.$emit("addSuccess");
this.handleClose();
}
}
});
}, },
// 新增 // 新增
onAdd() { onAdd() {
......
...@@ -82,20 +82,50 @@ export default { ...@@ -82,20 +82,50 @@ export default {
}, },
// 选择使用皮肤 // 选择使用皮肤
async changeSkin(row) { async changeSkin(row) {
let _this = this;
let obj = { let obj = {
id: row.id, id: row.id,
siteId: row.id, siteId: row.id,
}; };
if (row.used == 1) { if (row.used == 1) {
obj.used = 0; obj.used = 0;
this.$confirm("此操作将会取消正在使用的皮肤,是否继续?", "系统提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
cancelButtonClass: "btn-custom-cancel",
type: "warning",
})
.then(async () => {
let res = await useSkin(obj);
let { code, msg } = res.data;
if (code == 1) {
_this.$message.success(msg);
_this.getSkinList();
}
})
.catch(() => {
console.log("取消成功!");
});
} else { } else {
obj.used = 1; obj.used = 1;
} this.$confirm("确定要使用所选皮肤吗?", "系统提示", {
let res = await useSkin(obj); confirmButtonText: "确定",
let { code, msg } = res.data; cancelButtonText: "取消",
if (code == 1) { cancelButtonClass: "btn-custom-cancel",
this.$message.success(msg); type: "success",
this.getSkinList(); iconClass: "el-icon-question",
})
.then(async () => {
let res = await useSkin(obj);
let { code, msg } = res.data;
if (code == 1) {
_this.$message.success(msg);
_this.getSkinList();
}
})
.catch(() => {
console.log("取消成功!");
});
} }
}, },
// 预览皮肤 // 预览皮肤
......
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