|
@@ -0,0 +1,560 @@
|
|
|
|
+<template>
|
|
|
|
+ <div class="people-info-management">
|
|
|
|
+ <!-- 顶部操作 -->
|
|
|
|
+ <div class="header">
|
|
|
|
+ <h2>人员信息管理</h2>
|
|
|
|
+ <el-select v-model="selectedDeviceId" placeholder="选择设备" @change="fetchPeople">
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="device in devices"
|
|
|
|
+ :key="device.id"
|
|
|
|
+ :label="device.model + ' - ' + device.location"
|
|
|
|
+ :value="device.id"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ <el-button type="primary" @click="openAddDialog">新增人员</el-button>
|
|
|
|
+ <el-input v-model="searchName" placeholder="按姓名搜索" style="width: 180px; margin-left: 10px;" />
|
|
|
|
+ <el-button @click="fetchPeople">搜索</el-button>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <!-- 人员列表 -->
|
|
|
|
+ <el-table
|
|
|
|
+ :data="peopleList"
|
|
|
|
+ border
|
|
|
|
+ v-loading="loading"
|
|
|
|
+ style="width: 100%; margin-top: 10px;"
|
|
|
|
+ >
|
|
|
|
+ <el-table-column label="序号" width="60">
|
|
|
|
+ <template #default="scope">{{ scope.$index + 1 }}</template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="personId" label="人员ID" min-width="120"/>
|
|
|
|
+ <el-table-column prop="name" label="姓名" min-width="120"/>
|
|
|
|
+ <el-table-column prop="isTemporary" label="是否为临时访问人员" width="100">
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <el-tag type="success" v-if="scope.row.isTemporary">是</el-tag>
|
|
|
|
+ <el-tag type="info" v-else>否</el-tag>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="longTerm" label="长期有效" width="100">
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <el-tag type="success" v-if="scope.row.longTerm">是</el-tag>
|
|
|
|
+ <el-tag type="info" v-else>否</el-tag>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="validPeriod" label="有效期" min-width="160">
|
|
|
|
+ <template #default="scope">{{ scope.row.validPeriod ? new Date(scope.row.validPeriod).toLocaleString() : '-' }}</template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="doorPermission" label="门权限" min-width="150"/>
|
|
|
|
+ <el-table-column prop="planTemplateId" label="计划模板" min-width="120"/>
|
|
|
|
+ <el-table-column prop="authMethod" label="认证方式" width="100"/>
|
|
|
|
+ <el-table-column label="操作" fixed="right" width="180">
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <el-button type="text" size="small" @click="viewPerson(scope.row)">查看</el-button>
|
|
|
|
+ <el-button type="text" size="small" @click="deletePerson(scope.row)">删除</el-button>
|
|
|
|
+ <el-button type="text" size="small" @click="editPerson(scope.row)">编辑</el-button>
|
|
|
|
+
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+
|
|
|
|
+ <!-- 新增人员弹窗 -->
|
|
|
|
+ <el-dialog title="新增人员" :visible.sync="dialogVisible" width="600px">
|
|
|
|
+ <el-form :model="form" :rules="rules" ref="peopleForm" label-width="120px" style="background: #001b2f">
|
|
|
|
+<!-- <el-form-item label="人员ID" prop="personId">-->
|
|
|
|
+<!-- <el-input v-model="form.personId" placeholder="请输入人员ID" :disabled="isViewMode"/>-->
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
+
|
|
|
|
+ <el-form-item label="姓名" prop="name">
|
|
|
|
+ <el-input v-model="form.name" placeholder="请输入姓名" :disabled="isViewMode"/>
|
|
|
|
+ </el-form-item>
|
|
|
|
+
|
|
|
|
+ <el-form-item label="是否为临时访问人员" prop="isTemporary">
|
|
|
|
+ <el-switch v-model="form.isTemporary" active-text="是" inactive-text="否" :disabled="isViewMode"/>
|
|
|
|
+ </el-form-item>
|
|
|
|
+
|
|
|
|
+ <el-form-item label="长期有效" prop="longTerm">
|
|
|
|
+ <el-switch v-model="form.longTerm" active-text="是" inactive-text="否" :disabled="isViewMode"/>
|
|
|
|
+ </el-form-item>
|
|
|
|
+
|
|
|
|
+ <el-form-item label="有效期" v-if="!form.longTerm">
|
|
|
|
+ <el-date-picker
|
|
|
|
+ v-model="form.validPeriod"
|
|
|
|
+ type="datetime"
|
|
|
|
+ placeholder="请选择有效期"
|
|
|
|
+ style="width: 100%;"
|
|
|
|
+ :disabled="isViewMode"
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+
|
|
|
|
+ <el-form-item label="门权限" prop="doorPermission">
|
|
|
|
+ <el-input v-model="form.doorPermission" placeholder="请输入门权限ID列表,用逗号分隔" :disabled="isViewMode"/>
|
|
|
|
+ </el-form-item>
|
|
|
|
+
|
|
|
|
+ <el-form-item label="计划模板" prop="planTemplateId">
|
|
|
|
+ <el-input v-model="form.planTemplateId" placeholder="请输入计划模板ID" :disabled="isViewMode"/>
|
|
|
|
+ </el-form-item>
|
|
|
|
+
|
|
|
|
+ <el-form-item label="认证方式" prop="authMethod">
|
|
|
|
+ <el-select v-model="form.authMethod" placeholder="请选择认证方式" :disabled="isViewMode">
|
|
|
|
+ <el-option label="人脸" value="face" />
|
|
|
|
+ <el-option label="指纹" value="fingerprint" />
|
|
|
|
+ <el-option label="密码" value="password" />
|
|
|
|
+ <el-option label="卡片" value="card" />
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-form>
|
|
|
|
+
|
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
|
+ <el-button @click="dialogVisible=false">取消</el-button>
|
|
|
|
+ <el-button type="primary" @click="submitPerson">确定</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </el-dialog>
|
|
|
|
+
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+import request from "@/utils/request";
|
|
|
|
+
|
|
|
|
+export default {
|
|
|
|
+ name: 'PeopleInfoManage',
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ loading: false,
|
|
|
|
+ devices: [], // 设备列表
|
|
|
|
+ selectedDeviceId: null, // 当前选择的设备
|
|
|
|
+ searchName: '',
|
|
|
|
+ peopleList: [],
|
|
|
|
+ dialogVisible: false,
|
|
|
|
+ form: {
|
|
|
|
+ personId: '',
|
|
|
|
+ name: '',
|
|
|
|
+ isTemporary: false,
|
|
|
|
+ longTerm: false,
|
|
|
|
+ validStart: null, // 有效期开始
|
|
|
|
+ validEnd: null, //有效期结束
|
|
|
|
+ validPeriod: null,
|
|
|
|
+ doorPermission: '',
|
|
|
|
+ planTemplateId: '',
|
|
|
|
+ authMethod: ''
|
|
|
|
+ },
|
|
|
|
+ rules: {
|
|
|
|
+ personId: [{ required: true, message: '请输入人员ID', trigger: 'blur' }],
|
|
|
|
+ name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
|
|
|
|
+ doorPermission: [{ required: true, message: '请输入门权限', trigger: 'blur' }],
|
|
|
|
+ planTemplateId: [{ required: true, message: '请输入计划模板ID', trigger: 'blur' }],
|
|
|
|
+ authMethod: [{ required: true, message: '请选择认证方式', trigger: 'change' }]
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ computed: {
|
|
|
|
+ isViewMode() { return this.mode === 'view' },
|
|
|
|
+ dialogTitle() {
|
|
|
|
+ if (this.dialogMode === 'add') return '新增人员'
|
|
|
|
+ if (this.dialogMode === 'edit') return '修改人员'
|
|
|
|
+ if (this.dialogMode === 'view') return '查看人员'
|
|
|
|
+ return '人员信息'
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ mounted() {
|
|
|
|
+ this.fetchDevices()
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+
|
|
|
|
+ fetchDevices() {
|
|
|
|
+ this.loading = true;
|
|
|
|
+ request({
|
|
|
|
+ url: '/device/list',
|
|
|
|
+ method: 'GET'
|
|
|
|
+ }).then(res => {
|
|
|
|
+ console.log("设备接口原始返回:", res)
|
|
|
|
+
|
|
|
|
+ // 因为返回本身就是数组
|
|
|
|
+ this.devices = Array.isArray(res) ? res : (res.rows || res.data || [])
|
|
|
|
+
|
|
|
|
+ console.log("解析后的设备列表:", this.devices)
|
|
|
|
+
|
|
|
|
+ if (this.devices.length > 0) {
|
|
|
|
+ this.selectedDeviceId = this.devices[0].id
|
|
|
|
+ console.log("选中的设备ID:", this.selectedDeviceId)
|
|
|
|
+ this.fetchPeople()
|
|
|
|
+ } else {
|
|
|
|
+ console.warn("⚠️ 没有设备数据,无法调用 fetchPeople")
|
|
|
|
+ }
|
|
|
|
+ }).catch(err => {
|
|
|
|
+ console.error("获取设备列表失败:", err)
|
|
|
|
+ this.devices = []
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ fetchPeople() {
|
|
|
|
+ if (!this.selectedDeviceId) return
|
|
|
|
+ this.loading = true
|
|
|
|
+ request({
|
|
|
|
+ url: `/person/info/list/${this.selectedDeviceId}`, // ✅ 模板字符串
|
|
|
|
+ method: 'GET',
|
|
|
|
+ }).then(res => {
|
|
|
|
+ console.log("人员信息返回:", res)
|
|
|
|
+ let data = res
|
|
|
|
+ if (this.searchName) {
|
|
|
|
+ data = data.filter(p => p.name && p.name.includes(this.searchName))
|
|
|
|
+ }
|
|
|
|
+ this.peopleList = data
|
|
|
|
+ console.log("人员信息:", this.peopleList)
|
|
|
|
+ }).finally(() => { this.loading = false })
|
|
|
|
+ },
|
|
|
|
+ editPerson(row) {
|
|
|
|
+ this.form = { ...row }
|
|
|
|
+ this.dialogVisible = true
|
|
|
|
+ this.dialogMode = 'edit'
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
+ this.$refs.peopleForm && this.$refs.peopleForm.clearValidate()
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ openAddDialog() {
|
|
|
|
+ this.resetForm()
|
|
|
|
+ this.dialogVisible = true
|
|
|
|
+ this.$nextTick(() => { this.$refs.peopleForm && this.$refs.peopleForm.clearValidate() })
|
|
|
|
+ },
|
|
|
|
+ async submitPerson() {
|
|
|
|
+ this.$refs.peopleForm.validate(async (valid) => {
|
|
|
|
+ if (!valid) return
|
|
|
|
+ try {
|
|
|
|
+ if (this.dialogMode === 'add') {
|
|
|
|
+ const payload = {...this.form, deviceId: this.selectedDeviceId}
|
|
|
|
+ const res = await request({
|
|
|
|
+ url: '/person/info/add',
|
|
|
|
+ method: 'POST',
|
|
|
|
+ data: payload
|
|
|
|
+ });
|
|
|
|
+ this.$message.success('新增人员成功');
|
|
|
|
+ }
|
|
|
|
+ else if (this.dialogMode === 'edit') {
|
|
|
|
+ // **关键**:编辑时调用更新接口,并带上 id(避免新增)
|
|
|
|
+ // 如果你的后端不是 PUT /person/info/update,请按项目实际接口调整
|
|
|
|
+ const payload = {...this.form, deviceId: this.selectedDeviceId}
|
|
|
|
+ const res = await request({
|
|
|
|
+ url: '/person/info/update',
|
|
|
|
+ method: 'put',
|
|
|
|
+ data: payload
|
|
|
|
+ });
|
|
|
|
+ console.log("更新接口返回:", res)
|
|
|
|
+ this.$message.success('修改成功');
|
|
|
|
+ }
|
|
|
|
+ this.dialogVisible = false
|
|
|
|
+ this.fetchPeople()
|
|
|
|
+ } catch (err) {
|
|
|
|
+ this.$message.error(this.dialogMode === 'edit' ? '修改失败' : '新增失败');
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ resetForm() {
|
|
|
|
+ this.form = {
|
|
|
|
+ // personId: '',
|
|
|
|
+ name: '',
|
|
|
|
+ isTemporary: false,
|
|
|
|
+ longTerm: false,
|
|
|
|
+ validPeriod: null,
|
|
|
|
+ doorPermission: '',
|
|
|
|
+ planTemplateId: '',
|
|
|
|
+ authMethod: ''
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ viewPerson(row) {
|
|
|
|
+ this.$message.info(`人员详情: ${row.name} (${row.personId})`)
|
|
|
|
+ this.form = {
|
|
|
|
+ id: row.id || null,
|
|
|
|
+ personId: row.personId || '',
|
|
|
|
+ name: row.name || '',
|
|
|
|
+ longTermValid: row.longTermValid || false,
|
|
|
|
+ validUntil: row.validUntil || '',
|
|
|
|
+ doorPermission: row.doorPermission || '',
|
|
|
|
+ planTemplateId: row.planTemplateId || '',
|
|
|
|
+ authMethod: row.authMethod || ''
|
|
|
|
+ }
|
|
|
|
+ this.dialogMode = 'view' // 查看模式
|
|
|
|
+ this.dialogVisible = true
|
|
|
|
+ }
|
|
|
|
+ ,
|
|
|
|
+ // viewPerson(row) {
|
|
|
|
+ // this.$message.info(`人员详情: ${row.name} (${row.personId})`)
|
|
|
|
+ // },
|
|
|
|
+ async deletePerson(row) {
|
|
|
|
+ try {
|
|
|
|
+ const res = await request({
|
|
|
|
+ url: `/person/info/delete/${row.id}` ,
|
|
|
|
+ method: 'DELETE',
|
|
|
|
+ })
|
|
|
|
+ this.$message.success('删除人员成功')
|
|
|
|
+ this.fetchDevices()
|
|
|
|
+
|
|
|
|
+ } catch (e) {
|
|
|
|
+ this.$message.error('删除失败')
|
|
|
|
+ }
|
|
|
|
+ // this.getDeviceList()
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ // deletePerson(row) {
|
|
|
|
+ // this.$confirm('确定删除该人员吗?', '提示', { type: 'warning' }).then(() => {
|
|
|
|
+ // this.$axios.delete(`/person/info/delete/${row.id}`).then(res => {
|
|
|
|
+ // this.$message.success('删除成功')
|
|
|
|
+ // this.fetchPeople()
|
|
|
|
+ // })
|
|
|
|
+ // }).catch(() => {})
|
|
|
|
+ // }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<style scoped>
|
|
|
|
+.people-info-management { padding: 18px; background: #fff; border-radius: 6px; }
|
|
|
|
+.header { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
|
|
|
|
+.dialog-footer { text-align: right; }
|
|
|
|
+</style>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+<!--<template>-->
|
|
|
|
+<!-- <div class="device-detail">-->
|
|
|
|
+<!-- <h2>设备详情 - {{ $route.query.deviceId }}</h2>-->
|
|
|
|
+<!-- <el-tabs v-model="activeTab" tab-position="left">-->
|
|
|
|
+<!-- <!– 人员管理 –>-->
|
|
|
|
+<!-- <el-tab-pane label="人员管理" name="staff">-->
|
|
|
|
+<!-- <div class="tab-header">-->
|
|
|
|
+<!-- <el-button type="primary" @click="openAddDialog('staff')">新增人员</el-button>-->
|
|
|
|
+<!-- </div>-->
|
|
|
|
+<!-- <el-table :data="peopleList" border style="width:100%">-->
|
|
|
|
+<!-- <el-table-column label="序号" width="70">-->
|
|
|
|
+<!-- <template slot-scope="scope">{{ scope.$index + 1 }}</template>-->
|
|
|
|
+<!-- </el-table-column>-->
|
|
|
|
+<!-- <el-table-column prop="personId" label="人员ID" min-width="120" />-->
|
|
|
|
+<!-- <el-table-column prop="jobNumber" label="工号" min-width="120" />-->
|
|
|
|
+<!-- <el-table-column prop="name" label="姓名" min-width="120" />-->
|
|
|
|
+<!-- <el-table-column prop="longTerm" label="是否长期有效" min-width="120" />-->
|
|
|
|
+<!-- <el-table-column prop="validPeriod" label="有效期" min-width="160" />-->
|
|
|
|
+<!-- <el-table-column prop="doorPermission" label="门权限" min-width="160" />-->
|
|
|
|
+<!-- <el-table-column prop="planTemplateId" label="计划模板编号" min-width="140" />-->
|
|
|
|
+<!-- <el-table-column prop="authMethod" label="认证方式" min-width="120" />-->
|
|
|
|
+<!-- <el-table-column label="操作" width="160">-->
|
|
|
|
+<!-- <template slot-scope="scope">-->
|
|
|
|
+<!-- <el-button type="text" size="small" @click="openEditDialog('staff', scope.$index, scope.row)">修改</el-button>-->
|
|
|
|
+<!-- <el-button type="text" size="small" style="color:#f56c6c" @click="removeRow('staff', scope.$index)">删除</el-button>-->
|
|
|
|
+<!-- </template>-->
|
|
|
|
+<!-- </el-table-column>-->
|
|
|
|
+<!-- </el-table>-->
|
|
|
|
+<!-- </el-tab-pane>-->
|
|
|
|
+
|
|
|
|
+<!-- <!– 人脸管理 –>-->
|
|
|
|
+<!-- <el-tab-pane label="人脸管理" name="face">-->
|
|
|
|
+<!-- <div class="tab-header">-->
|
|
|
|
+<!-- <el-button type="primary" @click="openAddDialog('face')">新增人脸信息</el-button>-->
|
|
|
|
+<!-- </div>-->
|
|
|
|
+<!-- <el-table :data="faceList" border style="width:100%">-->
|
|
|
|
+<!-- <el-table-column label="序号" width="70">-->
|
|
|
|
+<!-- <template slot-scope="scope">{{ scope.$index + 1 }}</template>-->
|
|
|
|
+<!-- </el-table-column>-->
|
|
|
|
+<!-- <el-table-column prop="personId" label="人员ID" min-width="120" />-->
|
|
|
|
+<!-- <el-table-column prop="jobNumber" label="工号" min-width="120" />-->
|
|
|
|
+<!-- <el-table-column prop="name" label="姓名" min-width="120" />-->
|
|
|
|
+<!-- <el-table-column prop="faceImg" label="人脸图片" min-width="200" />-->
|
|
|
|
+<!-- <el-table-column label="操作" width="160">-->
|
|
|
|
+<!-- <template slot-scope="scope">-->
|
|
|
|
+<!-- <el-button type="text" size="small" @click="openEditDialog('face', scope.$index, scope.row)">修改</el-button>-->
|
|
|
|
+<!-- <el-button type="text" size="small" style="color:#f56c6c" @click="removeRow('face', scope.$index)">删除</el-button>-->
|
|
|
|
+<!-- </template>-->
|
|
|
|
+<!-- </el-table-column>-->
|
|
|
|
+<!-- </el-table>-->
|
|
|
|
+<!-- </el-tab-pane>-->
|
|
|
|
+<!-- </el-tabs>-->
|
|
|
|
+
|
|
|
|
+<!-- <!– 弹窗(新增/修改) –>-->
|
|
|
|
+<!-- <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="600px">-->
|
|
|
|
+<!-- <el-form :model="form" ref="dataForm" :rules="rules" label-width="120px">-->
|
|
|
|
+<!-- <!– 通用字段 –>-->
|
|
|
|
+<!-- <el-form-item label="人员ID" prop="personId">-->
|
|
|
|
+<!-- <el-input v-model="form.personId" placeholder="自动生成或输入" />-->
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
+<!-- <el-form-item label="工号" prop="jobNumber">-->
|
|
|
|
+<!-- <el-input v-model="form.jobNumber" placeholder="请输入工号(可为空)" />-->
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
+<!-- <el-form-item label="姓名" prop="name">-->
|
|
|
|
+<!-- <el-input v-model="form.name" placeholder="请输入姓名" />-->
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
+
|
|
|
|
+<!-- <!– 仅人员管理用 –>-->
|
|
|
|
+<!-- <template v-if="currentType === 'staff'">-->
|
|
|
|
+<!-- <el-form-item label="是否长期有效" prop="longTerm">-->
|
|
|
|
+<!-- <el-select v-model="form.longTerm" placeholder="请选择">-->
|
|
|
|
+<!-- <el-option label="是" value="是" />-->
|
|
|
|
+<!-- <el-option label="否" value="否" />-->
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
+<!-- <el-form-item label="有效期" prop="validPeriod" v-if="form.longTerm === '否'">-->
|
|
|
|
+<!-- <el-date-picker v-model="form.validPeriod" type="datetime" placeholder="选择有效期" style="width:100%" />-->
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
+<!-- <el-form-item label="门权限" prop="doorPermission">-->
|
|
|
|
+<!-- <el-input v-model="form.doorPermission" placeholder="请输入门权限ID列表" />-->
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
+<!-- <el-form-item label="计划模板编号" prop="planTemplateId">-->
|
|
|
|
+<!-- <el-input v-model="form.planTemplateId" placeholder="请输入计划模板编号" />-->
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
+<!-- <el-form-item label="认证方式" prop="authMethod">-->
|
|
|
|
+<!-- <el-select v-model="form.authMethod" placeholder="请选择认证方式">-->
|
|
|
|
+<!-- <el-option label="人脸" value="人脸" />-->
|
|
|
|
+<!-- <el-option label="指纹" value="指纹" />-->
|
|
|
|
+<!-- <el-option label="密码" value="密码" />-->
|
|
|
|
+<!-- <el-option label="卡片" value="卡片" />-->
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
+<!-- </template>-->
|
|
|
|
+
|
|
|
|
+<!-- <!– 仅人脸管理用 –>-->
|
|
|
|
+<!-- <template v-if="currentType === 'face'">-->
|
|
|
|
+<!-- <el-form-item label="人脸图片" prop="faceImg">-->
|
|
|
|
+<!-- <el-input v-model="form.faceImg" placeholder="请输入人脸图片路径/URL" />-->
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
+<!-- </template>-->
|
|
|
|
+<!-- </el-form>-->
|
|
|
|
+
|
|
|
|
+<!-- <div slot="footer" class="dialog-footer">-->
|
|
|
|
+<!-- <el-button @click="dialogVisible = false">取 消</el-button>-->
|
|
|
|
+<!-- <el-button type="primary" @click="submitForm">确 定</el-button>-->
|
|
|
|
+<!-- </div>-->
|
|
|
|
+<!-- </el-dialog>-->
|
|
|
|
+<!-- </div>-->
|
|
|
|
+<!--</template>-->
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+<!--<script>-->
|
|
|
|
+
|
|
|
|
+<!--import {-->
|
|
|
|
+<!-- listBdglVisit,-->
|
|
|
|
+<!-- getBdglVisit,-->
|
|
|
|
+<!-- delBdglVisit,-->
|
|
|
|
+<!-- addBdglVisit,-->
|
|
|
|
+<!-- updateBdglVisit,-->
|
|
|
|
+<!-- exportBdglVisit,-->
|
|
|
|
+<!-- deptUser,-->
|
|
|
|
+<!-- addPeople,-->
|
|
|
|
+<!-- listPeople-->
|
|
|
|
+<!--} from "@/api/doormanManage/bdglVisit";-->
|
|
|
|
+
|
|
|
|
+<!--export default {-->
|
|
|
|
+<!-- name: 'DeviceDetail',-->
|
|
|
|
+<!-- data() {-->
|
|
|
|
+<!-- return {-->
|
|
|
|
+<!-- activeTab: 'staff',-->
|
|
|
|
+<!-- dialogVisible: false,-->
|
|
|
|
+<!-- dialogTitle: '',-->
|
|
|
|
+<!-- editIndex: -1,-->
|
|
|
|
+<!-- currentType: '', // staff 或 face-->
|
|
|
|
+<!-- peopleList: [],-->
|
|
|
|
+<!-- faceList: [],-->
|
|
|
|
+<!-- form: {-->
|
|
|
|
+<!-- personId: '',-->
|
|
|
|
+<!-- jobNumber: '',-->
|
|
|
|
+<!-- name: '',-->
|
|
|
|
+<!-- longTerm: '否',-->
|
|
|
|
+<!-- validPeriod: '',-->
|
|
|
|
+<!-- doorPermission: '',-->
|
|
|
|
+<!-- planTemplateId: '',-->
|
|
|
|
+<!-- authMethod: '',-->
|
|
|
|
+<!-- faceImg: ''-->
|
|
|
|
+<!-- },-->
|
|
|
|
+<!-- rules: {-->
|
|
|
|
+<!-- name: [{ required: true, message: '请输入姓名', trigger: 'blur' }]-->
|
|
|
|
+<!-- }-->
|
|
|
|
+<!-- }-->
|
|
|
|
+<!-- },-->
|
|
|
|
+<!-- methods: {-->
|
|
|
|
+
|
|
|
|
+<!-- openAddDialog(type) {-->
|
|
|
|
+<!-- this.currentType = type-->
|
|
|
|
+<!-- this.editIndex = -1-->
|
|
|
|
+<!-- this.dialogTitle = type === 'staff' ? '新增人员' : '新增人脸信息'-->
|
|
|
|
+<!-- this.resetForm()-->
|
|
|
|
+<!-- this.dialogVisible = true-->
|
|
|
|
+<!-- },-->
|
|
|
|
+<!-- openEditDialog(type, index, row) {-->
|
|
|
|
+<!-- this.currentType = type-->
|
|
|
|
+<!-- this.editIndex = index-->
|
|
|
|
+<!-- this.dialogTitle = type === 'staff' ? '修改人员' : '修改人脸信息'-->
|
|
|
|
+<!-- this.form = Object.assign({}, row)-->
|
|
|
|
+<!-- this.dialogVisible = true-->
|
|
|
|
+<!-- },-->
|
|
|
|
+<!-- removeRow(type, index) {-->
|
|
|
|
+<!-- this.$confirm('确定删除该记录吗?', '提示', {-->
|
|
|
|
+<!-- type: 'warning'-->
|
|
|
|
+<!-- }).then(() => {-->
|
|
|
|
+<!-- if (type === 'staff') this.peopleList.splice(index, 1)-->
|
|
|
|
+<!-- else this.faceList.splice(index, 1)-->
|
|
|
|
+<!-- this.$message.success('删除成功')-->
|
|
|
|
+<!-- }).catch(() => {})-->
|
|
|
|
+<!-- },-->
|
|
|
|
+<!-- submitForm() {-->
|
|
|
|
+<!-- this.$refs.dataForm.validate(valid => {-->
|
|
|
|
+<!-- if (!valid) return-->
|
|
|
|
+
|
|
|
|
+<!-- if (this.currentType === 'staff') {-->
|
|
|
|
+<!-- if (this.editIndex > -1) {-->
|
|
|
|
+<!-- this.$axios.put('/person/update', this.form).then(() => {-->
|
|
|
|
+<!-- this.$message.success('人员修改成功')-->
|
|
|
|
+<!-- this.getPersonList()-->
|
|
|
|
+<!-- })-->
|
|
|
|
+<!-- } else {-->
|
|
|
|
+<!-- addPeople(this.form).then(() => {-->
|
|
|
|
+<!-- this.$message.success('人员信息新增成功')-->
|
|
|
|
+<!-- this.getPersonList()-->
|
|
|
|
+<!-- })-->
|
|
|
|
+<!-- }-->
|
|
|
|
+<!-- } else {-->
|
|
|
|
+<!-- if (this.editIndex > -1) {-->
|
|
|
|
+<!-- this.$axios.put('/face/update', this.form).then(() => {-->
|
|
|
|
+<!-- this.$message.success('人脸信息修改成功')-->
|
|
|
|
+<!-- this.getFaceList()-->
|
|
|
|
+<!-- })-->
|
|
|
|
+<!-- } else {-->
|
|
|
|
+<!-- console.log(this.form)-->
|
|
|
|
+<!-- addPeople(this.form).then(() => {-->
|
|
|
|
+<!-- this.$message.success('人脸信息新增成功')-->
|
|
|
|
+<!-- this.getFaceList()-->
|
|
|
|
+<!-- })-->
|
|
|
|
+<!-- }-->
|
|
|
|
+<!-- }-->
|
|
|
|
+<!-- this.dialogVisible = false-->
|
|
|
|
+<!-- })-->
|
|
|
|
+<!-- },-->
|
|
|
|
+<!-- resetForm() {-->
|
|
|
|
+<!-- this.form = {-->
|
|
|
|
+<!-- personId: '',-->
|
|
|
|
+<!-- jobNumber: '',-->
|
|
|
|
+<!-- name: '',-->
|
|
|
|
+<!-- longTerm: '否',-->
|
|
|
|
+<!-- validPeriod: '',-->
|
|
|
|
+<!-- doorPermission: '',-->
|
|
|
|
+<!-- planTemplateId: '',-->
|
|
|
|
+<!-- authMethod: '',-->
|
|
|
|
+<!-- faceImg: ''-->
|
|
|
|
+<!-- }-->
|
|
|
|
+<!-- },-->
|
|
|
|
+<!-- getPersonList() {-->
|
|
|
|
+<!-- listPeople().then(res => {-->
|
|
|
|
+<!-- this.peopleList = res-->
|
|
|
|
+<!-- console.log(res.data)-->
|
|
|
|
+<!-- this.$message.success('信息查询成功')-->
|
|
|
|
+<!-- }).catch(() => {-->
|
|
|
|
+<!-- this.$message.error('获取人员列表失败')-->
|
|
|
|
+<!-- })-->
|
|
|
|
+<!-- }-->
|
|
|
|
+
|
|
|
|
+<!-- },-->
|
|
|
|
+<!-- mounted() {-->
|
|
|
|
+<!-- this.getPersonList()-->
|
|
|
|
+<!-- }-->
|
|
|
|
+
|
|
|
|
+<!--}-->
|
|
|
|
+<!--</script>-->
|
|
|
|
+
|
|
|
|
+<!--<style scoped>-->
|
|
|
|
+<!--.device-detail { padding: 18px; background: #fff; border-radius: 6px; }-->
|
|
|
|
+<!--.tab-header { margin-bottom: 10px; }-->
|
|
|
|
+<!--.dialog-footer { text-align: right; }-->
|
|
|
|
+<!--</style>-->
|