10 changed files with 515 additions and 17 deletions
-
22src/assets/iconfonts/light/iconfont.css
-
2src/assets/iconfonts/light/iconfont.js
-
28src/assets/iconfonts/light/iconfont.json
-
BINsrc/assets/iconfonts/light/iconfont.ttf
-
BINsrc/assets/iconfonts/light/iconfont.woff
-
BINsrc/assets/iconfonts/light/iconfont.woff2
-
22src/views/digitalScreen/module/areaSetting.vue
-
2src/views/digitalScreen/module/mediaSetting.vue
-
186src/views/faceRecognition/faceRecLog.vue
-
270src/views/faceRecognition/personInfoManage.vue
2
src/assets/iconfonts/light/iconfont.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,186 @@ |
|||
<template> |
|||
<div class="app-container row-container"> |
|||
<!--工具栏--> |
|||
<div class="head-container"> |
|||
<div class="head-search" style="align-items: center;"> |
|||
<!-- 搜索 --> |
|||
<el-select v-model="query.status" clearable size="small" placeholder="操作类型" class="filter-item" style="width: 150px;" @change="crud.toQuery"> |
|||
<i slot="prefix" class="iconfont icon-zhuangtai" /> |
|||
<el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.display_name" :value="item.key" /> |
|||
</el-select> |
|||
<el-input |
|||
v-model="keyWord" |
|||
size="small" |
|||
clearable |
|||
placeholder="请输入关键词" |
|||
style="width: 340px;" |
|||
class="input-prepend filter-item" |
|||
@clear="crud.toQuery" |
|||
@keyup.enter.native="crud.toQuery" |
|||
> |
|||
<el-select slot="prepend" v-model="optionVal" style="width: 150px" @change="searchChange"> |
|||
<el-option |
|||
v-for="item in options" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value" |
|||
/> |
|||
</el-select> |
|||
</el-input> |
|||
<date-range-picker v-model="blurryTime" class="date-item" /> |
|||
<rrOperation /> |
|||
</div> |
|||
<crudOperation :permission="permission"> |
|||
<template v-slot:right> |
|||
<!-- :disabled="crud.selections.length === 0" --> |
|||
<el-button :loading="crud.downloadLoading" size="mini" @click="doExport(crud.selections)"> |
|||
<i class="iconfont icon-daochu" /> |
|||
导出 |
|||
</el-button> |
|||
</template> |
|||
</crudOperation> |
|||
</div> |
|||
<div class="container-wrap"> |
|||
<span class="right-top-line" /> |
|||
<span class="left-bottom-line" /> |
|||
<el-table ref="table" v-loading="crud.loading" highlight-current-row style="width: 100%;" height="calc(100vh - 330px)" :data="crud.data" @selection-change="crud.selectionChangeHandler"> |
|||
<el-table-column type="index" label="序号" width="55" /> |
|||
<el-table-column prop="name" label="操作者(读者证号/读者姓名)" /> |
|||
<el-table-column prop="code" label="操作设备(设备编号/设备名称)" /> |
|||
<el-table-column prop="type" label="所属机构(机构编号/机构名称)" /> |
|||
<el-table-column prop="cardNum" label="操作类型" /> |
|||
<el-table-column :show-overflow-tooltip="true" prop="createTime" label="操作时间"> |
|||
<template slot-scope="scope"> |
|||
<div>{{ scope.row.createTime | parseTime }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<!--分页组件--> |
|||
<pagination /> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import crudColumn from '@/api/inquiryMachine/column' |
|||
import CRUD, { presenter, header, form, crud } from '@crud/crud' |
|||
import rrOperation from '@crud/RR.operation' |
|||
import crudOperation from '@crud/CRUD.operation' |
|||
import pagination from '@crud/Pagination' |
|||
import DateRangePicker from '@/components/DateRangePicker' |
|||
// import { exportFile } from '@/utils/index' |
|||
// import qs from 'qs' |
|||
import { mapGetters } from 'vuex' |
|||
|
|||
const defaultForm = { id: null, columnName: null, columnNo: null, columnType: 1, columnOrders: 999, columnContentType: 1, columnStatus: 1, columnRemarks: null } |
|||
export default { |
|||
name: 'PersonInfoManage', |
|||
components: { pagination, crudOperation, rrOperation, DateRangePicker }, |
|||
cruds() { |
|||
return CRUD({ title: '人脸识别日志', url: 'api/fonds/initFondsList', crudMethod: { ...crudColumn }, optShow: { |
|||
add: false, |
|||
edit: false, |
|||
del: false, |
|||
reset: true, |
|||
download: false, |
|||
group: false |
|||
}}) |
|||
}, |
|||
mixins: [presenter(), header(), form(defaultForm), crud()], |
|||
data() { |
|||
return { |
|||
permission: { |
|||
add: ['admin', 'column:add'], |
|||
edit: ['admin', 'column:edit'], |
|||
del: ['admin', 'column:del'] |
|||
}, |
|||
enabledTypeOptions: [ |
|||
{ key: '1', display_name: '借书登录' }, |
|||
{ key: '2', display_name: '信息绑定登录' }, |
|||
{ key: '3', display_name: '查询续借登录' } |
|||
], |
|||
blurryTime: [], |
|||
keyWord: '', |
|||
optionVal: 'username', |
|||
options: [ |
|||
{ value: 'username', label: '读者证号/读者姓名' }, |
|||
{ value: 'account', label: '设备名称/设备编号' } |
|||
] |
|||
} |
|||
}, |
|||
computed: { |
|||
...mapGetters([ |
|||
'baseApi', |
|||
'user' |
|||
]) |
|||
}, |
|||
created() { |
|||
}, |
|||
mounted() { |
|||
}, |
|||
methods: { |
|||
[CRUD.HOOK.beforeRefresh]() { |
|||
console.log('this', this.keyWord) |
|||
console.log('this.optionVal', this.optionVal) |
|||
this.crud.query[this.optionVal] = this.keyWord |
|||
if (this.blurryTime) { |
|||
this.crud.query.startTime = this.blurryTime[0] |
|||
this.crud.query.endTime = this.blurryTime[1] |
|||
} else { |
|||
this.crud.query.startTime = null |
|||
this.crud.query.endTime = null |
|||
} |
|||
}, |
|||
[CRUD.HOOK.afterRefresh]() { |
|||
}, |
|||
// 新增前 |
|||
[CRUD.HOOK.beforeToAdd](crud, form) { |
|||
}, |
|||
// 编辑前 |
|||
[CRUD.HOOK.beforeToEdit](crud, form) { |
|||
}, |
|||
// 提交前做的操作 |
|||
[CRUD.HOOK.afterValidateCU](crud) { |
|||
console.log(crud.form) |
|||
return true |
|||
}, |
|||
searchChange(val) { |
|||
if (val) { |
|||
this.keyWord = '' |
|||
this.options.forEach(option => { |
|||
if (option.value !== val) { |
|||
this.crud.query[option.value] = null |
|||
} |
|||
}) |
|||
} |
|||
}, |
|||
doExport(data) { |
|||
console.log(data) |
|||
crud.downloadLoading = true |
|||
this.$confirm('此操作将导出所选数据' + '<span>你是否还要继续?</span>', '提示', { |
|||
confirmButtonText: '继续', |
|||
cancelButtonText: '取消', |
|||
type: 'warning', |
|||
dangerouslyUseHTMLString: true |
|||
}).then(() => { |
|||
const ids = [] |
|||
data.forEach(val => { |
|||
ids.push(val.id) |
|||
}) |
|||
const params = { |
|||
'ids': ids |
|||
} |
|||
console.log('params', params) |
|||
// exportFile(this.baseApi + '/api/log/downloadErrorLog?' + qs.stringify(params, { indices: false })) |
|||
}).catch(() => { |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
::v-deep .input-prepend .el-input__inner{ |
|||
padding-left: 160px; |
|||
} |
|||
</style> |
@ -0,0 +1,270 @@ |
|||
<template> |
|||
<div class="app-container row-container"> |
|||
<!--工具栏--> |
|||
<div class="head-container"> |
|||
<div class="head-search" style="align-items: center; "> |
|||
<!-- 搜索 --> |
|||
<el-select v-model="query.status" clearable size="small" placeholder="状态" class="filter-item" style="width: 120px;" @change="crud.toQuery"> |
|||
<i slot="prefix" class="iconfont icon-zhuangtai" /> |
|||
<el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.display_name" :value="item.key" /> |
|||
</el-select> |
|||
<el-input v-model="query.blurry" size="small" clearable placeholder="输入证号、姓名、身份证号搜索" prefix-icon="el-icon-search" class="filter-item" style="width: 260px;" @keyup.enter.native="crud.toQuery" /> |
|||
<rrOperation /> |
|||
<el-button size="mini" class="face-search" style="background: transparent; margin-right: 10px;"> |
|||
<i class="iconfont icon-shenfen" /> |
|||
人脸查询 |
|||
</el-button> |
|||
<el-checkbox v-model="fiterBlackUser" label="仅显示黑名单用户" name="fiterBlackUser" @change="handleFiterBlackUser($event)" /> |
|||
</div> |
|||
<crudOperation :permission="permission"> |
|||
<template v-slot:middle> |
|||
<el-button slot="reference" size="mini" :loading="crud.delAllLoading" :disabled="crud.selections.length === 0" @click="toDelete(crud.selections)"> |
|||
<i class="iconfont icon-shanchu" /> |
|||
删除 |
|||
</el-button> |
|||
</template> |
|||
<template v-slot:right> |
|||
<el-button size="mini"> |
|||
<i class="iconfont icon-piliangchengjian" /> |
|||
批量导入 |
|||
</el-button> |
|||
<el-button size="mini"> |
|||
<i class="iconfont icon-yuzhuceqiye" /> |
|||
自助注册 |
|||
</el-button> |
|||
</template> |
|||
</crudOperation> |
|||
</div> |
|||
<div class="container-wrap"> |
|||
<span class="right-top-line" /> |
|||
<span class="left-bottom-line" /> |
|||
<el-dialog :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title"> |
|||
<span class="dialog-right-top" /> |
|||
<span class="dialog-left-bottom" /> |
|||
<div class="setting-dialog"> |
|||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="110px"> |
|||
<el-row> |
|||
<el-form-item label="栏目名称" prop="columnName"> |
|||
<el-input v-model="form.columnName" style="width: 586px;" /> |
|||
</el-form-item> |
|||
</el-row> |
|||
<el-form-item label="栏目编码" prop="columnNo"> |
|||
<el-input v-model="form.columnNo" /> |
|||
</el-form-item> |
|||
<el-form-item label="栏目类型" prop="columnType"> |
|||
<el-radio-group v-model="form.columnType"> |
|||
<el-radio :label="1">单页展示</el-radio> |
|||
<el-radio :label="0">列表展示</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
<el-form-item label="排序" prop="columnOrders"> |
|||
<el-input-number |
|||
v-model.number="form.columnOrders" |
|||
:min="0" |
|||
:max="999" |
|||
controls-position="right" |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="内容类型" prop="columnContentType"> |
|||
<el-radio-group v-model="form.columnContentType"> |
|||
<el-radio :label="1">图文</el-radio> |
|||
<el-radio :label="0">链接</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
<el-row> |
|||
<el-form-item label="状态" prop="columnStatus"> |
|||
<el-radio-group v-model="form.columnStatus"> |
|||
<el-radio :label="1">启用</el-radio> |
|||
<el-radio :label="0">停用</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
</el-row> |
|||
<el-row> |
|||
<el-form-item label="备注" prop="columnRemarks"> |
|||
<el-input v-model="form.columnRemarks" style="width: 586px;" rows="3" type="textarea" /> |
|||
</el-form-item> |
|||
</el-row> |
|||
</el-form> |
|||
<div slot="footer" class="dialog-footer"> |
|||
<el-button type="text" @click="crud.cancelCU">取消</el-button> |
|||
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确定</el-button> |
|||
</div> |
|||
</div> |
|||
</el-dialog> |
|||
<el-table ref="table" v-loading="crud.loading" highlight-current-row style="width: 100%;" height="calc(100vh - 330px)" :data="crud.data" @selection-change="crud.selectionChangeHandler"> |
|||
<el-table-column type="selection" align="center" width="55" /> |
|||
<el-table-column type="index" label="序号" width="55" /> |
|||
<el-table-column prop="name" label="姓名" /> |
|||
<el-table-column prop="code" label="性别" /> |
|||
<el-table-column prop="type" label="读者证号" /> |
|||
<el-table-column prop="cardNum" label="身份证号" /> |
|||
<el-table-column prop="libcode" label="馆代码" /> |
|||
<el-table-column prop="columnOrders" label="已存照片" align="center" /> |
|||
<el-table-column label="黑名单" align="center" prop="columnStatus"> |
|||
<template slot-scope="scope"> |
|||
<el-switch v-model="scope.row.columnStatus" active-color="#409EFF" inactive-color="#F56C6C" :active-value="1" :inactive-value="0" @change="changeStatus(scope.row, scope.row.columnStatus)" /> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column :show-overflow-tooltip="true" prop="createTime" label="操作时间"> |
|||
<template slot-scope="scope"> |
|||
<div>{{ scope.row.createTime | parseTime }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<!--分页组件--> |
|||
<pagination /> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import crudColumn from '@/api/inquiryMachine/column' |
|||
import CRUD, { presenter, header, form, crud } from '@crud/crud' |
|||
import rrOperation from '@crud/RR.operation' |
|||
import crudOperation from '@crud/CRUD.operation' |
|||
import pagination from '@crud/Pagination' |
|||
// import { exportFile } from '@/utils/index' |
|||
// import qs from 'qs' |
|||
import { mapGetters } from 'vuex' |
|||
|
|||
const defaultForm = { id: null, columnName: null, columnNo: null, columnType: 1, columnOrders: 999, columnContentType: 1, columnStatus: 1, columnRemarks: null } |
|||
export default { |
|||
name: 'PersonInfoManage', |
|||
components: { pagination, crudOperation, rrOperation }, |
|||
cruds() { |
|||
return CRUD({ title: '人员信息', url: 'api/fonds/initFondsList', crudMethod: { ...crudColumn }, optShow: { |
|||
add: true, |
|||
edit: true, |
|||
del: false, |
|||
reset: true, |
|||
download: false, |
|||
group: false |
|||
}}) |
|||
}, |
|||
mixins: [presenter(), header(), form(defaultForm), crud()], |
|||
data() { |
|||
return { |
|||
permission: { |
|||
add: ['admin', 'column:add'], |
|||
edit: ['admin', 'column:edit'], |
|||
del: ['admin', 'column:del'] |
|||
}, |
|||
enabledTypeOptions: [ |
|||
{ key: '1', display_name: '全部' }, |
|||
{ key: '2', display_name: '已存照片' }, |
|||
{ key: '3', display_name: '暂无照片' } |
|||
], |
|||
fiterBlackUser: false, |
|||
rules: { |
|||
columnName: [ |
|||
{ required: true, message: '请输入机构名称', trigger: 'blur' } |
|||
], |
|||
columnNo: [ |
|||
{ required: true, message: '请输入栏目编码', trigger: 'blur' } |
|||
], |
|||
columnType: [ |
|||
{ required: true, message: '请选择栏目类型', trigger: 'change' } |
|||
], |
|||
columnContentType: [ |
|||
{ required: true, message: '请选择内容类型', trigger: 'change' } |
|||
], |
|||
columnOrders: [ |
|||
{ required: true, message: '请输入排序', trigger: 'blur', type: 'number' } |
|||
], |
|||
columnStatus: [ |
|||
{ required: true, message: '请选择状态', trigger: 'change' } |
|||
] |
|||
} |
|||
} |
|||
}, |
|||
computed: { |
|||
...mapGetters([ |
|||
'baseApi', |
|||
'user' |
|||
]) |
|||
}, |
|||
created() { |
|||
}, |
|||
mounted() { |
|||
}, |
|||
methods: { |
|||
[CRUD.HOOK.beforeRefresh]() { |
|||
}, |
|||
[CRUD.HOOK.afterRefresh]() { |
|||
}, |
|||
// 新增前 |
|||
[CRUD.HOOK.beforeToAdd](crud, form) { |
|||
}, |
|||
// 编辑前 |
|||
[CRUD.HOOK.beforeToEdit](crud, form) { |
|||
}, |
|||
// 提交前做的操作 |
|||
[CRUD.HOOK.afterValidateCU](crud) { |
|||
console.log(crud.form) |
|||
return true |
|||
}, |
|||
handleFiterBlackUser(val) { |
|||
console.log(val) |
|||
}, |
|||
toDelete(datas) { |
|||
this.$confirm('此操作将删除当前所选' + this.crud.title + '<span>你是否还要继续?</span>', '提示', { |
|||
confirmButtonText: '继续', |
|||
cancelButtonText: '取消', |
|||
type: 'warning', |
|||
dangerouslyUseHTMLString: true |
|||
}).then(() => { |
|||
this.crud.delAllLoading = true |
|||
const ids = [] |
|||
datas.forEach(val => { |
|||
ids.push(val.fondsId) |
|||
}) |
|||
// crudColumn.del(ids).then(() => { |
|||
// this.$message({ message: '删除成功', type: 'success', offset: 8 }) |
|||
// this.crud.delAllLoading = false |
|||
// this.crud.refresh() |
|||
// }).catch(err => { |
|||
// this.crud.delAllLoading = false |
|||
// console.log(err) |
|||
// }) |
|||
}).catch(() => { |
|||
}) |
|||
}, |
|||
changeStatus(data, val) { |
|||
this.$confirm('此操作将禁用 / 启用栏目 “' + data.fondsName + '”' + '<span>你是否还要继续?</span>', '提示', { |
|||
confirmButtonText: '继续', |
|||
cancelButtonText: '取消', |
|||
type: 'warning', |
|||
dangerouslyUseHTMLString: true |
|||
}).then(() => { |
|||
// crudColumn.FetchUpdateFondsStatus(data).then(res => { |
|||
// this.$message({ message: '修改成功', type: 'success', offset: 8 }) |
|||
// }).catch(() => { |
|||
// data.fondsStatus = !data.fondsStatus |
|||
// }) |
|||
}).catch(() => { |
|||
this.$message({ message: '已取消修改', offset: 8 }) |
|||
// data.fondsStatus = data.fondsStatus ? 0 : 1 |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
::v-deep .el-dialog { |
|||
.el-dialog__body { |
|||
.el-form-item{ |
|||
&:nth-child(odd){ |
|||
margin-right: 0 !important; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
.face-search.el-button:hover, |
|||
.face-search.el-button:focus, |
|||
.face-search.el-button--info.is-plain:hover, |
|||
.face-search.el-button--info.is-plain:focus{ |
|||
background: #E8F2FF !important; |
|||
} |
|||
</style> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue