Browse Source

提交各种修改(未完善)

master
xiaobai 3 years ago
parent
commit
3aaf68483a
  1. 1
      package.json
  2. 52
      src/api/certificate.js
  3. 22
      src/api/common.js
  4. 48
      src/api/dic_muti_level_directory.js
  5. 2
      src/api/message.js
  6. 33
      src/components/Notice/message.vue
  7. 2
      src/main.js
  8. 23
      src/router/index.js
  9. 3
      src/views/archive/archive_scan.vue
  10. 2
      src/views/bggl/banjie_list.vue
  11. 37
      src/views/bggl/components/original_db_list.vue
  12. 298
      src/views/borrow/borrow.vue
  13. 298
      src/views/borrow/borrowing-history.vue
  14. 217
      src/views/borrow/returned.vue
  15. 322
      src/views/certificate/index.vue
  16. 89
      src/views/certificate/show.vue
  17. 10
      src/views/device_management/index.vue
  18. 319
      src/views/flow/definition.vue
  19. 2
      src/views/flow/restart.vue
  20. 56
      src/views/monitor/log_error.vue
  21. 8
      src/views/monitor/log_info.vue
  22. 17
      src/views/statistics/filing.vue
  23. 21
      src/views/ysjl/1000/dj/nb/gynb.vue

1
package.json

@ -44,6 +44,7 @@
"vcolorpicker": "^0.1.8",
"vue": "^2.6.6",
"vue-count-to": "1.0.13",
"vue-json-viewer": "^2.2.19",
"vue-qr": "^2.3.0",
"vue-router": "3.0.2",
"vuedraggable": "2.23.2",

52
src/api/certificate.js

@ -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 }

22
src/api/common.js

@ -1,5 +1,7 @@
import api from '@/utils/api'
import apibjd from '@/utils/apibjd'
import preview from '@/utils/preview'
export function getOwnList(query) {
return api({
url: '/renwu/ownList',
@ -166,4 +168,24 @@ export function rebutFn(params) {
return require('qs').stringify(data, { indices: false })
}
})
}
export function getStaticsList(params) {
return api({
url: '/statistic/filing',
method: 'get',
params: params
})
}
export function exportFilingFn(params) {
return preview({
url: '/download/filing',
method: 'get',
params: params
})
}
export function getAssetTreeFn() {
return api({
url: '/asset/tree',
method: 'get'
})
}

48
src/api/dic_muti_level_directory.js

@ -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 }

2
src/api/message.js

@ -6,7 +6,7 @@ import api from '@/utils/api'
*/
export function findMessageById(messageId) {
return api({
url: '/message/getById',
url: '/message',
method: 'get',
params: { messageId }
})

33
src/components/Notice/message.vue

@ -203,6 +203,30 @@ export default {
this.getRecycleList()
}
},
getSystemMessageCountList() {
this.api({
url: '/message/getUnReadSystemCount',
method: 'get'
}).then(data => {
this.systemMessageCount = data
})
},
getRecycleMessageCountList() {
this.api({
url: '/message/getRecycleMessageCount',
method: 'get'
}).then(data => {
this.recycleMessageCount = data
})
},
getReadmessageCountList() {
this.api({
url: '/message/getReadmessageCount',
method: 'get'
}).then(data => {
this.readMessageCount = data
})
},
getReadList() {
this.api({
url: '/message/readList',
@ -211,14 +235,17 @@ export default {
}).then(data => {
this.readMessage = data.list
this.readMessageTotal = data.totalCount
this.systemMessageCount = data.systemMessageCount
this.readMessageCount = data.readMessageCount
this.recycleMessageCount = data.recycleMessageCount
// this.systemMessageCount = data.systemMessageCount
// this.readMessageCount = data.readMessageCount
// this.recycleMessageCount = data.recycleMessageCount
})
},
handleReadFilter() {
this.readListQuery.pageNum = 1
this.getReadList()
this.getSystemMessageCountList()
this.getRecycleMessageCountList()
this.getReadmessageCountList()
},
moveToRecycle() {
if (this.readMultipleSelection.length === 0) {

2
src/main.js

@ -29,6 +29,8 @@ import controller from './controller'
import permission from './directive/permission'
import adaptive from './directive/el-table'
import vueqr from 'vue-qr'
import JSONView from 'vue-json-viewer'
Vue.use(JSONView)
Vue.use(permission)
Vue.use(adaptive)

23
src/router/index.js

@ -117,6 +117,29 @@ export const constantRouterMap = [{
meta: { title: '个人中心', icon: 'profile', noCache: true }
}]
}
// {
// path: '/certificate',
// component: Layout,
// redirect: '/certificate/certificate-list',
// name: 'certificate',
// meta: { title: '证书管理', menus: 'certificate' },
// children: [{
// path: 'certificate-list',
// name: 'CertificateList',
// component: () =>
// import ('@/views/certificate/index'),
// meta: { title: '证书管理', icon: 'certificate' }
// },
// {
// path: 'certificateshow',
// name: 'CertificateShow',
// component: () =>
// import ('@/views/certificate/show'),
// meta: { tite: '证书信息', icon: 'certificate' },
// hidden: true
// }
// ]
// }
]
const createRouter = () => new Router({

3
src/views/archive/archive_scan.vue

@ -1,11 +1,10 @@
<template>
<el-dialog :visible.sync="dialog" append-to-body :title="isAppend ? '追加归档' : '扫码归档'" width="50%" @close="closeDialog">
<el-alert title="请将光标移动到“扫码框”内,并用扫码枪扫描纸质报告右上方条形码进行归档,请勿手动输入。" style="margin-top: -10px; margin-bottom: 5px;" type="warning" :closable="false" />
<el-form ref="archive" :model="archive" size="small" label-width="100px">
<el-row :gutter="16">
<el-col :span="8">
<el-form-item label="扫码框">
<el-input v-model="baogaobianhao" style="width: 300px;" @paste.native.capture.prevent="handlePaste" @keyup.enter.native="handleKeyUpEnter" />
<el-input v-model="baogaobianhao" style="width: 300px;" @keyup.enter.native="handleKeyUpEnter" />
</el-form-item>
</el-col>
</el-row>

2
src/views/bggl/banjie_list.vue

@ -625,7 +625,7 @@ export default {
//
getDepartmentNameById(departmentId) {
this.api({
url: '/department/getById',
url: '/department',
method: 'get',
params: { depId: departmentId }
}).then(data => {

37
src/views/bggl/components/original_db_list.vue

@ -287,12 +287,8 @@
</el-form-item>
<el-form-item label="驳回环节:" required>
<el-select v-model="bohuiForm.flowstatus" placeholder="请选择">
<el-option
v-for="(item,index) in AllFlowUser"
:key="index"
:label="item.label"
:value="item.key"
/>
<el-option v-if="str==2" label="起草环节" value="1" />
<el-option v-if="str==3" label="审核环节" value="1" />
</el-select>
</el-form-item>
<el-form-item label="上传驳回附件:">
@ -455,6 +451,7 @@ export default {
modelId: '',
currentRenwuId: 0,
jylbList: [],
str: '',
statusList: [
{
value: 1,
@ -508,7 +505,14 @@ export default {
fileList: [],
dialogFormVisibleSfInfo: false,
sfInfo: {},
AllFlowUser: []
AllFlowUser: [{
label: '起草环节',
key: 1
}, {
label: '审核环节',
key: 2
}
]
}
},
created() {
@ -522,21 +526,12 @@ export default {
this.common.$on('bggl-daiban-list', function() {
that.handleFilter()
})
this.getAllFlowUser()
},
methods: {
handlePreview(file) {
window.open(file.url)
},
getAllFlowUser() {
this.api({
url: '/flow/getAllFlowUserList',
methods: 'get'
}).then(res => {
this.AllFlowUser = res
console.log(this.AllFlowUser)
})
},
onRemove(file) {
const array = file.url.split('/')
if (array.length > 0) {
@ -702,10 +697,18 @@ export default {
this.ysjlId = []
const arr = []
for (let i = 0; i < this.multipleSelection.length; i++) {
if (this.multipleSelection.length > 1) {
if (this.multipleSelection[i].flowstatus !== this.multipleSelection[i + 1].flowstatus) {
this.$message('选择的驳回数据状态请保持一致')
}
}
if (this.multipleSelection[i].flowstatus !== 1) {
arr.push(this.multipleSelection[i].id)
this.str = this.multipleSelection[i].flowstatus
} else {
this.$message('存在未流转报告。')
return false
}
}
this.ysjlId = arr

298
src/views/borrow/borrow.vue

@ -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'
// crudpresenter
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>

298
src/views/borrow/borrowing-history.vue

@ -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'
// crudpresenter
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>

217
src/views/borrow/returned.vue

@ -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'
// crudpresenter
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>

322
src/views/certificate/index.vue

@ -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'
// crudpresenter
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>

89
src/views/certificate/show.vue

@ -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'
// crudpresenter
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>

10
src/views/device_management/index.vue

@ -248,7 +248,7 @@ import CrudInstrument from '@/api/instrument'
import TreeSelect from '@/components/TreeSelect'
// import { uploadInstrumentData } from '@/api/file'
import { getDicDataListByTypeName } from '@/api/dic_data'
import { getDepartmentTreeList, getDicAssetTreeList } from '@/api/common'
import { getDepartmentTreeList, getAssetTreeFn } from '@/api/common'
import Move from './components/Move'
import { downloadFile, parseTime } from '@/utils'
@ -331,9 +331,9 @@ export default {
{ slot: 'operation' }
],
permission: {
add: ['instrument:add'],
edit: ['instrument:update'],
del: ['instrument:delete']
add: ['device-list:add'],
edit: ['device-list:update'],
del: ['device-list:delete']
},
dicAssetTree: [],
parentId: [],
@ -407,7 +407,7 @@ export default {
methods: {
//
getDicAssetTreeList() {
getDicAssetTreeList().then(data => {
getAssetTreeFn().then(data => {
this.dicAssetTree = data
})
},

319
src/views/flow/definition.vue

@ -3,14 +3,43 @@
<div class="filter-container">
<el-form>
<el-form-item>
<el-select v-model="listQuery.departmentId" placeholder="请选择所属部门" style="width: 200px" clearable>
<el-option v-for="item in listDepartment" :key="item.id" :label="item.name" :value="item.id" />
<el-select
v-model="listQuery.departmentId"
placeholder="请选择所属部门"
style="width: 200px"
clearable
>
<el-option
v-for="item in listDepartment"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
<el-select v-model="listQuery.shebeizhongleidaima" placeholder="请选择设备种类" clearable>
<el-option v-for="item in sbzlList" :key="item.value" :label="item.label" :value="item.value" />
<el-select
v-model="listQuery.shebeizhongleidaima"
placeholder="请选择设备种类"
clearable
>
<el-option
v-for="item in sbzlList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-select v-model="listQuery.bglx" placeholder="请选择报告类型" style="width: 200px" clearable>
<el-option v-for="item in bglxList" :key="item.value" :label="item.name" :value="item.value" />
<el-select
v-model="listQuery.bglx"
placeholder="请选择报告类型"
style="width: 200px"
clearable
>
<el-option
v-for="item in bglxList"
:key="item.value"
:label="item.name"
:value="item.value"
/>
</el-select>
<el-button type="primary" icon="el-icon-search" @click="handleFilter">
查询
@ -24,19 +53,54 @@
</el-form-item>
</el-form>
</div>
<el-table :data="list" :span-method="listSpanMethod" border fit highlight-current-row @selection-change="handleSelectionChange">
<el-table
:data="list"
:span-method="listSpanMethod"
border
fit
highlight-current-row
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="50" />
<el-table-column type="index" align="center" label="序号" width="50" />
<el-table-column :formatter="formatterBglx" align="center" label="报告类型" prop="bglx" width="100" />
<el-table-column
:formatter="formatterBglx"
align="center"
label="报告类型"
prop="bglx"
width="100"
/>
<el-table-column align="center" label="归属部门" prop="departmentName" />
<el-table-column align="center" label="设备种类" prop="shebeizhonglei" width="120" />
<el-table-column :formatter="formatterListCategory" align="center" label="检验类别" prop="neibuleibie" width="120" />
<el-table-column align="center" label="所属环节" prop="name" width="120" />
<el-table-column
align="center"
label="设备种类"
prop="shebeizhonglei"
width="120"
/>
<el-table-column
:formatter="formatterListCategory"
align="center"
label="检验类别"
prop="neibuleibie"
width="120"
/>
<el-table-column
align="center"
label="所属环节"
prop="name"
width="120"
/>
<el-table-column align="center" label="环节处理人" prop="nickname" />
<el-table-column align="center" fixed="right" label="管理" width="150px">
<template slot-scope="scope">
<el-dropdown trigger="click">
<el-button type="text" round plain class="el-dropdown-link" style="color: #13ce66">
<el-button
type="text"
round
plain
class="el-dropdown-link"
style="color: #13ce66"
>
下拉操作<i class="el-icon-arrow-down el-icon--right" />
</el-button>
<el-dropdown-menu slot="dropdown">
@ -46,7 +110,10 @@
</el-button>
</el-dropdown-item>
<el-dropdown-item v-for="link in linkList" :key="link.value">
<el-button type="text" @click="showUpdateMember(scope.$index,link.value)">
<el-button
type="text"
@click="showUpdateMember(scope.$index, link.value, scope.row)"
>
{{ link.name }}
</el-button>
</el-dropdown-item>
@ -55,33 +122,94 @@
</template>
</el-table-column>
</el-table>
<pagination v-show="totalCount>0" :total="totalCount" :page-num.sync="listQuery.pageNum" :page-row.sync="listQuery.pageSize" @pagination="getList" />
<pagination
v-show="totalCount > 0"
:total="totalCount"
:page-num.sync="listQuery.pageNum"
:page-row.sync="listQuery.pageSize"
@pagination="getList"
/>
<!--打开录入框-->
<el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" @close="closeDialog">
<el-form ref="formDefinition" :model="formDefinition" class="small-space" label-position="left" label-width="80px" style="width: 500px; margin-left:50px;">
<el-dialog
:title="textMap[dialogStatus]"
:visible.sync="dialogFormVisible"
@close="closeDialog"
>
<el-form
ref="formDefinition"
:model="formDefinition"
class="small-space"
label-position="left"
label-width="80px"
style="width: 500px; margin-left: 50px"
>
<el-form-item label="归属部门">
<el-select v-model="formDefinition.departmentId" placeholder="归属部门" style="width: 200px">
<el-option v-for="item in listDepartment" :key="item.id" :label="item.name" :value="item.id" />
<el-select
v-model="formDefinition.departmentId"
placeholder="归属部门"
style="width: 200px"
>
<el-option
v-for="item in listDepartment"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="设备种类">
<el-select v-model="formDefinition.shebeizhongleidaima" placeholder="设备类别" clearable @change="getNblbListBySbzl">
<el-option v-for="item in sbzlList" :key="item.value" :label="item.label" :value="item.value" />
<el-select
v-model="formDefinition.shebeizhongleidaima"
placeholder="设备类别"
clearable
@change="getNblbListBySbzl"
>
<el-option
v-for="item in sbzlList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="检验类别" prop="jianyanleibie" required>
<el-select v-model="formDefinition.jianyanleibie" placeholder="检验类别" clearable @change="getNblbListByJylb">
<el-option v-for="item in jylbList" :key="item.code" :label="item.name" :value="item.code" />
<el-select
v-model="formDefinition.jianyanleibie"
placeholder="检验类别"
clearable
@change="getNblbListByJylb"
>
<el-option
v-for="item in jylbList"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item label="内部类别" required>
<el-select v-model="neibuleibie" multiple placeholder="内部类别" clearable>
<el-option v-for="item in nblbList" :key="item.code" :label="item.name" :value="item.code" />
<el-select
v-model="neibuleibie"
multiple
placeholder="内部类别"
clearable
>
<el-option
v-for="item in nblbList"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item label="报告类型" required>
<el-select v-model="formDefinition.bglx" clearable>
<el-option v-for="item in bglxList" :key="item.value" :label="item.name" :value="item.value" />
<el-option
v-for="item in bglxList"
:key="item.value"
:label="item.name"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form>
@ -89,7 +217,11 @@
<el-button @click="dialogFormVisible = false">
</el-button>
<el-button v-if="dialogStatus==='create'" type="success" @click="createDefinition">
<el-button
v-if="dialogStatus === 'create'"
type="success"
@click="createDefinition"
>
</el-button>
<el-button v-else type="primary" @click="updateDefinition">
@ -98,14 +230,52 @@
</div>
</el-dialog>
<!-- 添加人员 -->
<el-dialog :title="textMapMember[dialogStatus]" :visible.sync="dialogFormMemberVisible">
<el-form ref="formMember" :model="formMember" class="small-space" label-position="left" label-width="80px" style="width: 800px; margin-left:50px;">
<el-form-item label="环节人员" prop="userIds">
<el-select v-model="listMemberUser" placeholder="环节处理人" style="width: 215px" multiple filterable>
<el-option v-for="item in listUser" :key="item.id" :label="item.nickname" :value="item.id" />
</el-select>
</el-form-item>
</el-form>
<el-dialog
:title="textMapMember[dialogStatus]"
:visible.sync="dialogFormMemberVisible"
>
<!-- <el-row>
<el-col :span="3">
<el-button type="primary" icon="el-icon-plus">
新建
</el-button>
</el-col>
<el-col :span="3">
<el-button type="danger" icon="el-icon-delete">
删除
</el-button>
</el-col>
</el-row> -->
<el-table
:data="tableData"
style="width: 100%"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column type="index" label="序号" width="50" />
<el-table-column prop="userId" label="环节人员" width="180">
<template slot-scope="scope">
<el-select v-model="scope.row.nickname" placeholder="请选择" multiple>
<el-option
v-for="item in options"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</template>
</el-table-column>
<el-table-column prop="sort" label="排序">
<template slot-scope="scope">
<el-input-number
v-model="scope.row.sort"
:min="1"
:max="100"
@change="handleChange"
/>
</template>
</el-table-column>
</el-table>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormMemberVisible = false">
@ -120,6 +290,7 @@
<script>
import Pagination from '@/components/Pagination'
import { deleteDefinitionFn } from '@/api/common'
// import Template from './template.vue'
export default {
name: 'FlowDefinition',
components: { Pagination },
@ -153,14 +324,23 @@ export default {
jylbList: [],
nblbList: [],
bglxList: [],
linkList: [{ name: '审核', value: 2 }, { name: '审批', value: 3 }, { name: '重启质检', value: 5 }, { name: '重启技检', value: 6 },
{ name: '重启审批', value: 7 }, { name: '收费审核', value: 8 }, { name: '收费审批', value: 9 }],
linkList: [
{ name: '审核', value: 2 },
{ name: '审批', value: 3 },
{ name: '重启质检', value: 5 },
{ name: '重启技检', value: 6 },
{ name: '重启审批', value: 7 },
{ name: '收费审核', value: 8 },
{ name: '收费审批', value: 9 }
],
multipleSelection: [],
dialogFormVisible: false,
dialogFormMemberVisible: false,
dialogStatus: 'create',
neibuleibie: [],
spanArr: []
spanArr: [],
tableData: [],
options: []
}
},
created() {
@ -169,26 +349,39 @@ export default {
this.getSbList()
this.getBglxList()
this.getJylbList()
this.getUserList()
},
methods: {
//
getUserList() {
this.api({
url: '/user/all',
method: 'get'
}).then((data) => {
this.options = data
})
},
getList() {
//
this.api({
url: '/definition/list',
method: 'get',
params: this.listQuery
}).then(data => {
}).then((data) => {
this.list = data.list
this.totalCount = data.total
this.spanArr = []
this.getSpanArr(this.list)
})
},
handleChange(value) {
console.log(value)
},
getAllDepartment() {
this.api({
url: '/department/all',
method: 'get'
}).then(data => {
}).then((data) => {
this.listDepartment = data
})
},
@ -201,7 +394,7 @@ export default {
sblb: undefined,
level: '1'
}
}).then(data => {
}).then((data) => {
this.sbzlList = data
})
},
@ -212,7 +405,7 @@ export default {
params: {
typeCode: 'REPORT_CLASS'
}
}).then(data => {
}).then((data) => {
this.bglxList = data
})
},
@ -240,7 +433,7 @@ export default {
parentCode: parentCode,
species: species
}
}).then(data => {
}).then((data) => {
switch (type) {
case 'jylb':
this.jylbList = data
@ -259,11 +452,15 @@ export default {
showUpdate($index) {
this.formDefinition = this.list[$index]
this.neibuleibie = JSON.parse(this.formDefinition.neibuleibie)
this.getCategoryList('nblb', this.formDefinition.jianyanleibie, this.formDefinition.shebeizhongleidaima)
this.getCategoryList(
'nblb',
this.formDefinition.jianyanleibie,
this.formDefinition.shebeizhongleidaima
)
this.dialogStatus = 'update'
this.dialogFormVisible = true
},
showUpdateMember($index, $link) {
showUpdateMember($index, $link, row) {
this.listLink = []
this.bglx = this.list[$index].bglx
this.formMember.definitionId = this.list[$index].id
@ -286,6 +483,16 @@ export default {
}
this.listMemberUser = userId
this.dialogStatus = 'update'
console.log(row)
const arr = []
arr.push(row)
this.tableData = arr
this.tableData.map((item) => {
item.nickname = item.nickname.split(',')
item.userId = item.userId.split(',')
})
console.log(this.tableData[0].userId, arr)
this.dialogFormMemberVisible = true
},
handleFilter() {
@ -295,7 +502,7 @@ export default {
},
getIndex($index) {
//
return ((this.listQuery.pageNum - 1) * this.listQuery.pageRow + $index + 1)
return (this.listQuery.pageNum - 1) * this.listQuery.pageRow + $index + 1
},
onRowClick(row) {
this.$refs.list.toggleRowSelection(row)
@ -305,7 +512,7 @@ export default {
},
createDefinition() {
//
this.$refs['formDefinition'].validate(valid => {
this.$refs['formDefinition'].validate((valid) => {
if (valid) {
this.formDefinition.neibuleibie = JSON.stringify(this.neibuleibie)
this.api({
@ -323,7 +530,7 @@ export default {
},
updateDefinition() {
//
this.$refs['formDefinition'].validate(valid => {
this.$refs['formDefinition'].validate((valid) => {
if (valid) {
const _vue = this
this.formDefinition.neibuleibie = JSON.stringify(this.neibuleibie)
@ -348,7 +555,7 @@ export default {
})
},
updateLink() {
this.$refs['formMember'].validate(valid => {
this.$refs['formMember'].validate((valid) => {
if (valid) {
this.formMember.userIds = this.listMemberUser
const _vue = this
@ -380,7 +587,7 @@ export default {
type: 'warning'
}).then(() => {
const pks = []
this.multipleSelection.forEach(definition => {
this.multipleSelection.forEach((definition) => {
pks.push(definition.id)
})
console.log(pks)
@ -414,7 +621,7 @@ export default {
this.neibuleibie = []
},
formatterBglx(row) {
const bglx = this.bglxList.filter(bglx => bglx.value === row.bglx)
const bglx = this.bglxList.filter((bglx) => bglx.value === row.bglx)
if (bglx && bglx.length) {
return bglx[0].name
} else {
@ -435,7 +642,10 @@ export default {
return categoryName.substring(0, categoryName.length - 1)
},
listSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0 || (columnIndex >= 2 && columnIndex !== 6 && columnIndex !== 7)) {
if (
columnIndex === 0 ||
(columnIndex >= 2 && columnIndex !== 6 && columnIndex !== 7)
) {
const _row = this.spanArr[rowIndex]
const _col = _row > 0 ? 1 : 0
return {
@ -451,7 +661,12 @@ export default {
this.pos = 0
} else {
//
if (data[i].departmentId === data[i - 1].departmentId && data[i].bglx === data[i - 1].bglx && data[i].shebeizhongleidaima === data[i - 1].shebeizhongleidaima && data[i].neibuleibie === data[i - 1].neibuleibie) {
if (
data[i].departmentId === data[i - 1].departmentId &&
data[i].bglx === data[i - 1].bglx &&
data[i].shebeizhongleidaima === data[i - 1].shebeizhongleidaima &&
data[i].neibuleibie === data[i - 1].neibuleibie
) {
this.spanArr[this.pos] += 1
this.spanArr.push(0)
} else {

2
src/views/flow/restart.vue

@ -914,7 +914,7 @@ export default {
//
getDepartmentNameById(departmentId) {
this.api({
url: '/department/getById',
url: '/department',
method: 'get',
params: { depId: departmentId }
}).then(data => {

56
src/views/monitor/log_error.vue

@ -22,17 +22,55 @@
<el-table-column align="center" label="创建日期" prop="createTime" />
<el-table-column prop="createTime" label="异常详情" width="100px">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="info(scope.$index)">
<el-button size="mini" type="text" @click="info(scope.row,scope.$index)">
查看详情
</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="totalCount>0" :total="totalCount" :page-num.sync="listQuery.pageNum" :page-row.sync="listQuery.pageRow" @pagination="getList" />
<el-dialog :visible.sync="dialog" title="异常详情" append-to-body top="0" width="85%">
<span>
{{ errorInfo }}
</span>
<el-dialog title="异常详情" :visible.sync="dialog">
<el-form :model="row">
<el-form-item label="接口名称" :label-width="formLabelWidth">
<span>{{ row.api }}</span>
</el-form-item>
<el-form-item label="接口地址" :label-width="formLabelWidth">
<span>{{ row.uri }}</span>
</el-form-item>
<el-form-item label="接口方法类型" :label-width="formLabelWidth">
<span>{{ row.requestMethod }}</span>
</el-form-item>
<el-form-item label="接口参数" :label-width="formLabelWidth">
<json-viewer
:value="JSON.parse(row.params)"
:expand-depth="5"
copyable
boxed
sort
/>
</el-form-item>
<el-form-item label="方法名称" :label-width="formLabelWidth">
<span>{{ row.method }}</span>
</el-form-item>
<el-form-item label="接口所属模块" :label-width="formLabelWidth">
<span>{{ row.module }}</span>
</el-form-item>
<el-form-item label="接口IP地址" :label-width="formLabelWidth">
<span>{{ row.requestIp }}</span>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">
</el-button>
<el-button
type="primary"
@click="dialogFormVisible = false"
>
</el-button>
</div>
</el-dialog>
</div>
</template>
@ -53,7 +91,9 @@ export default {
logType: false
},
dialog: false,
errorInfo: ''
errorInfo: '',
formLabelWidth: '120px',
row: {}
}
},
created() {
@ -74,8 +114,8 @@ export default {
this.listQuery.pageNum = 1
this.getList()
},
info($index) {
this.errorInfo = this.list[$index].exceptionDetail
info(row, $index) {
this.row = row
this.dialog = true
},
formatterIp(row, column, cellValue) {

8
src/views/monitor/log_info.vue

@ -119,7 +119,13 @@
<span>{{ row.requestMethod }}</span>
</el-form-item>
<el-form-item label="接口参数" :label-width="formLabelWidth">
<span>{{ row.requestParams }}</span>
<json-viewer
:value="JSON.parse(row.params)"
:expand-depth="5"
copyable
boxed
sort
/>
</el-form-item>
<el-form-item label="方法名称" :label-width="formLabelWidth">
<span>{{ row.method }}</span>

17
src/views/statistics/filing.vue

@ -50,6 +50,7 @@
<script>
import Sticky from '@/components/Sticky'
import { getStaticsList, exportFilingFn } from '@/api/common'
export default {
name: 'FilingReport',
components: { Sticky },
@ -72,11 +73,7 @@ export default {
* 归档报告
*/
handleFilter() {
this.statistics({
url: 'filing/get',
method: 'get',
data: this.listQuery
}).then((data) => {
getStaticsList(this.listQuery).then((data) => {
this.exportData = data.filingReports
this.totalCount = data.totalCount
})
@ -92,13 +89,9 @@ export default {
*/
exportFilingReport() {
const listQuery = this.common.deepCopy(this.listQuery)
listQuery.pageNum = 0
listQuery.pageRow = 0
this.statistics({
url: 'filing/getSenior',
method: 'post',
data: listQuery
}).then((data) => {
delete listQuery.pageNum
delete listQuery.pageRow
exportFilingFn(listQuery).then((data) => {
const exportData = data.filingReports
import('@/vendor/Export2Excel').then(excel => {
const header = ['报告编号', '检验类别', '设备种类', '使用单位', '注册代码', '使用登记证编号', '检验人员', '检验日期', '下次检验日期']

21
src/views/ysjl/1000/dj/nb/gynb.vue

@ -286,6 +286,16 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item label="选择科室" prop="departmentId">
<el-cascader
v-model="ysjl.departmentId"
:options="departmemtArr"
:props="{ value: 'id', label: 'name', checkStrictly: true }"
@change="handleChange"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" style="height: 110px;">
<el-col :span="18">
@ -331,7 +341,7 @@ import Sticky from '@/components/Sticky'
import SignName from '@/views/common/SignName'
import Utils from '@/utils/contact'
import merge from 'webpack-merge'
import { getDepartmentTreeList } from '@/api/common'
export default {
name: 'GlGynbYsjl',
components: { SignName, Sticky },
@ -363,7 +373,8 @@ export default {
return row.jianyanxiang
}
}
]
],
departmemtArr: []
}
},
computed: {
@ -401,11 +412,17 @@ export default {
this.getJyxm(1)
}
this.getUserList()
this.getDepartmentArr()
},
beforeDestroy() {
window.removeEventListener('beforeunload', this.beforeunloadHandler, false)
},
methods: {
getDepartmentArr() {
getDepartmentTreeList().then(res => {
this.departmemtArr = res
})
},
//
singNameValue(data) {
this.jianyanrenyuan = data.name

Loading…
Cancel
Save