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