李磊
3 years ago
23 changed files with 1777 additions and 105 deletions
@ -0,0 +1,52 @@ |
|||||
|
import api from '@/utils/api' |
||||
|
import qs from 'qs' |
||||
|
|
||||
|
export function add(data) { |
||||
|
return api({ |
||||
|
url: '/certificate', |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
export function edit(data) { |
||||
|
return api({ |
||||
|
url: '/certificate', |
||||
|
method: 'put', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
export function del(params) { |
||||
|
return api({ |
||||
|
url: '/certificate', |
||||
|
method: 'delete', |
||||
|
params, |
||||
|
paramsSerializer: function(params) { |
||||
|
return qs.stringify(params, { indices: false }) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
export function getList(params) { |
||||
|
return api({ |
||||
|
url: '/certificate', |
||||
|
method: 'get', |
||||
|
params |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
export function exportExcel(params, exportOptions) { |
||||
|
return api({ |
||||
|
url: '/certificate/exportExcel' + '?' + qs.stringify(params, { indices: false }), |
||||
|
method: 'get', |
||||
|
params: { |
||||
|
exportOptions: exportOptions |
||||
|
}, |
||||
|
paramsSerializer: function(params) { |
||||
|
return qs.stringify(params, { indices: false }) |
||||
|
}, |
||||
|
responseType: 'blob' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
export default { add, edit, del, getList } |
@ -0,0 +1,48 @@ |
|||||
|
import api from '@/utils/api' |
||||
|
import qs from 'qs' |
||||
|
|
||||
|
const rootUrl = '/dicMutiLevelDirectory' |
||||
|
|
||||
|
export function add(data) { |
||||
|
return api({ |
||||
|
url: rootUrl, |
||||
|
method: 'post', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
export function edit(data) { |
||||
|
return api({ |
||||
|
url: rootUrl, |
||||
|
method: 'put', |
||||
|
data |
||||
|
}) |
||||
|
} |
||||
|
export function del(params) { |
||||
|
return api({ |
||||
|
url: rootUrl, |
||||
|
method: 'delete', |
||||
|
params, |
||||
|
paramsSerializer: function(params) { |
||||
|
return qs.stringify(params, { indices: false }) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
export function get(params) { |
||||
|
return api({ |
||||
|
url: rootUrl, |
||||
|
method: 'get', |
||||
|
params |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
export function getTreeList(params) { |
||||
|
return api({ |
||||
|
url: rootUrl + '/getTreeList', |
||||
|
method: 'get', |
||||
|
params |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
export default { add, edit, del, get } |
@ -0,0 +1,298 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<!--头部选项--> |
||||
|
<div class="head-container"> |
||||
|
<div> |
||||
|
<el-date-picker |
||||
|
v-model="query.jieyueTime" |
||||
|
type="date" |
||||
|
placeholder="选择借阅日期" |
||||
|
@change="crud.toQuery" |
||||
|
/> |
||||
|
<el-select |
||||
|
v-model="query.state" |
||||
|
placeholder="请选择借阅状态" |
||||
|
style="width: 150px" |
||||
|
class="filter-item" |
||||
|
clearable |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in ifOverdueList" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value" |
||||
|
/> |
||||
|
</el-select> |
||||
|
<el-select |
||||
|
v-model="query.jieyueren" |
||||
|
placeholder="请选择借阅人" |
||||
|
style="width: 150px" |
||||
|
class="filter-item" |
||||
|
clearable |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in useStateList" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.id" |
||||
|
/> |
||||
|
</el-select> |
||||
|
<el-button type="primary" icon="el-icon-search" @click="crud.toQuery"> |
||||
|
查询 |
||||
|
</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!--表格内容--> |
||||
|
<CustomTable |
||||
|
ref="customTable" |
||||
|
:col-configs="colConfigs" |
||||
|
:columns="columns" |
||||
|
:crud="crud" |
||||
|
:row-class-name="getTableRowClassName" |
||||
|
> |
||||
|
<el-table-column slot="operation" align="center" width="100" label="操作"> |
||||
|
<template slot-scope="scope"> |
||||
|
<Edit |
||||
|
:permission="permission" |
||||
|
:data="scope.row" |
||||
|
:disabled-edit="false" |
||||
|
/> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</CustomTable> |
||||
|
<pagination /> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import CRUD, { form, header, presenter } from '@/components/Crud/crud' |
||||
|
// import Crud from '@/components/Crud' |
||||
|
import Edit from '@/components/Crud/Edit' |
||||
|
import CustomTable from '@/components/Crud/Table' |
||||
|
import Pagination from '@/components/Crud/Pagination' |
||||
|
|
||||
|
// crud交由presenter持有 |
||||
|
const defaultCrud = presenter( |
||||
|
CRUD({ |
||||
|
title: '借阅记录', |
||||
|
url: '/borrowing/list', |
||||
|
orderBy: ['id asc'] |
||||
|
}) |
||||
|
) |
||||
|
|
||||
|
// 设置初始form |
||||
|
const defaultForm = form({ |
||||
|
baogaobianhao: null, |
||||
|
assetNum: '', |
||||
|
equipmentNum: '', |
||||
|
customName: '', |
||||
|
equipmentName: '', |
||||
|
classCode: '', |
||||
|
brand: '', |
||||
|
specifications: '', |
||||
|
factoryNum: '', |
||||
|
location: '', |
||||
|
achieveDate: '', |
||||
|
commissioningDate: '', |
||||
|
remark: '', |
||||
|
quantity: '', |
||||
|
unitPrice: '', |
||||
|
totalPrice: '', |
||||
|
valueType: '', |
||||
|
assetSource: '', |
||||
|
fundingSource: '', |
||||
|
procurementType: '', |
||||
|
discount: '', |
||||
|
netWorth: '', |
||||
|
depreciationState: '', |
||||
|
bookedState: '', |
||||
|
departmentId: '', |
||||
|
principal: '', |
||||
|
propertyUnit: '', |
||||
|
useState: '', |
||||
|
useDirection: '', |
||||
|
useYear: '', |
||||
|
usePurpose: '', |
||||
|
measureState: '', |
||||
|
earlyWarningCycle: '', |
||||
|
checkLastDate: '', |
||||
|
checkDate: '' |
||||
|
}) |
||||
|
|
||||
|
export default { |
||||
|
name: 'InstrumentList', |
||||
|
components: { Pagination, CustomTable, Edit }, |
||||
|
mixins: [defaultCrud, defaultForm, header()], |
||||
|
data() { |
||||
|
return { |
||||
|
colConfigs: [ |
||||
|
{ prop: 'baogaobianhao', label: '报告编号', align: 'center' }, |
||||
|
{ prop: 'createBy', label: '创建人', align: 'center' }, |
||||
|
{ prop: 'createTime', label: '创建时间', align: 'center' }, |
||||
|
{ prop: 'guihuanTime', label: '归还时间', align: 'center' }, |
||||
|
{ prop: 'jieyueTime', label: '借阅时间', align: 'center' }, |
||||
|
{ prop: 'jieyueren', label: '借阅人', align: 'center' }, |
||||
|
{ prop: 'state', label: '借阅状态', align: 'center' }, |
||||
|
{ prop: 'updateBy', label: '修改人', align: 'center' }, |
||||
|
{ |
||||
|
prop: 'updateTime', |
||||
|
label: '更新时间', |
||||
|
align: 'center', |
||||
|
formatter: this.formatter.formatterDepartmentName |
||||
|
}, |
||||
|
{ slot: 'operation' } |
||||
|
], |
||||
|
permission: { |
||||
|
add: ['instrument:add'], |
||||
|
edit: ['instrument:update'], |
||||
|
del: ['instrument:delete'] |
||||
|
}, |
||||
|
dicAssetTree: [], |
||||
|
parentId: [], |
||||
|
activeName: 'first', |
||||
|
valueTypeList: [], |
||||
|
assetSourceList: [], |
||||
|
fundingSourceList: [], |
||||
|
procurementTypeList: [], |
||||
|
depreciationStateList: [], |
||||
|
bookedStateList: [ |
||||
|
{ label: '已入账', value: true }, |
||||
|
{ label: '未入账', value: false } |
||||
|
], |
||||
|
departmentTree: [], |
||||
|
departmentId: 0, |
||||
|
treeSelectProps: { |
||||
|
children: 'children', |
||||
|
label: 'name', |
||||
|
value: 'id' |
||||
|
}, |
||||
|
userList: this.$store.getters.allUser, |
||||
|
useStateList: [], |
||||
|
useDirectionList: [], |
||||
|
usePurposeList: [], |
||||
|
measureStateList: [ |
||||
|
{ value: true, label: '计量' }, |
||||
|
{ value: false, label: '非计量' } |
||||
|
], |
||||
|
ifOverdueList: [ |
||||
|
{ value: 0, label: '正常' }, |
||||
|
{ value: 1, label: '预警' }, |
||||
|
{ value: 2, label: '超期' } |
||||
|
], |
||||
|
cycleList: [], |
||||
|
rules: { |
||||
|
departmentId: [ |
||||
|
{ required: true, message: '请选择使用部门', trigger: 'blur' } |
||||
|
], |
||||
|
quantity: [ |
||||
|
{ required: true, message: '请填写设备数量', trigger: 'blur' } |
||||
|
], |
||||
|
unitPrice: [ |
||||
|
{ required: true, message: '请填写设备单价', trigger: 'blur' } |
||||
|
], |
||||
|
totalPrice: [ |
||||
|
{ required: true, message: '请填写设备总价', trigger: 'blur' } |
||||
|
], |
||||
|
useState: [ |
||||
|
{ required: true, message: '请选择使用状况', trigger: 'blur' } |
||||
|
], |
||||
|
useYear: [ |
||||
|
{ required: true, message: '请填写使用年限', trigger: 'blur' } |
||||
|
], |
||||
|
measureState: [ |
||||
|
{ required: true, message: '请选择计量状态', trigger: 'blur' } |
||||
|
], |
||||
|
principal: [ |
||||
|
{ required: true, message: '请选择使用人', trigger: 'blur' } |
||||
|
] |
||||
|
}, |
||||
|
instrumentId: 0, |
||||
|
moveDialogVisible: false, |
||||
|
ifMeasure: false |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
// this.initDicDataList() |
||||
|
}, |
||||
|
methods: { |
||||
|
// 刷新之后重置部门查询的值 |
||||
|
[CRUD.HOOK.afterResetQuery]() { |
||||
|
if (this.$refs.queryTreeSelect) { |
||||
|
this.$refs.queryTreeSelect.clearHandle() |
||||
|
} |
||||
|
}, |
||||
|
// 新增与编辑前做的操作 |
||||
|
[CRUD.HOOK.afterToCU]() { |
||||
|
this.activeName = 'first' |
||||
|
}, |
||||
|
// 编辑框打开后做的操作 |
||||
|
[CRUD.HOOK.afterToEdit](crud, form) { |
||||
|
this.departmentId = form.departmentId |
||||
|
this.ifMeasure = form.measureState |
||||
|
}, |
||||
|
// 编辑框取消后的操作 |
||||
|
[CRUD.HOOK.afterEditCancel]() { |
||||
|
this.departmentId = 0 |
||||
|
this.ifMeasure = false |
||||
|
}, |
||||
|
// EXCEL上传方法 |
||||
|
beforeUpload(file) { |
||||
|
const isExcel = |
||||
|
file.type === 'application/vnd.ms-excel' || |
||||
|
file.type === |
||||
|
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' |
||||
|
if (!isExcel) { |
||||
|
this.$notify.error('只能上传xls/xlsx格式的文件') |
||||
|
return false |
||||
|
} |
||||
|
const fd = new FormData() |
||||
|
fd.append('file', file) |
||||
|
fd.append('type', 3) |
||||
|
// uploadInstrumentData(fd).then(() => { |
||||
|
// this.$notify.success('导入数据成功。') |
||||
|
// this.crud.toQuery() |
||||
|
// }) |
||||
|
}, |
||||
|
|
||||
|
// 关闭所有弹窗 |
||||
|
resetChecks() { |
||||
|
this.moveDialogVisible = false |
||||
|
}, |
||||
|
// 给检索条件赋值(部门主键) |
||||
|
getDepartmentId(value) { |
||||
|
this.query.departmentId = value === 0 ? '' : value |
||||
|
}, |
||||
|
// 更改行超期、预警字体颜色 |
||||
|
getTableRowClassName({ row }) { |
||||
|
let color = '' |
||||
|
switch (row.ifOverdue) { |
||||
|
case 2: |
||||
|
color = 'table-row-color-red' |
||||
|
break |
||||
|
case 1: |
||||
|
color = 'table-row-color-orange' |
||||
|
break |
||||
|
default: |
||||
|
color = '' |
||||
|
break |
||||
|
} |
||||
|
return color |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style> |
||||
|
input::-webkit-outer-spin-button, |
||||
|
input::-webkit-inner-spin-button { |
||||
|
-webkit-appearance: none !important; |
||||
|
margin: 0; |
||||
|
} |
||||
|
.identification { |
||||
|
width: 30px; |
||||
|
height: 15px; |
||||
|
display: inline-block; |
||||
|
border: gray 1px solid; |
||||
|
border-radius: 15px; |
||||
|
float: left; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,298 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<!--头部选项--> |
||||
|
<div class="head-container"> |
||||
|
<div> |
||||
|
<el-date-picker |
||||
|
v-model="query.jieyueTime" |
||||
|
type="date" |
||||
|
placeholder="选择借阅日期" |
||||
|
@change="crud.toQuery" |
||||
|
/> |
||||
|
<el-select |
||||
|
v-model="query.state" |
||||
|
placeholder="请选择借阅状态" |
||||
|
style="width: 150px" |
||||
|
class="filter-item" |
||||
|
clearable |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in ifOverdueList" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value" |
||||
|
/> |
||||
|
</el-select> |
||||
|
<el-select |
||||
|
v-model="query.jieyueren" |
||||
|
placeholder="请选择借阅人" |
||||
|
style="width: 150px" |
||||
|
class="filter-item" |
||||
|
clearable |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in useStateList" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.id" |
||||
|
/> |
||||
|
</el-select> |
||||
|
<el-button type="primary" icon="el-icon-search" @click="crud.toQuery"> |
||||
|
查询 |
||||
|
</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!--表格内容--> |
||||
|
<CustomTable |
||||
|
ref="customTable" |
||||
|
:col-configs="colConfigs" |
||||
|
:columns="columns" |
||||
|
:crud="crud" |
||||
|
:row-class-name="getTableRowClassName" |
||||
|
> |
||||
|
<el-table-column slot="operation" align="center" width="100" label="操作"> |
||||
|
<template slot-scope="scope"> |
||||
|
<Edit |
||||
|
:permission="permission" |
||||
|
:data="scope.row" |
||||
|
:disabled-edit="false" |
||||
|
/> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</CustomTable> |
||||
|
<pagination /> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import CRUD, { form, header, presenter } from '@/components/Crud/crud' |
||||
|
// import Crud from '@/components/Crud' |
||||
|
import Edit from '@/components/Crud/Edit' |
||||
|
import CustomTable from '@/components/Crud/Table' |
||||
|
import Pagination from '@/components/Crud/Pagination' |
||||
|
|
||||
|
// crud交由presenter持有 |
||||
|
const defaultCrud = presenter( |
||||
|
CRUD({ |
||||
|
title: '借阅记录', |
||||
|
url: '/borrowing/list', |
||||
|
orderBy: ['id asc'] |
||||
|
}) |
||||
|
) |
||||
|
|
||||
|
// 设置初始form |
||||
|
const defaultForm = form({ |
||||
|
baogaobianhao: null, |
||||
|
assetNum: '', |
||||
|
equipmentNum: '', |
||||
|
customName: '', |
||||
|
equipmentName: '', |
||||
|
classCode: '', |
||||
|
brand: '', |
||||
|
specifications: '', |
||||
|
factoryNum: '', |
||||
|
location: '', |
||||
|
achieveDate: '', |
||||
|
commissioningDate: '', |
||||
|
remark: '', |
||||
|
quantity: '', |
||||
|
unitPrice: '', |
||||
|
totalPrice: '', |
||||
|
valueType: '', |
||||
|
assetSource: '', |
||||
|
fundingSource: '', |
||||
|
procurementType: '', |
||||
|
discount: '', |
||||
|
netWorth: '', |
||||
|
depreciationState: '', |
||||
|
bookedState: '', |
||||
|
departmentId: '', |
||||
|
principal: '', |
||||
|
propertyUnit: '', |
||||
|
useState: '', |
||||
|
useDirection: '', |
||||
|
useYear: '', |
||||
|
usePurpose: '', |
||||
|
measureState: '', |
||||
|
earlyWarningCycle: '', |
||||
|
checkLastDate: '', |
||||
|
checkDate: '' |
||||
|
}) |
||||
|
|
||||
|
export default { |
||||
|
name: 'InstrumentList', |
||||
|
components: { Pagination, CustomTable, Edit }, |
||||
|
mixins: [defaultCrud, defaultForm, header()], |
||||
|
data() { |
||||
|
return { |
||||
|
colConfigs: [ |
||||
|
{ prop: 'baogaobianhao', label: '报告编号', align: 'center' }, |
||||
|
{ prop: 'createBy', label: '创建人', align: 'center' }, |
||||
|
{ prop: 'createTime', label: '创建时间', align: 'center' }, |
||||
|
{ prop: 'guihuanTime', label: '归还时间', align: 'center' }, |
||||
|
{ prop: 'jieyueTime', label: '借阅时间', align: 'center' }, |
||||
|
{ prop: 'jieyueren', label: '借阅人', align: 'center' }, |
||||
|
{ prop: 'state', label: '借阅状态', align: 'center' }, |
||||
|
{ prop: 'updateBy', label: '修改人', align: 'center' }, |
||||
|
{ |
||||
|
prop: 'updateTime', |
||||
|
label: '更新时间', |
||||
|
align: 'center', |
||||
|
formatter: this.formatter.formatterDepartmentName |
||||
|
}, |
||||
|
{ slot: 'operation' } |
||||
|
], |
||||
|
permission: { |
||||
|
add: ['instrument:add'], |
||||
|
edit: ['instrument:update'], |
||||
|
del: ['instrument:delete'] |
||||
|
}, |
||||
|
dicAssetTree: [], |
||||
|
parentId: [], |
||||
|
activeName: 'first', |
||||
|
valueTypeList: [], |
||||
|
assetSourceList: [], |
||||
|
fundingSourceList: [], |
||||
|
procurementTypeList: [], |
||||
|
depreciationStateList: [], |
||||
|
bookedStateList: [ |
||||
|
{ label: '已入账', value: true }, |
||||
|
{ label: '未入账', value: false } |
||||
|
], |
||||
|
departmentTree: [], |
||||
|
departmentId: 0, |
||||
|
treeSelectProps: { |
||||
|
children: 'children', |
||||
|
label: 'name', |
||||
|
value: 'id' |
||||
|
}, |
||||
|
userList: this.$store.getters.allUser, |
||||
|
useStateList: [], |
||||
|
useDirectionList: [], |
||||
|
usePurposeList: [], |
||||
|
measureStateList: [ |
||||
|
{ value: true, label: '计量' }, |
||||
|
{ value: false, label: '非计量' } |
||||
|
], |
||||
|
ifOverdueList: [ |
||||
|
{ value: 0, label: '正常' }, |
||||
|
{ value: 1, label: '预警' }, |
||||
|
{ value: 2, label: '超期' } |
||||
|
], |
||||
|
cycleList: [], |
||||
|
rules: { |
||||
|
departmentId: [ |
||||
|
{ required: true, message: '请选择使用部门', trigger: 'blur' } |
||||
|
], |
||||
|
quantity: [ |
||||
|
{ required: true, message: '请填写设备数量', trigger: 'blur' } |
||||
|
], |
||||
|
unitPrice: [ |
||||
|
{ required: true, message: '请填写设备单价', trigger: 'blur' } |
||||
|
], |
||||
|
totalPrice: [ |
||||
|
{ required: true, message: '请填写设备总价', trigger: 'blur' } |
||||
|
], |
||||
|
useState: [ |
||||
|
{ required: true, message: '请选择使用状况', trigger: 'blur' } |
||||
|
], |
||||
|
useYear: [ |
||||
|
{ required: true, message: '请填写使用年限', trigger: 'blur' } |
||||
|
], |
||||
|
measureState: [ |
||||
|
{ required: true, message: '请选择计量状态', trigger: 'blur' } |
||||
|
], |
||||
|
principal: [ |
||||
|
{ required: true, message: '请选择使用人', trigger: 'blur' } |
||||
|
] |
||||
|
}, |
||||
|
instrumentId: 0, |
||||
|
moveDialogVisible: false, |
||||
|
ifMeasure: false |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
// this.initDicDataList() |
||||
|
}, |
||||
|
methods: { |
||||
|
// 刷新之后重置部门查询的值 |
||||
|
[CRUD.HOOK.afterResetQuery]() { |
||||
|
if (this.$refs.queryTreeSelect) { |
||||
|
this.$refs.queryTreeSelect.clearHandle() |
||||
|
} |
||||
|
}, |
||||
|
// 新增与编辑前做的操作 |
||||
|
[CRUD.HOOK.afterToCU]() { |
||||
|
this.activeName = 'first' |
||||
|
}, |
||||
|
// 编辑框打开后做的操作 |
||||
|
[CRUD.HOOK.afterToEdit](crud, form) { |
||||
|
this.departmentId = form.departmentId |
||||
|
this.ifMeasure = form.measureState |
||||
|
}, |
||||
|
// 编辑框取消后的操作 |
||||
|
[CRUD.HOOK.afterEditCancel]() { |
||||
|
this.departmentId = 0 |
||||
|
this.ifMeasure = false |
||||
|
}, |
||||
|
// EXCEL上传方法 |
||||
|
beforeUpload(file) { |
||||
|
const isExcel = |
||||
|
file.type === 'application/vnd.ms-excel' || |
||||
|
file.type === |
||||
|
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' |
||||
|
if (!isExcel) { |
||||
|
this.$notify.error('只能上传xls/xlsx格式的文件') |
||||
|
return false |
||||
|
} |
||||
|
const fd = new FormData() |
||||
|
fd.append('file', file) |
||||
|
fd.append('type', 3) |
||||
|
// uploadInstrumentData(fd).then(() => { |
||||
|
// this.$notify.success('导入数据成功。') |
||||
|
// this.crud.toQuery() |
||||
|
// }) |
||||
|
}, |
||||
|
|
||||
|
// 关闭所有弹窗 |
||||
|
resetChecks() { |
||||
|
this.moveDialogVisible = false |
||||
|
}, |
||||
|
// 给检索条件赋值(部门主键) |
||||
|
getDepartmentId(value) { |
||||
|
this.query.departmentId = value === 0 ? '' : value |
||||
|
}, |
||||
|
// 更改行超期、预警字体颜色 |
||||
|
getTableRowClassName({ row }) { |
||||
|
let color = '' |
||||
|
switch (row.ifOverdue) { |
||||
|
case 2: |
||||
|
color = 'table-row-color-red' |
||||
|
break |
||||
|
case 1: |
||||
|
color = 'table-row-color-orange' |
||||
|
break |
||||
|
default: |
||||
|
color = '' |
||||
|
break |
||||
|
} |
||||
|
return color |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style> |
||||
|
input::-webkit-outer-spin-button, |
||||
|
input::-webkit-inner-spin-button { |
||||
|
-webkit-appearance: none !important; |
||||
|
margin: 0; |
||||
|
} |
||||
|
.identification { |
||||
|
width: 30px; |
||||
|
height: 15px; |
||||
|
display: inline-block; |
||||
|
border: gray 1px solid; |
||||
|
border-radius: 15px; |
||||
|
float: left; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,217 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<!--头部选项--> |
||||
|
<div class="head-container"> |
||||
|
<div v-if="crud.props.searchToggle"> |
||||
|
<el-input v-model="query.equipmentNum" placeholder="请输入设备编号" style="width: 200px;" class="filter-item" clearable @keyup.enter.native="crud.toQuery" /> |
||||
|
<el-input v-model="query.customName" placeholder="请输入新名称" style="width: 200px;" class="filter-item" clearable @keyup.enter.native="crud.toQuery" /> |
||||
|
<el-input v-model="query.unitPrice" placeholder="请输入单价" style="width: 150px;" class="filter-item" clearable @keyup.enter.native="crud.toQuery" /> |
||||
|
<el-select v-model="query.measureState" placeholder="请选择计量状态" style="width: 150px;" class="filter-item" clearable> |
||||
|
<el-option v-for="item in measureStateList" :key="item.value" :label="item.label" :value="item.value" /> |
||||
|
</el-select> |
||||
|
<el-select v-model="query.ifOverdue" placeholder="请选择超期状态" style="width: 150px;" class="filter-item" clearable> |
||||
|
<el-option v-for="item in ifOverdueList" :key="item.value" :label="item.label" :value="item.value" /> |
||||
|
</el-select> |
||||
|
<el-select v-model="query.useState" placeholder="请选择使用状况" style="width: 150px;" class="filter-item" clearable> |
||||
|
<el-option v-for="item in useStateList" :key="item.value" :label="item.label" :value="item.id" /> |
||||
|
</el-select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!--表格内容--> |
||||
|
<CustomTable ref="customTable" :col-configs="colConfigs" :columns="columns" :crud="crud" :row-class-name="getTableRowClassName"> |
||||
|
<el-table-column slot="operation" align="center" width="100" label="操作"> |
||||
|
<template slot-scope="scope"> |
||||
|
<Edit :permission="permission" :data="scope.row" :disabled-edit="false" /> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</CustomTable> |
||||
|
<pagination /> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import CRUD, { form, header, presenter } from '@/components/Crud/crud' |
||||
|
// import Crud from '@/components/Crud' |
||||
|
import Edit from '@/components/Crud/Edit' |
||||
|
import CustomTable from '@/components/Crud/Table' |
||||
|
import Pagination from '@/components/Crud/Pagination' |
||||
|
|
||||
|
// crud交由presenter持有 |
||||
|
const defaultCrud = presenter(CRUD({ |
||||
|
title: '借阅记录', |
||||
|
url: '/borrowing/list', |
||||
|
orderBy: ['id asc'] |
||||
|
})) |
||||
|
|
||||
|
// 设置初始form |
||||
|
const defaultForm = form({ |
||||
|
|
||||
|
}) |
||||
|
|
||||
|
export default { |
||||
|
name: 'InstrumentList', |
||||
|
components: { Pagination, CustomTable, Edit }, |
||||
|
mixins: [defaultCrud, defaultForm, header()], |
||||
|
data() { |
||||
|
return { |
||||
|
colConfigs: [ |
||||
|
{ prop: 'equipmentNum', label: '设备编号', align: 'center' }, |
||||
|
{ prop: 'customName', label: '新名称', align: 'center' }, |
||||
|
{ prop: 'brand', label: '品牌', align: 'center' }, |
||||
|
{ prop: 'factoryNum', label: '出厂编号', align: 'center' }, |
||||
|
{ prop: 'achieveDate', label: '购置时间', align: 'center' }, |
||||
|
{ prop: 'quantity', label: '数量', align: 'center' }, |
||||
|
{ prop: 'unitPrice', label: '单价', align: 'center' }, |
||||
|
{ prop: 'totalPrice', label: '总价', align: 'center' }, |
||||
|
{ slot: 'operation' } |
||||
|
], |
||||
|
permission: { |
||||
|
add: ['instrument:add'], |
||||
|
edit: ['instrument:update'], |
||||
|
del: ['instrument:delete'] |
||||
|
}, |
||||
|
dicAssetTree: [], |
||||
|
parentId: [], |
||||
|
activeName: 'first', |
||||
|
valueTypeList: [], |
||||
|
assetSourceList: [], |
||||
|
fundingSourceList: [], |
||||
|
procurementTypeList: [], |
||||
|
depreciationStateList: [], |
||||
|
bookedStateList: [ |
||||
|
{ label: '已入账', value: true }, |
||||
|
{ label: '未入账', value: false } |
||||
|
], |
||||
|
departmentTree: [], |
||||
|
departmentId: 0, |
||||
|
treeSelectProps: { |
||||
|
children: 'children', |
||||
|
label: 'name', |
||||
|
value: 'id' |
||||
|
}, |
||||
|
userList: this.$store.getters.allUser, |
||||
|
useStateList: [], |
||||
|
useDirectionList: [], |
||||
|
usePurposeList: [], |
||||
|
measureStateList: [ |
||||
|
{ value: true, label: '计量' }, |
||||
|
{ value: false, label: '非计量' } |
||||
|
], |
||||
|
ifOverdueList: [ |
||||
|
{ value: 0, label: '正常' }, |
||||
|
{ value: 1, label: '预警' }, |
||||
|
{ value: 2, label: '超期' } |
||||
|
], |
||||
|
cycleList: [], |
||||
|
rules: { |
||||
|
departmentId: [ |
||||
|
{ required: true, message: '请选择使用部门', trigger: 'blur' } |
||||
|
], |
||||
|
quantity: [ |
||||
|
{ required: true, message: '请填写设备数量', trigger: 'blur' } |
||||
|
], |
||||
|
unitPrice: [ |
||||
|
{ required: true, message: '请填写设备单价', trigger: 'blur' } |
||||
|
], |
||||
|
totalPrice: [ |
||||
|
{ required: true, message: '请填写设备总价', trigger: 'blur' } |
||||
|
], |
||||
|
useState: [ |
||||
|
{ required: true, message: '请选择使用状况', trigger: 'blur' } |
||||
|
], |
||||
|
useYear: [ |
||||
|
{ required: true, message: '请填写使用年限', trigger: 'blur' } |
||||
|
], |
||||
|
measureState: [ |
||||
|
{ required: true, message: '请选择计量状态', trigger: 'blur' } |
||||
|
], |
||||
|
principal: [ |
||||
|
{ required: true, message: '请选择使用人', trigger: 'blur' } |
||||
|
] |
||||
|
}, |
||||
|
instrumentId: 0, |
||||
|
moveDialogVisible: false, |
||||
|
ifMeasure: false |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
}, |
||||
|
methods: { |
||||
|
// 刷新之后重置部门查询的值 |
||||
|
[CRUD.HOOK.afterResetQuery]() { |
||||
|
if (this.$refs.queryTreeSelect) { |
||||
|
this.$refs.queryTreeSelect.clearHandle() |
||||
|
} |
||||
|
}, |
||||
|
// 新增与编辑前做的操作 |
||||
|
[CRUD.HOOK.afterToCU]() { |
||||
|
this.activeName = 'first' |
||||
|
}, |
||||
|
// 编辑框打开后做的操作 |
||||
|
[CRUD.HOOK.afterToEdit](crud, form) { |
||||
|
this.departmentId = form.departmentId |
||||
|
this.ifMeasure = form.measureState |
||||
|
}, |
||||
|
// 编辑框取消后的操作 |
||||
|
[CRUD.HOOK.afterEditCancel]() { |
||||
|
this.departmentId = 0 |
||||
|
this.ifMeasure = false |
||||
|
}, |
||||
|
// EXCEL上传方法 |
||||
|
beforeUpload(file) { |
||||
|
const isExcel = file.type === 'application/vnd.ms-excel' || file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' |
||||
|
if (!isExcel) { |
||||
|
this.$notify.error('只能上传xls/xlsx格式的文件') |
||||
|
return false |
||||
|
} |
||||
|
const fd = new FormData() |
||||
|
fd.append('file', file) |
||||
|
fd.append('type', 3) |
||||
|
// uploadInstrumentData(fd).then(() => { |
||||
|
// this.$notify.success('导入数据成功。') |
||||
|
// this.crud.toQuery() |
||||
|
// }) |
||||
|
}, |
||||
|
|
||||
|
// 关闭所有弹窗 |
||||
|
resetChecks() { |
||||
|
this.moveDialogVisible = false |
||||
|
}, |
||||
|
// 给检索条件赋值(部门主键) |
||||
|
getDepartmentId(value) { |
||||
|
this.query.departmentId = value === 0 ? '' : value |
||||
|
}, |
||||
|
// 更改行超期、预警字体颜色 |
||||
|
getTableRowClassName({ row }) { |
||||
|
let color = '' |
||||
|
switch (row.ifOverdue) { |
||||
|
case 2: |
||||
|
color = 'table-row-color-red' |
||||
|
break |
||||
|
case 1: |
||||
|
color = 'table-row-color-orange' |
||||
|
break |
||||
|
default: |
||||
|
color = '' |
||||
|
break |
||||
|
} |
||||
|
return color |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style> |
||||
|
input::-webkit-outer-spin-button, |
||||
|
input::-webkit-inner-spin-button { |
||||
|
-webkit-appearance: none !important; |
||||
|
margin: 0; |
||||
|
} |
||||
|
.identification{ |
||||
|
width: 30px; |
||||
|
height:15px; |
||||
|
display: inline-block; |
||||
|
border:gray 1px solid; |
||||
|
border-radius:15px; |
||||
|
float: left; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,322 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<!--头部选项--> |
||||
|
<div class="head-container"> |
||||
|
<div> |
||||
|
<el-input v-model="query.username" placeholder="用户名称" style="width: 200px;" class="filter-item" clearable @keyup.enter.native="crud.toQuery" /> |
||||
|
<el-input v-model="query.identificationNum" placeholder="身份证号码" style="width: 200px;" class="filter-item" clearable @keyup.enter.native="crud.toQuery" /> |
||||
|
<el-date-picker v-model="startExpirationDateQuery" type="month" value-format="yyyy-MM" placeholder="选择有效日期终-开始" class="filter-item" @change="changeStartExpirationDateQuery" /> |
||||
|
<el-date-picker v-model="endExpirationDateQuery" type="month" value-format="yyyy-MM" placeholder="选择有效日期终-结束" class="filter-item" @change="changeEndExpirationDateQuery" /> |
||||
|
<query :crud="crud" /> |
||||
|
</div> |
||||
|
<crud :permission="permission"> |
||||
|
<el-button slot="right" class="filter-item" icon="el-icon-download" type="warning" @click="dialogVisible = true"> |
||||
|
导出数据 |
||||
|
</el-button> |
||||
|
</crud> |
||||
|
</div> |
||||
|
<!--表格内容--> |
||||
|
<CustomTable ref="customTable" :col-configs="colConfigs" :columns="columns" :crud="crud" :row-class-name="getTableRowClassName"> |
||||
|
<el-table-column v-if="checkPermission(permission.edit)" slot="operation" align="center" width="100" label="操作"> |
||||
|
<template slot-scope="scope"> |
||||
|
<Edit :permission="permission" :data="scope.row" :disabled-edit="false" /> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</CustomTable> |
||||
|
<pagination /> |
||||
|
<el-dialog :title="crud.status.title" :visible.sync="crud.status.editor > 0" :before-close="crud.cancelCU"> |
||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="130px"> |
||||
|
<el-form-item label="姓名:" prop="username"> |
||||
|
<el-input v-model="form.username" placeholder="填写姓名" type="text" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="身份证号码:" prop="identificationNum"> |
||||
|
<el-input v-model="form.identificationNum" placeholder="填写身份证号码" type="text" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="学历:" prop="education"> |
||||
|
<el-select v-model="form.education" placeholder="填写学历"> |
||||
|
<el-option v-for="item in educationDicList" :key="item.id" :label="item.label" :value="item.value" /> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="专业:" prop="major"> |
||||
|
<el-input v-model="form.major" placeholder="填写专业" type="text" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="职称:" prop="certificateName"> |
||||
|
<el-select v-model="form.certificateName" placeholder="填写职称"> |
||||
|
<el-option v-for="item in certificateNameDicList" :key="item.id" :label="item.label" :value="item.value" /> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="级别/项目/代号:" prop="levelList"> |
||||
|
<el-cascader v-model="levelList" :options="levelOptions" @change="changeLevel" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="证书编号:" prop="certificateNum"> |
||||
|
<el-input v-model="form.certificateNum" placeholder="填写证书编号" type="text" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="有效期:" prop="expirationDate"> |
||||
|
<el-date-picker v-model="expirationDate" type="monthrange" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM" @change="changeExpirationDate" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="发换证日期:" prop="renewalDate"> |
||||
|
<el-date-picker v-model="form.renewalDate" type="date" value-format="yyyy-MM-dd" placeholder="选择开始日期" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="备注:" prop="remarks"> |
||||
|
<el-select v-model="form.remarks" placeholder="填写备注"> |
||||
|
<el-option v-for="item in remarksDicList" :key="item.id" :label="item.label" :value="item.value" /> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button @click="crud.cancelCU"> |
||||
|
取 消 |
||||
|
</el-button> |
||||
|
<el-button type="primary" @click="crud.submitCU"> |
||||
|
确 认 |
||||
|
</el-button> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
<el-dialog width="60%" :visible.sync="dialogVisible" title="自定义导出选项" @close="closeExportDialog"> |
||||
|
<el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" style="margin: 5px" @change="handleCheckAllChange"> |
||||
|
全选 |
||||
|
</el-checkbox> |
||||
|
<div style="margin: 15px 0;" /> |
||||
|
<el-checkbox-group v-model="checkedOptions" @change="handleCheckedChange"> |
||||
|
<el-checkbox v-for="options in exportOptionsData" :key="options.value" border :label="options.value" style="margin: 5px"> |
||||
|
{{ options.label }} |
||||
|
</el-checkbox> |
||||
|
</el-checkbox-group> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button @click="dialogVisible = false"> |
||||
|
取 消 |
||||
|
</el-button> |
||||
|
<el-button type="primary" @click="exportCertificate"> |
||||
|
确 认 |
||||
|
</el-button> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import CRUD, { form, header, presenter } from '@/components/Crud/crud' |
||||
|
import Crud from '@/components/Crud' |
||||
|
import Query from '@/components/Crud/Query' |
||||
|
import Edit from '@/components/Crud/Edit' |
||||
|
import CustomTable from '@/components/Crud/Table' |
||||
|
import Pagination from '@/components/Crud/Pagination' |
||||
|
import CrudCertificate, { exportExcel } from '@/api/certificate' |
||||
|
import { getTreeList } from '@/api/dic_muti_level_directory' |
||||
|
import { getDicDataListByTypeName, getLastDayByDate, parseTime, downloadFile } from '@/utils' |
||||
|
|
||||
|
// crud交由presenter持有 |
||||
|
const defaultCrud = presenter(CRUD({ |
||||
|
title: '证书', |
||||
|
url: '/certificate/list', |
||||
|
orderBy: ['id asc'], |
||||
|
crudMethod: { ...CrudCertificate } |
||||
|
})) |
||||
|
|
||||
|
// 设置初始form |
||||
|
const defaultForm = form({}) |
||||
|
|
||||
|
export default { |
||||
|
name: 'CertificateList', |
||||
|
components: { Pagination, Query, Crud, CustomTable, Edit }, |
||||
|
mixins: [defaultCrud, defaultForm, header()], |
||||
|
data() { |
||||
|
const validatorLevelList = (rule, value, callback) => { |
||||
|
if (!this.levelList.length) { |
||||
|
callback(new Error('请输入级别/项目/代号')) |
||||
|
} else { |
||||
|
callback() |
||||
|
} |
||||
|
} |
||||
|
const validatorExpirationDate = (rule, value, callback) => { |
||||
|
if (!this.expirationDate.length) { |
||||
|
callback(new Error('请输入有效日期')) |
||||
|
} else { |
||||
|
callback() |
||||
|
} |
||||
|
} |
||||
|
return { |
||||
|
colConfigs: [ |
||||
|
{ prop: 'username', label: '姓名', align: 'center', width: 50 }, |
||||
|
{ prop: 'identificationNum', label: '身份证号码', align: 'center' }, |
||||
|
{ prop: 'education', label: '学历', align: 'center', width: 50 }, |
||||
|
{ prop: 'major', label: '专业', align: 'center' }, |
||||
|
{ prop: 'certificateName', label: '职称', align: 'center', width: 60 }, |
||||
|
{ prop: 'level', label: '级别', align: 'center', width: 50 }, |
||||
|
{ prop: 'project', label: '项目', align: 'center' }, |
||||
|
{ prop: 'code', label: '代号', align: 'center', width: 50 }, |
||||
|
{ prop: 'certificateNum', label: '证书编号', align: 'center' }, |
||||
|
{ prop: 'startExpirationDate', label: '有效日期', align: 'center', |
||||
|
formatter: (row, column, cellValue) => { |
||||
|
return (cellValue ? cellValue.substring(0, cellValue.length - 3) : '') + ' 至 ' + (row.endExpirationDate ? row.endExpirationDate.substring(0, row.endExpirationDate.length - 3) : '') |
||||
|
} |
||||
|
}, |
||||
|
{ prop: 'renewalDate', label: '发换证日期', align: 'center', width: 50 }, |
||||
|
{ prop: 'remarks', label: '备注', align: 'center', width: 60 }, |
||||
|
{ slot: 'operation' } |
||||
|
], |
||||
|
permission: { |
||||
|
add: ['certificate-list:add'], |
||||
|
edit: ['certificate-list:update'], |
||||
|
del: ['certificate-list:delete'] |
||||
|
}, |
||||
|
rules: { |
||||
|
username: [{ required: true, message: '请输入姓名', trigger: 'blur' }], |
||||
|
identificationNum: [{ required: true, message: '请输入身份证号码', trigger: 'blur' }], |
||||
|
education: [{ required: true, message: '请输入学历', trigger: 'blur' }], |
||||
|
major: [{ required: true, message: '请输入专业', trigger: 'blur' }], |
||||
|
certificateName: [{ required: true, message: '请输入职称', trigger: 'blur' }], |
||||
|
levelList: [{ validator: validatorLevelList, required: true, trigger: 'blur' }], |
||||
|
certificateNum: [{ required: true, message: '请输入证书编号', trigger: 'blur' }], |
||||
|
expirationDate: [{ validator: validatorExpirationDate, required: true, trigger: 'blur' }], |
||||
|
renewalDate: [{ required: true, message: '请输入发换证日期', trigger: 'blur' }], |
||||
|
remarks: [{ required: true, message: '请输入备注', trigger: 'blur' }] |
||||
|
}, |
||||
|
levelList: [], |
||||
|
levelOptions: [], |
||||
|
expirationDate: [], |
||||
|
educationDicList: [], |
||||
|
certificateNameDicList: [], |
||||
|
remarksDicList: [], |
||||
|
expirationDateQuery: [], |
||||
|
startExpirationDateQuery: '', |
||||
|
endExpirationDateQuery: '', |
||||
|
dialogVisible: false, |
||||
|
checkAll: [], |
||||
|
checkedOptions: [], |
||||
|
isIndeterminate: false, |
||||
|
exportOptionsData: [ |
||||
|
{ label: '姓名', value: 'username' }, |
||||
|
{ label: '身份证号码', value: 'identificationNum' }, |
||||
|
{ label: '学历', value: 'education' }, |
||||
|
{ label: '专业', value: 'major' }, |
||||
|
{ label: '职称', value: 'certificateName' }, |
||||
|
{ label: '级别', value: 'level' }, |
||||
|
{ label: '项目', value: 'project' }, |
||||
|
{ label: '代号', value: 'code' }, |
||||
|
{ label: '证书编号', value: 'certificateNum' }, |
||||
|
{ label: '有效日期开始', value: 'startExpirationDate' }, |
||||
|
{ label: '有效日期终止', value: 'endExpirationDate' }, |
||||
|
{ label: '发换证日期', value: 'renewalDate' }, |
||||
|
{ label: '备注', value: 'remarks' } |
||||
|
] |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
this.crud.optionShow = { |
||||
|
add: true, |
||||
|
edit: false, |
||||
|
del: true |
||||
|
} |
||||
|
getTreeList({ superParentLabel: 'certificate' }).then(data => { |
||||
|
this.levelOptions = data |
||||
|
}) |
||||
|
this.initDicDataList() |
||||
|
}, |
||||
|
methods: { |
||||
|
/** |
||||
|
* 初始化字典相关列表 |
||||
|
*/ |
||||
|
initDicDataList() { |
||||
|
this.educationDicList = getDicDataListByTypeName('education') |
||||
|
this.certificateNameDicList = getDicDataListByTypeName('certificate_name') |
||||
|
this.remarksDicList = getDicDataListByTypeName('certificate_remarks') |
||||
|
}, |
||||
|
[CRUD.HOOK.afterToAdd]() { |
||||
|
// 初始化数据 |
||||
|
this.$refs.form.resetFields() |
||||
|
this.$refs.form.clearValidate() |
||||
|
this.levelList = [] |
||||
|
this.expirationDate = [] |
||||
|
}, |
||||
|
[CRUD.HOOK.beforeToEdit]() { |
||||
|
// 初始化数据 |
||||
|
this.levelList = [this.form.level, this.form.project, this.form.code] |
||||
|
this.expirationDate = this.form.startExpirationDate ? [this.form.startExpirationDate, this.form.endExpirationDate] : [] |
||||
|
}, |
||||
|
changeLevel(value) { |
||||
|
this.form.level = value[0] |
||||
|
this.form.project = value[1] |
||||
|
this.form.code = value[2] |
||||
|
}, |
||||
|
changeExpirationDate(value) { |
||||
|
if (value) { |
||||
|
this.form.startExpirationDate = value[0] + '-01' |
||||
|
this.form.endExpirationDate = getLastDayByDate(value[1]) |
||||
|
} else { |
||||
|
this.form.startExpirationDate = '' |
||||
|
this.form.endExpirationDate = '' |
||||
|
} |
||||
|
}, |
||||
|
/** |
||||
|
* 更改行颜色 |
||||
|
* @param row |
||||
|
* @returns {string} |
||||
|
*/ |
||||
|
getTableRowClassName({ row }) { |
||||
|
const endExpirationDate = new Date(row.endExpirationDate) |
||||
|
const now = new Date() |
||||
|
if (endExpirationDate.getFullYear() < now.getFullYear() || (endExpirationDate.getFullYear() === now.getFullYear() && endExpirationDate.getMonth() <= now.getMonth())) { |
||||
|
return 'table-row-color-orange' |
||||
|
} |
||||
|
return '' |
||||
|
}, |
||||
|
changeStartExpirationDateQuery(value) { |
||||
|
if (value) { |
||||
|
this.query.startExpirationDate = getLastDayByDate(value) |
||||
|
} else { |
||||
|
this.query.startExpirationDate = '' |
||||
|
} |
||||
|
}, |
||||
|
changeEndExpirationDateQuery(value) { |
||||
|
if (value) { |
||||
|
this.query.endExpirationDate = getLastDayByDate(value) |
||||
|
} else { |
||||
|
this.query.endExpirationDate = '' |
||||
|
} |
||||
|
}, |
||||
|
closeExportDialog() { |
||||
|
this.checkAll = false |
||||
|
this.isIndeterminate = false |
||||
|
this.checkedOptions = [] |
||||
|
}, |
||||
|
handleCheckAllChange(val) { |
||||
|
if (val) { |
||||
|
this.exportOptionsData.forEach(options => { |
||||
|
this.checkedOptions.push(options.value) |
||||
|
}) |
||||
|
} else { |
||||
|
this.checkedOptions = [] |
||||
|
} |
||||
|
this.isIndeterminate = false |
||||
|
}, |
||||
|
handleCheckedChange(value) { |
||||
|
const checkedCount = value.length |
||||
|
this.checkAll = checkedCount === this.exportOptionsData.length |
||||
|
this.isIndeterminate = checkedCount > 0 && checkedCount < this.exportOptionsData.length |
||||
|
}, |
||||
|
exportCertificate() { |
||||
|
if (this.checkedOptions.length === 0) { |
||||
|
this.$message.error('请选择导出项') |
||||
|
return false |
||||
|
} |
||||
|
const sortOptions = [] |
||||
|
this.exportOptionsData.forEach(exportOptions => { |
||||
|
this.checkedOptions.forEach(checkedOptions => { |
||||
|
if (exportOptions.value === checkedOptions) { |
||||
|
sortOptions.push(checkedOptions) |
||||
|
} |
||||
|
}) |
||||
|
}) |
||||
|
exportExcel(this.crud.query, sortOptions).then(data => { |
||||
|
this.dialogVisible = false |
||||
|
downloadFile(data, parseTime(new Date()) + '-' + this.crud.title + '数据', 'xlsx') |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped> |
||||
|
|
||||
|
</style> |
@ -0,0 +1,89 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<div class="head-container"> |
||||
|
<crud :permission="{}" /> |
||||
|
</div> |
||||
|
<!--表格内容--> |
||||
|
<CustomTable ref="customTable" :col-configs="colConfigs" :columns="columns" :crud="crud" :row-class-name="getTableRowClassName" /> |
||||
|
<pagination /> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import CRUD, { header, presenter } from '@/components/Crud/crud' |
||||
|
import CustomTable from '@/components/Crud/Table' |
||||
|
import Pagination from '@/components/Crud/Pagination' |
||||
|
import CrudCertificate from '@/api/certificate' |
||||
|
import Crud from '@/components/Crud' |
||||
|
|
||||
|
// crud交由presenter持有 |
||||
|
const defaultCrud = presenter(CRUD({ |
||||
|
title: '证书', |
||||
|
url: '/certificate', |
||||
|
orderBy: ['id asc'], |
||||
|
crudMethod: { ...CrudCertificate } |
||||
|
})) |
||||
|
|
||||
|
export default { |
||||
|
name: 'CertificateList', |
||||
|
components: { Pagination, CustomTable, Crud }, |
||||
|
mixins: [defaultCrud, header()], |
||||
|
data() { |
||||
|
return { |
||||
|
colConfigs: [ |
||||
|
{ prop: 'username', label: '姓名', align: 'center', width: 50 }, |
||||
|
{ prop: 'identificationNum', label: '身份证号码', align: 'center' }, |
||||
|
{ prop: 'education', label: '学历', align: 'center', width: 50 }, |
||||
|
{ prop: 'major', label: '专业', align: 'center' }, |
||||
|
{ prop: 'certificateName', label: '职称', align: 'center', width: 60 }, |
||||
|
{ prop: 'level', label: '级别', align: 'center', width: 50 }, |
||||
|
{ prop: 'project', label: '项目', align: 'center' }, |
||||
|
{ prop: 'code', label: '代号', align: 'center', width: 50 }, |
||||
|
{ prop: 'certificateNum', label: '证书编号', align: 'center' }, |
||||
|
{ prop: 'startExpirationDate', label: '有效日期', align: 'center', |
||||
|
formatter: (row, column, cellValue) => { |
||||
|
return (cellValue ? cellValue.substring(0, cellValue.length - 3) : '') + ' 至 ' + (row.endExpirationDate ? row.endExpirationDate.substring(0, row.endExpirationDate.length - 3) : '') |
||||
|
} |
||||
|
}, |
||||
|
{ prop: 'renewalDate', label: '发换证日期', align: 'center', width: 50 }, |
||||
|
{ prop: 'remarks', label: '备注', align: 'center', width: 60 }, |
||||
|
{ slot: 'operation' } |
||||
|
] |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
this.crud.optionShow = { |
||||
|
add: false, |
||||
|
edit: false, |
||||
|
del: false |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
[CRUD.HOOK.beforeRefresh]() { |
||||
|
const identificationNum = this.$store.getters.identificationNum |
||||
|
if (identificationNum) { |
||||
|
this.query.identificationNum = identificationNum |
||||
|
} else { |
||||
|
return false |
||||
|
} |
||||
|
}, |
||||
|
/** |
||||
|
* 更改行颜色 |
||||
|
* @param row |
||||
|
* @returns {string} |
||||
|
*/ |
||||
|
getTableRowClassName({ row }) { |
||||
|
const endExpirationDate = new Date(row.endExpirationDate) |
||||
|
const now = new Date() |
||||
|
if (endExpirationDate.getFullYear() < now.getFullYear() || (endExpirationDate.getFullYear() === now.getFullYear() && endExpirationDate.getMonth() <= now.getMonth())) { |
||||
|
return 'table-row-color-orange' |
||||
|
} |
||||
|
return '' |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped> |
||||
|
|
||||
|
</style> |
Loading…
Reference in new issue