hzj18279462576@163.com před 3 roky
rodič
revize
bb03c7f1ae

+ 2 - 2
admin/config/index.js

@@ -6,14 +6,14 @@ const path = require('path')
 
 
 module.exports = {
 module.exports = {
   dev: {
   dev: {
-    // http://192.168.161.230:8089线下地址
+    // http://192.168.161.34:8089线下地址
     // https://chtech.ncjti.edu.cn/hotel/ihotel-api线上地址
     // https://chtech.ncjti.edu.cn/hotel/ihotel-api线上地址
     // Paths
     // Paths
     assetsSubDirectory: 'static',
     assetsSubDirectory: 'static',
     assetsPublicPath: '/hotel/manage',
     assetsPublicPath: '/hotel/manage',
     proxyTable: {
     proxyTable: {
       '/hotel/ihotel-api': {
       '/hotel/ihotel-api': {
-        target: 'https://chtech.ncjti.edu.cn/hotel/ihotel-api',
+        target: 'http://192.168.161.34:8089',
         changeOrigin: true,
         changeOrigin: true,
         pathRewrite: {
         pathRewrite: {
           '^/hotel/ihotel-api': ''
           '^/hotel/ihotel-api': ''

+ 9 - 3
admin/src/router/index.js

@@ -30,7 +30,7 @@ export const asyncRoutes = [
                 path: 'home',
                 path: 'home',
                 name: 'Home',
                 name: 'Home',
                 meta: { isAuth: true, title: '主页' },
                 meta: { isAuth: true, title: '主页' },
-                component: () => import('@/views/home')
+                component: () => import('@/views/home'),
             },
             },
             {
             {
                 path: 'order',
                 path: 'order',
@@ -68,13 +68,19 @@ export const asyncRoutes = [
                 meta: { isAuth: true, title: '系统通知' },
                 meta: { isAuth: true, title: '系统通知' },
                 component: () => import('@/views/inform')
                 component: () => import('@/views/inform')
             },
             },
-            ,
             {
             {
-                path: 'icCard',
+                path: '/home/icCard',
                 name: 'icCard',
                 name: 'icCard',
                 meta: { isAuth: true, title: 'IC卡管理' },
                 meta: { isAuth: true, title: 'IC卡管理' },
                 component: () => import('@/views/icCard')
                 component: () => import('@/views/icCard')
+            },
+            {
+                path: '/home/fingerprint',
+                name: 'fingerprint',
+                meta: { isAuth: true, title: '指纹管理' },
+                component: () => import('@/views/fingerprint')
             }
             }
+
         ]
         ]
     },
     },
 ]
 ]

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1302 - 0
admin/src/views/fingerprint/index.vue


+ 35 - 18
admin/src/views/home/index.vue

@@ -167,11 +167,15 @@
                     title="门锁管理"
                     title="门锁管理"
                     custom-class="lock"
                     custom-class="lock"
                     :append-to-body="true"
                     :append-to-body="true"
-                    :visible.sync="doorLock"
+                    :visible.sync="item.doorLockShow"
                     width="30%"
                     width="30%"
                     :before-close="lockClose"
                     :before-close="lockClose"
                     :destroy-on-close="true"
                     :destroy-on-close="true"
                   >
                   >
+                    <div class="title">
+                      <span>门锁管理</span>
+                      <i class="el-icon-close" @click="lockClose(item)"></i>
+                    </div>
                     <div class="roomID" style="margin-top: 13px">
                     <div class="roomID" style="margin-top: 13px">
                       <div class="roomblock">
                       <div class="roomblock">
                         <span>门锁ID:</span>
                         <span>门锁ID:</span>
@@ -260,7 +264,7 @@
                       </div>
                       </div>
                     </div>
                     </div>
                     <span slot="footer" class="dialog-footer">
                     <span slot="footer" class="dialog-footer">
-                      <el-button @click.stop="doorLock = false" size="mini"
+                      <el-button @click.stop="lockClose(item)" size="mini"
                         >取消</el-button
                         >取消</el-button
                       >
                       >
                       <el-button size="mini" @click.stop="UpdataRoom(item)"
                       <el-button size="mini" @click.stop="UpdataRoom(item)"
@@ -608,7 +612,7 @@ export default {
             items.room.forEach((item) => {
             items.room.forEach((item) => {
               this.roomData.forEach((i, index) => {
               this.roomData.forEach((i, index) => {
                 if (item.id == i.roomId) {
                 if (item.id == i.roomId) {
-                  item.doorLockShow = false;
+                  this.$set(item, "doorLockShow", false);
                   // console.log(i);
                   // console.log(i);
                   let arr = {
                   let arr = {
                     id: i.roomId,
                     id: i.roomId,
@@ -896,10 +900,18 @@ export default {
     },
     },
 
 
     //门锁管理
     //门锁管理
-    lockClose(done) {
-      this.$confirm("确认关闭?")
+    lockClose(item) {
+      // this.Data.forEach((items) => {
+      //   items.room.forEach((i) => {
+      //     if (item.id == i.id) {
+      //       this.$set(i, "doorLockShow", false);
+      //     }
+      //   });
+      // });
+      // item.doorLockShow = false;
+      this.$confirm(`确认取消修改吗?`)
         .then((_) => {
         .then((_) => {
-          done();
+          this.$set(item, "doorLockShow", false);
         })
         })
         .catch((_) => {});
         .catch((_) => {});
     },
     },
@@ -925,7 +937,7 @@ export default {
     },
     },
     roomLock(item) {
     roomLock(item) {
       console.log(item);
       console.log(item);
-      this.doorLock = true;
+      item.doorLockShow = true;
       // 房间id查询密码锁
       // 房间id查询密码锁
       this.API.doorLock.roomDoorLockRoomId(item.roomId).then((res) => {
       this.API.doorLock.roomDoorLockRoomId(item.roomId).then((res) => {
         console.log(res);
         console.log(res);
@@ -981,7 +993,7 @@ export default {
     // 修改房间水表码、电表码、锁id
     // 修改房间水表码、电表码、锁id
     UpdataRoom(item) {
     UpdataRoom(item) {
       console.log(item);
       console.log(item);
-      this.doorLock = false;
+      item.doorLockShow = false;
       console.log(this.doorLockList);
       console.log(this.doorLockList);
       let arr = {
       let arr = {
         id: this.doorLockList.id,
         id: this.doorLockList.id,
@@ -1462,22 +1474,27 @@ export default {
   height: 377px !important;
   height: 377px !important;
 
 
   .el-dialog__header {
   .el-dialog__header {
-    border-bottom: 1px solid rgba(204, 204, 204, 1);
-    .el-dialog__headerbtn {
-      width: 35px;
-      height: 35px;
-      font-size: 24px;
-      i {
-        color: #000;
-      }
-    }
+    display: none;
   }
   }
   .el-dialog__body {
   .el-dialog__body {
     display: flex;
     display: flex;
     flex-direction: column;
     flex-direction: column;
+    padding: 0;
+    .title {
+      font-size: 18px;
+      color: #000;
+      border-bottom: 1px solid rgba(204, 204, 204, 1);
+      padding: 20px 20px;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      margin-bottom: 20px;
+      i {
+        cursor: pointer;
+      }
+    }
     .roomID {
     .roomID {
       display: flex;
       display: flex;
-
       height: 49px;
       height: 49px;
       .roompassword {
       .roompassword {
         margin: 10px 19px;
         margin: 10px 19px;

+ 201 - 66
admin/src/views/icCard/index.vue

@@ -37,6 +37,9 @@
                 >
                 >
               </div>
               </div>
               <div slot="footer" class="dialog-footer">
               <div slot="footer" class="dialog-footer">
+                <div style="margin-left: 100px">
+                  <el-divider content-position="left">基本信息</el-divider>
+                </div>
                 <el-form :model="icCardInfo" label-position="top">
                 <el-form :model="icCardInfo" label-position="top">
                   <div class="left">
                   <div class="left">
                     <el-form-item label="卡类型">
                     <el-form-item label="卡类型">
@@ -112,7 +115,7 @@
                         <div class="tree">
                         <div class="tree">
                           <div class="tree-left">
                           <div class="tree-left">
                             <span style="margin-left: 15px">列表</span>
                             <span style="margin-left: 15px">列表</span>
-                            <span style="margin-left: 165px">1/1</span>
+                            <span style="margin-left: 228px">1/1</span>
                           </div>
                           </div>
                           <el-tree
                           <el-tree
                             :data="data"
                             :data="data"
@@ -130,8 +133,8 @@
                             <p style="margin-left: 15px">已选</p>
                             <p style="margin-left: 15px">已选</p>
                           </div>
                           </div>
                           <ul class="infinite-list" style="overflow: auto">
                           <ul class="infinite-list" style="overflow: auto">
-                            <li class="infinite-list-item">
-                              <span style="margin-left: 19px">111</span
+                            <li class="infinite-list-item" v-show="title">
+                              <span style="margin-left: 19px">{{ title }}</span
                               ><i
                               ><i
                                 class="el-icon-close"
                                 class="el-icon-close"
                                 @click="cancelCheck"
                                 @click="cancelCheck"
@@ -265,60 +268,147 @@
             </el-table-column>
             </el-table-column>
             <el-table-column prop="address" align="center" label="操作">
             <el-table-column prop="address" align="center" label="操作">
               <template slot-scope="{ row }">
               <template slot-scope="{ row }">
-                <!-- 详情按钮 -->
-                <span @click="handleEdit(row)" class="operate">解绑</span>
+                <!-- 解绑按钮 -->
+                <span @click="handleDelete(row)" class="operate">解绑</span>
+                <!-- 编辑按钮 -->
+                <span @click="handleEdit(row)" class="operate">编辑</span>
 
 
-                <!-- 详情弹窗区域 -->
                 <el-dialog
                 <el-dialog
-                  title="订单详情"
+                  title="IC卡详情"
                   :visible.sync="dialogVisible"
                   :visible.sync="dialogVisible"
-                  width="30%"
+                  custom-class="editCard"
                 >
                 >
-                  <div class="userinfo">用户信息</div>
-                  <div class="info">
-                    <div class="user">
-                      <div class="name">姓名</div>
-                      <el-input :value="order.userName"></el-input>
-                    </div>
-                    <div class="user">
-                      <div class="name">联系方式</div>
-                      <el-input :value="order.userPhone"></el-input>
-                    </div>
-                  </div>
-                  <div class="info">
-                    <div class="user">
-                      <div class="name">订单号</div>
-                      <el-input :value="order.orderNo"></el-input>
-                    </div>
-                    <div class="user">
-                      <div class="name">预付款金额(元)</div>
-                      <el-input value="20.00"></el-input>
-                    </div>
-                  </div>
-                  <div class="info">
-                    <div class="user">
-                      <div class="name">入住时间</div>
-                      <el-input :value="order.realStartTime"></el-input>
-                    </div>
-                    <div class="user">
-                      <div class="name">离住时间</div>
-                      <el-input :value="order.realEndTime"></el-input>
-                    </div>
-                  </div>
-                  <div class="info">
-                    <div class="user">
-                      <div class="name">入住天数</div>
-                      <el-input value="1"></el-input>
-                    </div>
-                    <div class="user">
-                      <div class="name">支付时间</div>
-                      <el-input :value="order.payTime"></el-input>
-                    </div>
+                  <div class="dialog-footer">
+                    <el-form :model="icCardInfo" label-position="top">
+                      <div class="left">
+                        <el-form-item label="卡号">
+                          <el-input v-model="icCardInfo.roomId"></el-input>
+                        </el-form-item>
+                        <el-form-item label="房间号(锁设备UID)">
+                          <el-input v-model="icCardInfo.roomId"></el-input>
+                        </el-form-item>
+                        <el-form-item label="创建时间">
+                          <el-input v-model="icCardInfo.roomId"></el-input>
+                        </el-form-item>
+
+                        <el-form-item label="生效时间(默认今天)">
+                          <el-date-picker
+                            v-model="startTime"
+                            type="datetime"
+                            placeholder="选择日期时间"
+                            default-time="12:00:00"
+                            value-format="yyyy-MM-dd HH:mm:ss"
+                          >
+                          </el-date-picker>
+                        </el-form-item>
+                      </div>
+                      <div class="right">
+                        <el-form-item label="用户类型">
+                          <el-select
+                            v-model="icCardInfo.userType"
+                            placeholder="用户"
+                          >
+                            <el-option
+                              label="普通用户"
+                              value="普通用户"
+                            ></el-option>
+                            <el-option
+                              label="一次性入住用户"
+                              value="一次性入住用户"
+                            ></el-option>
+                          </el-select>
+                        </el-form-item>
+                        <el-form-item label="持卡人姓名">
+                          <el-input v-model="icCardInfo.name"></el-input>
+                          <span
+                            style="
+                              position: absolute;
+                              left: 200px;
+                              color: #296de3;
+                              cursor: pointer;
+                            "
+                            @click="Editstaff"
+                            >员工</span
+                          >
+                          <el-dialog
+                            title="添加员工"
+                            :visible.sync="selectStaffShow"
+                            width="692px"
+                            append-to-body
+                            custom-class="dialongAllRoom"
+                          >
+                            <div class="tree">
+                              <div class="tree-left">
+                                <span style="margin-left: 15px">列表</span>
+                                <span style="margin-left: 228px">1/1</span>
+                              </div>
+                              <el-tree
+                                :data="data"
+                                show-checkbox
+                                node-key="id"
+                                ref="roomTree"
+                                :default-expand-all="true"
+                                :props="defaultProps"
+                                @check="checkStaff"
+                              >
+                              </el-tree>
+                            </div>
+                            <div class="tree">
+                              <div class="tree-left">
+                                <p style="margin-left: 15px">已选</p>
+                              </div>
+                              <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>
+                                </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
+                              >
+                            </span>
+                          </el-dialog>
+                        </el-form-item>
+                        <el-form-item label="收预付款(元)">
+                          <el-input v-model="icCardInfo.roomId"></el-input>
+                        </el-form-item>
+                        <el-form-item label="失效时间">
+                          <el-date-picker
+                            v-model="endTime"
+                            type="datetime"
+                            placeholder="选择日期时间"
+                            value-format="yyyy-MM-dd HH:mm:ss"
+                            default-time="12:00:00"
+                            @change="endT"
+                          >
+                          </el-date-picker>
+                        </el-form-item>
+                        <el-radio-group
+                          v-model="icCardInfo.radio"
+                          @change="radioChange"
+                        >
+                          <el-radio label="一个星期">一个星期</el-radio>
+                          <el-radio label="一个月">一个月</el-radio>
+                          <el-radio label="半年">半年</el-radio>
+                          <el-radio label="一年">一年</el-radio>
+                          <el-radio label="长期">长期</el-radio>
+                        </el-radio-group>
+                      </div>
+                    </el-form>
                   </div>
                   </div>
                 </el-dialog>
                 </el-dialog>
-
-                <!-- 删除按钮 -->
-                <span @click="handleDelete(row)" class="operate">编辑</span>
               </template>
               </template>
             </el-table-column>
             </el-table-column>
           </el-table>
           </el-table>
@@ -372,6 +462,7 @@ export default {
         children: "children",
         children: "children",
         label: "label",
         label: "label",
       },
       },
+      title: "",
       data: [
       data: [
         {
         {
           id: 1,
           id: 1,
@@ -564,20 +655,18 @@ export default {
     Editstaff() {
     Editstaff() {
       this.selectStaffShow = true;
       this.selectStaffShow = true;
     },
     },
-    chooseAll() {},
     checkStaff(data, nodes) {
     checkStaff(data, nodes) {
-      this.count = _.cloneDeep(nodes.checkedNodes);
+      //   console.log(data, nodes);
+      this.$refs.roomTree.setCheckedNodes([]);
+      this.count = [
+        {
+          id: data.id,
+          label: data.label,
+        },
+      ];
       console.log(this.count);
       console.log(this.count);
-      nodes.checkedNodes.forEach((item, index) => {
-        if (item.children) {
-          this.count.splice(index, 1);
-        }
-      });
-      if (this.data[0].children.length == this.count.length) {
-        this.checked = true;
-      } else {
-        this.checked = false;
-      }
+      this.$refs.roomTree.setCheckedNodes(this.count);
+      this.title = this.count[0].label;
     },
     },
     cancelCheck() {
     cancelCheck() {
       console.log(222);
       console.log(222);
@@ -815,6 +904,44 @@ export default {
           height: 64px;
           height: 64px;
           td {
           td {
             .cell {
             .cell {
+              .el-dialog__wrapper {
+                .el-dialog.editCard {
+                  width: 1136px !important;
+                  height: 644px !important;
+                  .el-dialog__header {
+                    height: 86px;
+                    padding: 0;
+                    display: flex;
+                    align-items: center;
+                  }
+                  .el-dialog__body {
+                    text-align: left;
+                    .dialog-footer {
+                      .el-divider--horizontal {
+                        width: 900px;
+                        .el-divider__text {
+                          font-size: 20px;
+                        }
+                      }
+                    }
+                    .el-form {
+                      display: flex;
+                      justify-content: center;
+                      .left {
+                        margin: 0 100px;
+                      }
+                      .right {
+                        margin: 0 85px;
+                      }
+                    }
+                    .el-input {
+                      width: 240px;
+                    }
+                  }
+                  .el-dialog__footer {
+                  }
+                }
+              }
               .el-checkbox.is-checked {
               .el-checkbox.is-checked {
                 .el-checkbox__inner {
                 .el-checkbox__inner {
                   background-color: rgba(41, 109, 227, 1);
                   background-color: rgba(41, 109, 227, 1);
@@ -836,8 +963,8 @@ export default {
                 overflow: hidden;
                 overflow: hidden;
                 .el-dialog {
                 .el-dialog {
                   width: 968px !important;
                   width: 968px !important;
-                  margin-top: 126px !important;
-                  height: 914px;
+                  margin-top: 249px !important;
+                  height: 550px;
                   opacity: 1;
                   opacity: 1;
                   background: rgba(255, 255, 255, 1);
                   background: rgba(255, 255, 255, 1);
                   box-shadow: none;
                   box-shadow: none;
@@ -1031,7 +1158,14 @@ export default {
     }
     }
     .el-dialog__footer {
     .el-dialog__footer {
       text-align: left;
       text-align: left;
-
+      .dialog-footer {
+        .el-divider--horizontal {
+          width: 900px;
+          .el-divider__text {
+            font-size: 20px;
+          }
+        }
+      }
       .el-form {
       .el-form {
         display: flex;
         display: flex;
         justify-content: center;
         justify-content: center;
@@ -1048,6 +1182,7 @@ export default {
     }
     }
   }
   }
 }
 }
+
 /deep/ .dialongAllRoom {
 /deep/ .dialongAllRoom {
   .el-dialog__body {
   .el-dialog__body {
     display: flex;
     display: flex;