|
|
@@ -4,7 +4,9 @@
|
|
|
<!-- 标题区域 -->
|
|
|
<div slot="header" class="clearfix">
|
|
|
<el-breadcrumb separator-class="el-icon-arrow-right">
|
|
|
- <el-breadcrumb-item :to="{ path: '/home' }">房态管理</el-breadcrumb-item>
|
|
|
+ <el-breadcrumb-item :to="{ path: '/home' }"
|
|
|
+ >房态管理</el-breadcrumb-item
|
|
|
+ >
|
|
|
<el-breadcrumb-item>IC卡管理</el-breadcrumb-item>
|
|
|
</el-breadcrumb>
|
|
|
</div>
|
|
|
@@ -49,7 +51,12 @@
|
|
|
>
|
|
|
<i slot="prefix" class="el-input__icon el-icon-search"></i>
|
|
|
</el-input>-->
|
|
|
- <el-select v-model="queryUserType" clearable placeholder="请选择类型" @change="getData(1)">
|
|
|
+ <el-select
|
|
|
+ v-model="queryUserType"
|
|
|
+ clearable
|
|
|
+ placeholder="请选择类型"
|
|
|
+ @change="getData(1)"
|
|
|
+ >
|
|
|
<el-option label="普通用户" value="1"></el-option>
|
|
|
<el-option label="管理员" value="0"></el-option>
|
|
|
</el-select>
|
|
|
@@ -87,12 +94,18 @@
|
|
|
<el-form :model="icCardInfo" label-position="top">
|
|
|
<div class="left">
|
|
|
<el-form-item label="卡类型">
|
|
|
- <el-select v-model="icCardInfo.cardType" placeholder="请选择卡类型">
|
|
|
+ <el-select
|
|
|
+ v-model="icCardInfo.cardType"
|
|
|
+ placeholder="请选择卡类型"
|
|
|
+ >
|
|
|
<el-option label="IC卡" value="IC卡"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="状态">
|
|
|
- <el-select v-model="icCardInfo.statu" placeholder="请选择状态">
|
|
|
+ <el-select
|
|
|
+ v-model="icCardInfo.statu"
|
|
|
+ placeholder="请选择状态"
|
|
|
+ >
|
|
|
<el-option label="生效" value="1"></el-option>
|
|
|
<el-option label="失效" value="0"></el-option>
|
|
|
</el-select>
|
|
|
@@ -112,7 +125,7 @@
|
|
|
</div>
|
|
|
<div class="right">
|
|
|
<el-form-item label="卡号">
|
|
|
- <el-input v-model="icCardInfo.cardId"></el-input>
|
|
|
+ <el-input v-model="icCardInfo.cardNumber"></el-input>
|
|
|
<span
|
|
|
style="
|
|
|
position: absolute;
|
|
|
@@ -120,7 +133,22 @@
|
|
|
color: #296de3;
|
|
|
cursor: pointer;
|
|
|
"
|
|
|
- >读卡</span>
|
|
|
+ @click="icCardS"
|
|
|
+ >读卡</span
|
|
|
+ >
|
|
|
+ <el-dialog
|
|
|
+ :visible.sync="icCardShow"
|
|
|
+ :append-to-body="true"
|
|
|
+ custom-class="fingerprint"
|
|
|
+ >
|
|
|
+ <div class="elbodys">
|
|
|
+ <span class="title">读取卡号</span>
|
|
|
+ <i class="el-icon-close" @click="icCardClose"></i>
|
|
|
+ </div>
|
|
|
+ <div class="el-footer">
|
|
|
+ {{ icTitle }}:{{ icCardInfo.cardNumber }}
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="姓名">
|
|
|
@@ -133,7 +161,8 @@
|
|
|
cursor: pointer;
|
|
|
"
|
|
|
@click="Editstaff"
|
|
|
- >员工</span>
|
|
|
+ >员工</span
|
|
|
+ >
|
|
|
<el-dialog
|
|
|
title="添加员工"
|
|
|
:visible.sync="selectStaffShow"
|
|
|
@@ -163,18 +192,27 @@
|
|
|
<ul class="infinite-list" style="overflow: auto">
|
|
|
<li class="infinite-list-item" v-show="title">
|
|
|
<span style="margin-left: 19px">{{ title }}</span>
|
|
|
- <i class="el-icon-close" @click="cancelCheck"></i>
|
|
|
+ <!-- <i class="el-icon-close" @click="cancelCheck"></i> -->
|
|
|
</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="selectStaffShow = false">取 消</el-button>
|
|
|
- <el-button type="primary" @click="selectStaffShow = false">确 定</el-button>
|
|
|
+ <el-button @click="selectStaffShow = false"
|
|
|
+ >取 消</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ @click="selectStaffShow = false"
|
|
|
+ >确 定</el-button
|
|
|
+ >
|
|
|
</span>
|
|
|
</el-dialog>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="用户类型">
|
|
|
- <el-select v-model="icCardInfo.userType " placeholder="用户">
|
|
|
+ <el-select
|
|
|
+ v-model="icCardInfo.userType"
|
|
|
+ placeholder="用户"
|
|
|
+ >
|
|
|
<el-option label="普通用户" value="1"></el-option>
|
|
|
<el-option label="管理员" value="0"></el-option>
|
|
|
</el-select>
|
|
|
@@ -189,7 +227,11 @@
|
|
|
@change="endT"
|
|
|
></el-date-picker>
|
|
|
</el-form-item>
|
|
|
- <el-radio-group v-model="radio" v-show="selectTime" @change="radioChange">
|
|
|
+ <el-radio-group
|
|
|
+ v-model="radio"
|
|
|
+ v-show="selectTime"
|
|
|
+ @change="radioChange"
|
|
|
+ >
|
|
|
<el-radio label="一个星期">一个星期</el-radio>
|
|
|
<el-radio label="一个月">一个月</el-radio>
|
|
|
<el-radio label="半年">半年</el-radio>
|
|
|
@@ -218,7 +260,7 @@
|
|
|
:cell-style="rowbg"
|
|
|
:header-cell-style="{
|
|
|
color: ' rgba(0, 0, 0, 1)',
|
|
|
- background: 'rgba(240, 243, 247, 1)',
|
|
|
+ background: 'rgba(240, 243, 247, 1)'
|
|
|
}"
|
|
|
>
|
|
|
<!-- <el-table-column type="selection" width="60" align="center"></el-table-column> -->
|
|
|
@@ -240,17 +282,40 @@
|
|
|
<!-- <template slot-scope="{ row }">{{ options[row.order.orderStatu].label }}</template> -->
|
|
|
</el-table-column>
|
|
|
|
|
|
- <el-table-column prop="takeTime" align="center" width="200" label="生效时间"></el-table-column>
|
|
|
- <el-table-column prop="failureTime" align="center" width="200" label="失效时间"></el-table-column>
|
|
|
- <el-table-column prop="holderName" align="center" label="持卡人姓名"></el-table-column>
|
|
|
- <el-table-column prop="createTime" align="center" width="200" label="创建时间"></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="takeTime"
|
|
|
+ align="center"
|
|
|
+ width="200"
|
|
|
+ label="生效时间"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="failureTime"
|
|
|
+ align="center"
|
|
|
+ width="200"
|
|
|
+ label="失效时间"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="holderName"
|
|
|
+ align="center"
|
|
|
+ label="持卡人姓名"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="createTime"
|
|
|
+ align="center"
|
|
|
+ width="200"
|
|
|
+ label="创建时间"
|
|
|
+ ></el-table-column>
|
|
|
<el-table-column align="center" label="用户类型">
|
|
|
<template slot-scope="scope">
|
|
|
- <span>{{ scope.row.userType==1?'普通用户':'管理员' }}</span>
|
|
|
+ <span>{{
|
|
|
+ scope.row.userType == 1 ? "普通用户" : "管理员"
|
|
|
+ }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="statu" align="center" label="状态">
|
|
|
- <template slot-scope="{ row }">{{ row.statu==0?"失效":"生效"}}</template>
|
|
|
+ <template slot-scope="{ row }">{{
|
|
|
+ row.statu == 0 ? "失效" : "生效"
|
|
|
+ }}</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="address" align="center" label="操作">
|
|
|
<template slot-scope="{ row }">
|
|
|
@@ -321,60 +386,33 @@ export default {
|
|
|
},
|
|
|
title: "",
|
|
|
data: [
|
|
|
- {
|
|
|
- id: 1,
|
|
|
- label: "清洁部",
|
|
|
- disabled: true,
|
|
|
- children: [
|
|
|
- {
|
|
|
- id: 4,
|
|
|
- label: "张三"
|
|
|
- },
|
|
|
- {
|
|
|
- id: 5,
|
|
|
- label: "张三"
|
|
|
- },
|
|
|
- {
|
|
|
- id: 6,
|
|
|
- label: "张三"
|
|
|
- },
|
|
|
- {
|
|
|
- id: 7,
|
|
|
- label: "张三"
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- id: 2,
|
|
|
- label: "修理部",
|
|
|
- disabled: true,
|
|
|
- children: [
|
|
|
- {
|
|
|
- id: 8,
|
|
|
- label: "李四"
|
|
|
- },
|
|
|
- {
|
|
|
- id: 9,
|
|
|
- label: "李四"
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- id: 3,
|
|
|
- label: "管理部",
|
|
|
- disabled: true,
|
|
|
- children: [
|
|
|
- {
|
|
|
- id: 10,
|
|
|
- label: "王五"
|
|
|
- },
|
|
|
- {
|
|
|
- id: 11,
|
|
|
- label: "王五"
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- ],
|
|
|
+ // {
|
|
|
+ // id: 1,
|
|
|
+ // label: "清洁部",
|
|
|
+ // disabled: true,
|
|
|
+ // children: [
|
|
|
+ // {
|
|
|
+ // id: 4,
|
|
|
+ // label: "张三"
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // id: 5,
|
|
|
+ // label: "张三"
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // id: 6,
|
|
|
+ // label: "张三"
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // id: 7,
|
|
|
+ // label: "张三"
|
|
|
+ // }
|
|
|
+ // ]
|
|
|
+ // }
|
|
|
+ ], // 员工列表
|
|
|
+
|
|
|
+ icCardShow: false, // 读取卡号页面弹窗
|
|
|
+ icTitle: "请放置卡片", // 卡片读取状态
|
|
|
|
|
|
// 筛选查询卡号绑定数据
|
|
|
queryValue: "",
|
|
|
@@ -405,7 +443,37 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
|
- this.roomNo = this.$route.params.roomNo;
|
|
|
+ this.roomNo = JSON.parse(sessionStorage.getItem("roomNo"));
|
|
|
+ this.API.hotelStaff
|
|
|
+ .departList()
|
|
|
+ .then(res => {
|
|
|
+ console.log(res, "员工类型");
|
|
|
+
|
|
|
+ let data = [];
|
|
|
+ res.data.forEach(item => {
|
|
|
+ let children = [];
|
|
|
+ item.staffs.forEach(i => {
|
|
|
+ children.push({
|
|
|
+ label: i.username,
|
|
|
+ id: i.id
|
|
|
+ });
|
|
|
+ });
|
|
|
+ let arr = {
|
|
|
+ id: item.id,
|
|
|
+ label: item.department,
|
|
|
+ disabled: true,
|
|
|
+ children
|
|
|
+ };
|
|
|
+
|
|
|
+ data.push(arr);
|
|
|
+ });
|
|
|
+
|
|
|
+ this.data = data;
|
|
|
+ console.log(data);
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ console.log(err);
|
|
|
+ });
|
|
|
this.getData();
|
|
|
},
|
|
|
methods: {
|
|
|
@@ -448,7 +516,8 @@ export default {
|
|
|
roomNo: row.roomNo,
|
|
|
cardId: row.cardNumber,
|
|
|
name: row.holderName,
|
|
|
- statu: row.statu
|
|
|
+ statu: row.statu,
|
|
|
+ cardNumber: row.cardNumber
|
|
|
};
|
|
|
this.startTime = row.takeTime;
|
|
|
this.endTime = row.failureTime;
|
|
|
@@ -464,7 +533,8 @@ export default {
|
|
|
cardId: "",
|
|
|
name: "",
|
|
|
radio: "一个星期",
|
|
|
- statu: "1"
|
|
|
+ statu: "1",
|
|
|
+ cardNumber: ""
|
|
|
};
|
|
|
this.startTime = dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss");
|
|
|
this.endTime = dayjs(new Date())
|
|
|
@@ -478,8 +548,9 @@ export default {
|
|
|
console.log("编辑");
|
|
|
let params = {
|
|
|
id: this.icCardInfo.id,
|
|
|
- cardNumber: this.icCardInfo.cardId,
|
|
|
+ cardNumber: this.icCardInfo.cardNumber,
|
|
|
roomNo: this.icCardInfo.roomNo,
|
|
|
+
|
|
|
holderName: this.icCardInfo.name,
|
|
|
userType: this.icCardInfo.userType,
|
|
|
takeTime: this.startTime,
|
|
|
@@ -500,7 +571,7 @@ export default {
|
|
|
} else if (this.nameValue == "新增") {
|
|
|
console.log("新增");
|
|
|
let params = {
|
|
|
- cardNumber: this.icCardInfo.cardId,
|
|
|
+ cardNumber: this.icCardInfo.cardNumber,
|
|
|
roomNo: this.icCardInfo.roomNo,
|
|
|
holderName: this.icCardInfo.name,
|
|
|
userType: this.icCardInfo.userType,
|
|
|
@@ -560,7 +631,45 @@ export default {
|
|
|
}
|
|
|
// console.log(this.startTime, this.endTime);
|
|
|
},
|
|
|
+ // 读取卡号弹窗
|
|
|
+ icCardS() {
|
|
|
+ this.icCardShow = true;
|
|
|
+ let _this = this;
|
|
|
+ _this.icCardInfo.cardNumber = "";
|
|
|
+ var wsUrl = "ws://localhost:8181/";
|
|
|
+ let websocket = new WebSocket(wsUrl);
|
|
|
+ websocket.onopen = function(evt) {
|
|
|
+ var params = { type: 104, data: null };
|
|
|
+ websocket.send(JSON.stringify(params));
|
|
|
+ };
|
|
|
|
|
|
+ websocket.onmessage = function(evt) {
|
|
|
+ let data = JSON.parse(evt.data);
|
|
|
+ console.log(data);
|
|
|
+ if (data.type == 150) {
|
|
|
+ // _this.$message.error("未放置卡片")
|
|
|
+ _this.icTitle = "未放置卡片,请重新读卡";
|
|
|
+ setTimeout(() => {
|
|
|
+ _this.icCardShow = false;
|
|
|
+ }, 2000);
|
|
|
+ } else if (data.type == 141) {
|
|
|
+ _this.icTitle = "获取卡号失败";
|
|
|
+ setTimeout(() => {
|
|
|
+ _this.icCardShow = false;
|
|
|
+ }, 2000);
|
|
|
+ } else if (data.type == 140) {
|
|
|
+ _this.icTitle = "获取卡号成功";
|
|
|
+ _this.icCardInfo.cardNumber = data.data.uid;
|
|
|
+ setTimeout(() => {
|
|
|
+ _this.icCardShow = false;
|
|
|
+ }, 2000);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ },
|
|
|
+ // 关闭读取卡号弹窗
|
|
|
+ icCardClose() {
|
|
|
+ this.icCardShow = false;
|
|
|
+ },
|
|
|
//员工弹窗
|
|
|
Editstaff() {
|
|
|
this.selectStaffShow = true;
|
|
|
@@ -1118,6 +1227,45 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+/deep/ .fingerprint {
|
|
|
+ width: 800px;
|
|
|
+ height: 600px;
|
|
|
+ .el-dialog__header {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ .el-dialog__body {
|
|
|
+ width: 100%;
|
|
|
+ height: 70px;
|
|
|
+ padding: 0;
|
|
|
+ border-bottom: 1px solid #ccc;
|
|
|
+ .elbodys {
|
|
|
+ width: 100%;
|
|
|
+ height: 70px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ font-size: 18px;
|
|
|
+ color: #000;
|
|
|
+
|
|
|
+ .el-icon-close {
|
|
|
+ cursor: pointer;
|
|
|
+ margin-right: 20px;
|
|
|
+ }
|
|
|
+ .title {
|
|
|
+ margin-left: 20px;
|
|
|
+ }
|
|
|
+ .el-button--primary {
|
|
|
+ background: #296de3;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-footer {
|
|
|
+ height: 350px;
|
|
|
+ margin: 30px auto;
|
|
|
+ font-size: 40px;
|
|
|
+ font-weight: 800;
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|
|
|
<style lang="scss">
|
|
|
.el-message-box__wrapper {
|
|
|
@@ -1125,4 +1273,4 @@ export default {
|
|
|
background-color: #296de3;
|
|
|
}
|
|
|
}
|
|
|
-</style>
|
|
|
+</style>
|