Merge remote-tracking branch 'origin/liujun-2024-02-04-相关方新流程上线后新提需求' into 2024年2月22日v1.0.55
commit
adafcfd115
|
@ -0,0 +1,16 @@
|
||||||
|
export default async function useDownloadFile(url) {
|
||||||
|
if (!url) throw new Error('没有下载地址')
|
||||||
|
fetch(config.fileUrl + url)
|
||||||
|
.then((res) => res.blob())
|
||||||
|
.then((blob) => {
|
||||||
|
const a = document.createElement('a')
|
||||||
|
document.body.appendChild(a)
|
||||||
|
a.style.display = 'none'
|
||||||
|
const url = window.URL.createObjectURL(blob)
|
||||||
|
a.href = url
|
||||||
|
a.download = url.substring(url.lastIndexOf('/') + 1)
|
||||||
|
a.click()
|
||||||
|
document.body.removeChild(a)
|
||||||
|
window.URL.revokeObjectURL(url)
|
||||||
|
})
|
||||||
|
}
|
|
@ -317,6 +317,7 @@ export default {
|
||||||
axios.get(config.httpurl + '/classMessage/excel?CLASS_MESSAGE_ID=' + id, {
|
axios.get(config.httpurl + '/classMessage/excel?CLASS_MESSAGE_ID=' + id, {
|
||||||
responseType: 'blob'
|
responseType: 'blob'
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
|
setTimeout(() => {
|
||||||
const blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
|
const blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
|
||||||
const downloadElement = document.createElement('a')
|
const downloadElement = document.createElement('a')
|
||||||
const href = window.URL.createObjectURL(blob)
|
const href = window.URL.createObjectURL(blob)
|
||||||
|
@ -330,6 +331,7 @@ export default {
|
||||||
this.$emit('getResult', '')
|
this.$emit('getResult', '')
|
||||||
loading.close()
|
loading.close()
|
||||||
this.close()
|
this.close()
|
||||||
|
}, 2000)
|
||||||
}).catch((e) => {
|
}).catch((e) => {
|
||||||
console.log(e)
|
console.log(e)
|
||||||
loading.close()
|
loading.close()
|
||||||
|
@ -362,6 +364,7 @@ export default {
|
||||||
})
|
})
|
||||||
this.visible = false
|
this.visible = false
|
||||||
this.loading = false
|
this.loading = false
|
||||||
|
this.close()
|
||||||
this.$emit('getResult', '')
|
this.$emit('getResult', '')
|
||||||
}).catch((e) => {
|
}).catch((e) => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -22,9 +22,9 @@
|
||||||
:options="treeData"
|
:options="treeData"
|
||||||
:props="defaultProps"
|
:props="defaultProps"
|
||||||
v-model="form.INSPECTED_DEPARTMENT_ID"
|
v-model="form.INSPECTED_DEPARTMENT_ID"
|
||||||
@change="changeCurrentDeptId(form.INSPECTED_DEPARTMENT_ID)"
|
|
||||||
placeholder="请选择被检查单位"
|
placeholder="请选择被检查单位"
|
||||||
style="width: 300px" />
|
style="width: 300px"
|
||||||
|
@change="changeCurrentDeptId(form.INSPECTED_DEPARTMENT_ID)" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
|
@ -60,7 +60,7 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="检查开始时间" prop="INSPECTION_TIME_START">
|
<el-form-item label="检查开始时间" prop="INSPECTION_TIME_START">
|
||||||
<el-date-picker v-model="form.INSPECTION_TIME_START" format="yyyy-MM-dd HH:mm" v-on:blur="checkTime(form.INSPECTION_TIME_START)" value-format="yyyy-MM-dd HH:mm" type="datetime" placeholder="选择检查开始时间"/>
|
<el-date-picker v-model="form.INSPECTION_TIME_START" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" type="datetime" placeholder="选择检查开始时间" @blur="checkTime(form.INSPECTION_TIME_START)"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
|
@ -70,7 +70,7 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-divider v-if="CURRENT_INSPECTED_DEPARTMENT_ID !== null && CURRENT_INSPECTED_DEPARTMENT_ID !== '' " content-position="left">检查人员 <el-button type="primary" size="mini" @click="addInspector">添加</el-button></el-divider>
|
<el-divider v-if="CURRENT_INSPECTED_DEPARTMENT_ID !== null && CURRENT_INSPECTED_DEPARTMENT_ID !== '' " content-position="left">检查人员 <el-button type="primary" size="mini" @click="addInspector">添加</el-button></el-divider>
|
||||||
<el-form-item v-if="CURRENT_INSPECTED_DEPARTMENT_ID !== null && CURRENT_INSPECTED_DEPARTMENT_ID !== '' " v-for="(item,index) in form.inspectorList" :key="index + (Math.random() + '').replace('.', '')" :label="(index+1)+'.'">
|
<el-form-item v-for="(item,index) in form.inspectorList" v-if="CURRENT_INSPECTED_DEPARTMENT_ID !== null && CURRENT_INSPECTED_DEPARTMENT_ID !== '' " :key="index + (Math.random() + '').replace('.', '')" :label="(index+1)+'.'">
|
||||||
<div class="uo-flex">
|
<div class="uo-flex">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
|
@ -475,7 +475,7 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
checkTime(data) {
|
checkTime(data) {
|
||||||
if (Date.parse(data) > new Date().getTime()) {
|
if (Date.parse(data) > new Date().getTime()) {
|
||||||
this.$message.error("检查开始时间需小于当前时间")
|
this.$message.error('检查开始时间需小于当前时间')
|
||||||
this.$refs['form'].resetFields()
|
this.$refs['form'].resetFields()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -50,22 +50,22 @@
|
||||||
<el-dialog :visible.sync="dialogFormEdit" :title="dialogType==='edit'?'修改':'新增'" width="600px">
|
<el-dialog :visible.sync="dialogFormEdit" :title="dialogType==='edit'?'修改':'新增'" width="600px">
|
||||||
<el-form ref="form" :rules="rules" :model="form" label-width="110px" style="width: 500px;">
|
<el-form ref="form" :rules="rules" :model="form" label-width="110px" style="width: 500px;">
|
||||||
<el-form-item label="菜单名称" prop="MENU_NAME">
|
<el-form-item label="菜单名称" prop="MENU_NAME">
|
||||||
<el-input ref="MENU_NAME" id="MENU_NAME" v-model="form.MENU_NAME" maxlength="255" placeholder="这里输入菜单名称..." title="菜单名称"/>
|
<el-input id="MENU_NAME" ref="MENU_NAME" v-model="form.MENU_NAME" maxlength="255" placeholder="这里输入菜单名称..." title="菜单名称"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="菜单地址" prop="MENU_URL">
|
<el-form-item label="菜单地址" prop="MENU_URL">
|
||||||
<el-input ref="MENU_URL" id="MENU_URL" v-model="form.MENU_URL" maxlength="255" placeholder="这里输入菜单地址..." title="菜单地址"/>
|
<el-input id="MENU_URL" ref="MENU_URL" v-model="form.MENU_URL" maxlength="255" placeholder="这里输入菜单地址..." title="菜单地址"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="父节点id" prop="PARENT_ID">
|
<el-form-item label="父节点id" prop="PARENT_ID">
|
||||||
<el-input ref="PARENT_ID" id="PARENT_ID" v-model="form.PARENT_ID" maxlength="255" placeholder="这里输入父节点id..." title="父节点id"/>
|
<el-input id="PARENT_ID" ref="PARENT_ID" v-model="form.PARENT_ID" maxlength="255" placeholder="这里输入父节点id..." title="父节点id"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="排序" prop="MENU_ORDER">
|
<el-form-item label="排序" prop="MENU_ORDER">
|
||||||
<el-input ref="MENU_ORDER" id="MENU_ORDER" v-model.number="form.MENU_ORDER" maxlength="11" placeholder="这里输入排序..." title="排序"/>
|
<el-input id="MENU_ORDER" ref="MENU_ORDER" v-model.number="form.MENU_ORDER" maxlength="11" placeholder="这里输入排序..." title="排序"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="企业id" prop="CORPINFO_ID">
|
<el-form-item label="企业id" prop="CORPINFO_ID">
|
||||||
<el-input ref="CORPINFO_ID" id="CORPINFO_ID" v-model="form.CORPINFO_ID" maxlength="255" placeholder="这里输入企业id..." title="企业id"/>
|
<el-input id="CORPINFO_ID" ref="CORPINFO_ID" v-model="form.CORPINFO_ID" maxlength="255" placeholder="这里输入企业id..." title="企业id"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="删除状态" prop="IS_DELETE">
|
<el-form-item label="删除状态" prop="IS_DELETE">
|
||||||
<el-input ref="IS_DELETE" id="IS_DELETE" v-model.number="form.IS_DELETE" maxlength="2" placeholder="这里输入删除状态..." title="删除状态"/>
|
<el-input id="IS_DELETE" ref="IS_DELETE" v-model.number="form.IS_DELETE" maxlength="2" placeholder="这里输入删除状态..." title="删除状态"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
|
@ -102,7 +102,7 @@
|
||||||
PARENT_ID: '', // 父节点id
|
PARENT_ID: '', // 父节点id
|
||||||
MENU_ORDER: '', // 排序
|
MENU_ORDER: '', // 排序
|
||||||
CORPINFO_ID: '', // 企业id
|
CORPINFO_ID: '', // 企业id
|
||||||
IS_DELETE: '',//删除状态
|
IS_DELETE: ''// 删除状态
|
||||||
},
|
},
|
||||||
multipleSelectionAll: [], // 所有选中的数据包含跨页数据
|
multipleSelectionAll: [], // 所有选中的数据包含跨页数据
|
||||||
multipleSelection: [], // 当前页选中的数据
|
multipleSelection: [], // 当前页选中的数据
|
||||||
|
@ -120,7 +120,7 @@
|
||||||
IS_DELETE: [
|
IS_DELETE: [
|
||||||
{ required: true, message: '删除状态不能为空', trigger: 'change' },
|
{ required: true, message: '删除状态不能为空', trigger: 'change' },
|
||||||
{ type: 'number', message: '删除状态必须为数字' }
|
{ type: 'number', message: '删除状态必须为数字' }
|
||||||
],
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -268,16 +268,16 @@
|
||||||
},
|
},
|
||||||
// 判断按钮权限,用于是否显示按钮
|
// 判断按钮权限,用于是否显示按钮
|
||||||
hasButton: function() {
|
hasButton: function() {
|
||||||
var keys = 'appmenus:add,appmenus:del,appmenus:edit,toExcel';
|
var keys = 'appmenus:add,appmenus:del,appmenus:edit,toExcel'
|
||||||
requestFN(
|
requestFN(
|
||||||
'/head/hasButton',
|
'/head/hasButton',
|
||||||
{
|
{
|
||||||
keys: keys
|
keys: keys
|
||||||
}
|
}
|
||||||
).then((data) => {
|
).then((data) => {
|
||||||
this.add = data.appmenusfhadminadd; //新增权限
|
this.add = data.appmenusfhadminadd // 新增权限
|
||||||
this.del = data.appmenusfhadmindel; //删除权限
|
this.del = data.appmenusfhadmindel // 删除权限
|
||||||
this.edit = data.appmenusfhadminedit; //修改权限
|
this.edit = data.appmenusfhadminedit // 修改权限
|
||||||
}).catch((e) => {
|
}).catch((e) => {
|
||||||
this.listLoading = false
|
this.listLoading = false
|
||||||
})
|
})
|
||||||
|
@ -292,7 +292,7 @@
|
||||||
PARENT_ID: '', // 父节点id
|
PARENT_ID: '', // 父节点id
|
||||||
MENU_ORDER: '', // 排序
|
MENU_ORDER: '', // 排序
|
||||||
CORPINFO_ID: '', // 企业id
|
CORPINFO_ID: '', // 企业id
|
||||||
IS_DELETE: '',//删除状态
|
IS_DELETE: ''// 删除状态
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -625,7 +625,6 @@ export default {
|
||||||
this.pd.ROLE_ID = arrString
|
this.pd.ROLE_ID = arrString
|
||||||
this.dialogFormEdit = true
|
this.dialogFormEdit = true
|
||||||
await this.$nextTick()
|
await this.$nextTick()
|
||||||
|
|
||||||
},
|
},
|
||||||
handleEditStatus(row, type) {
|
handleEditStatus(row, type) {
|
||||||
const typeName = type == '1' ? '禁用' : '启用'
|
const typeName = type == '1' ? '禁用' : '启用'
|
||||||
|
|
|
@ -0,0 +1,141 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
v-if="visible"
|
||||||
|
:visible.sync="visible"
|
||||||
|
:before-close="handleClose"
|
||||||
|
:append-to-body="appendToBody"
|
||||||
|
:title="title"
|
||||||
|
width="60%">
|
||||||
|
<el-input v-model="filterText" placeholder="输入关键字进行过滤"/>
|
||||||
|
<el-scrollbar class="information" style="height: 500px; margin-top: 10px">
|
||||||
|
<el-tree
|
||||||
|
ref="tree"
|
||||||
|
:data="tree"
|
||||||
|
:props="defaultProp"
|
||||||
|
:filter-node-method="filterNode"
|
||||||
|
check-strictly
|
||||||
|
default-expand-all
|
||||||
|
expand-on-click-node
|
||||||
|
check-on-click-node
|
||||||
|
show-checkbox
|
||||||
|
@node-click="handleNodeClick"/>
|
||||||
|
</el-scrollbar>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="closeWindow">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="save">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||||
|
import { requestFN } from '@/utils/request'
|
||||||
|
import waves from '@/directive/waves' // waves directive
|
||||||
|
export default {
|
||||||
|
components: { Pagination },
|
||||||
|
directives: { waves },
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
appendToBody: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
limit: {
|
||||||
|
type: Number,
|
||||||
|
default: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
visible: false,
|
||||||
|
defaultProp: {
|
||||||
|
value: 'id',
|
||||||
|
children: 'nodes',
|
||||||
|
label: 'name'
|
||||||
|
},
|
||||||
|
tree: [],
|
||||||
|
filterText: '',
|
||||||
|
treeClickCount: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
filterText(val) {
|
||||||
|
this.$refs.tree.filter(val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init(e) {
|
||||||
|
this.visible = true
|
||||||
|
this.getTree()
|
||||||
|
},
|
||||||
|
handleClose() {
|
||||||
|
this.visible = false
|
||||||
|
},
|
||||||
|
getTree() {
|
||||||
|
requestFN(
|
||||||
|
'/department/listTree'
|
||||||
|
).then((data) => {
|
||||||
|
this.tree = JSON.parse(data.zTreeNodes)
|
||||||
|
if (this.tree[0]) {
|
||||||
|
this.tree[0].disabled = false
|
||||||
|
}
|
||||||
|
}).catch((e) => {
|
||||||
|
this.$message.error(e)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
filterNode(value, data) {
|
||||||
|
if (!value) return true
|
||||||
|
return data.name.indexOf(value) !== -1
|
||||||
|
},
|
||||||
|
closeWindow() {
|
||||||
|
this.visible = false
|
||||||
|
},
|
||||||
|
clear() {
|
||||||
|
this.tree = []
|
||||||
|
},
|
||||||
|
save() {
|
||||||
|
const list = this.$refs.tree.getCheckedNodes()
|
||||||
|
if (list.length > this.limit) {
|
||||||
|
this.$message.error('应该选择' + this.limit + '个,但是现在选择了' + list.length + '个')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$emit('getResult', { info: this.$refs.tree.getCheckedNodes() })
|
||||||
|
this.visible = false
|
||||||
|
},
|
||||||
|
// 节点点击事件
|
||||||
|
handleNodeClick(data, node) {
|
||||||
|
// 记录点击次数
|
||||||
|
this.treeClickCount++
|
||||||
|
// 单次点击次数超过2次不作处理,直接返回,也可以拓展成多击事件
|
||||||
|
if (this.treeClickCount >= 2) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 计时器,计算300毫秒为单位,可自行修改
|
||||||
|
this.timer = window.setTimeout(() => {
|
||||||
|
if (this.treeClickCount === 1) {
|
||||||
|
// 把次数归零
|
||||||
|
this.treeClickCount = 0
|
||||||
|
// 单击事件处理
|
||||||
|
this.console('单击事件,可在此处理对应逻辑')
|
||||||
|
} else if (this.treeClickCount > 1) {
|
||||||
|
// 把次数归零
|
||||||
|
this.treeClickCount = 0
|
||||||
|
// 双击事件
|
||||||
|
this.$emit('getResult', { info: [data] })
|
||||||
|
this.visible = false
|
||||||
|
}
|
||||||
|
}, 300)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.information >>> .el-scrollbar__wrap {
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,75 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
v-if="visible"
|
||||||
|
:visible.sync="visible"
|
||||||
|
:before-close="handleClose"
|
||||||
|
:title="title"
|
||||||
|
:append-to-body="appendToBody"
|
||||||
|
width="60%">
|
||||||
|
<UploadFile :file-list.sync = "files"/>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="closeWindow">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="confirm">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||||
|
import waves from '@/directive/waves' // waves directive
|
||||||
|
import UploadFile from '../uploadFile'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: { Pagination, UploadFile },
|
||||||
|
directives: { waves },
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
appendToBody: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
limit: {
|
||||||
|
type: Number,
|
||||||
|
default: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
visible: false,
|
||||||
|
files: [],
|
||||||
|
heirloom: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init(e) {
|
||||||
|
this.visible = true
|
||||||
|
this.heirloom = e
|
||||||
|
},
|
||||||
|
handleClose() {
|
||||||
|
this.visible = false
|
||||||
|
this.files = []
|
||||||
|
},
|
||||||
|
closeWindow() {
|
||||||
|
this.handleClose()
|
||||||
|
},
|
||||||
|
confirm() {
|
||||||
|
if (this.files.length <= 0) {
|
||||||
|
this.$message.error('未选择文件')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$emit('getChoose', { heirloom: this.heirloom, info: this.files, name: 'uploadExcel' })
|
||||||
|
this.visible = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.information >>> .el-scrollbar__wrap {
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,81 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-upload
|
||||||
|
ref="uploadFile"
|
||||||
|
:auto-upload="false"
|
||||||
|
:file-list="fileList"
|
||||||
|
:on-change="onChange"
|
||||||
|
:on-remove="onRemove"
|
||||||
|
:limit="limit"
|
||||||
|
:on-exceed="handleExceed"
|
||||||
|
:accept="accept"
|
||||||
|
action="#">
|
||||||
|
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
|
||||||
|
<div slot="tip" class="el-upload__tip">{{ info }}</div>
|
||||||
|
</el-upload>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'UploadImg',
|
||||||
|
props: {
|
||||||
|
fileList: {
|
||||||
|
type: Array,
|
||||||
|
default() {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
limit: {
|
||||||
|
type: Number,
|
||||||
|
default: 1
|
||||||
|
},
|
||||||
|
fileSize: {
|
||||||
|
type: Number,
|
||||||
|
default: 500
|
||||||
|
},
|
||||||
|
accept: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
info: {
|
||||||
|
type: String,
|
||||||
|
default: '文件大小不超过500MB'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialogImageUrl: '',
|
||||||
|
dialogVisible: false,
|
||||||
|
disabled: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleRemove(file) {
|
||||||
|
this.fileList.splice(this.fileList.findIndex(item => item.uid === file.uid), 1)
|
||||||
|
},
|
||||||
|
handlePictureCardPreview(file) {
|
||||||
|
this.dialogImageUrl = file.url
|
||||||
|
this.dialogVisible = true
|
||||||
|
},
|
||||||
|
onChange(file, fileList) {
|
||||||
|
this.file = file
|
||||||
|
this.file_name = file.name
|
||||||
|
const isLt2M = file.size / 1024 / 1024 < this.fileSize
|
||||||
|
if (!isLt2M) {
|
||||||
|
this.$message.error('上传视频大小不能超过 ' + this.fileSize + 'MB!')
|
||||||
|
this.$refs.uploadFile.clearFiles()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
this.$emit('update:fileList', fileList)
|
||||||
|
},
|
||||||
|
onRemove(file, fileList) {
|
||||||
|
this.$emit('update:fileList', fileList)
|
||||||
|
},
|
||||||
|
handleExceed(files, fileList) {
|
||||||
|
this.$message.warning(`当前限制选择 ${this.limit} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
|
@ -0,0 +1,93 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-upload
|
||||||
|
ref="uploadImg"
|
||||||
|
:auto-upload="false"
|
||||||
|
:file-list="fileList"
|
||||||
|
:on-change="onChange"
|
||||||
|
:limit="limit"
|
||||||
|
:on-exceed="handleExceed"
|
||||||
|
:accept="accept"
|
||||||
|
:class="{hide:hideFlag}"
|
||||||
|
action="#"
|
||||||
|
list-type="picture-card">
|
||||||
|
<i slot="default" class="el-icon-plus"/>
|
||||||
|
<div slot="file" slot-scope="{file}">
|
||||||
|
<el-image :src="file.url" alt=""/>
|
||||||
|
<span class="el-upload-list__item-actions">
|
||||||
|
<span @click="handlePictureCardPreview(file)">
|
||||||
|
<i class="el-icon-zoom-in"/>
|
||||||
|
</span>
|
||||||
|
<span class="el-upload-list__item-delete" @click="handleRemove(file)">
|
||||||
|
<i class="el-icon-delete"/>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</el-upload>
|
||||||
|
<el-dialog :visible.sync="dialogVisible" :append-to-body="appendToBody">
|
||||||
|
<img :src="dialogImageUrl" width="100%" alt="">
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
// 在使用时要加上.sync
|
||||||
|
// 注意limit的值
|
||||||
|
export default {
|
||||||
|
name: 'UploadImg',
|
||||||
|
props: {
|
||||||
|
fileList: {
|
||||||
|
type: Array, default() {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
limit: { type: Number, default: 1 },
|
||||||
|
appendToBody: { type: Boolean, default: false },
|
||||||
|
accept: {
|
||||||
|
type: String, default() {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
hideUpload: { type: Boolean, default: false }
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialogImageUrl: '',
|
||||||
|
dialogVisible: false,
|
||||||
|
disabled: false,
|
||||||
|
hideFlag: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
if (this.fileList.length >= this.limit && this.hideUpload) {
|
||||||
|
this.hideFlag = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleRemove(file) {
|
||||||
|
this.fileList.splice(this.fileList.findIndex(item => item.uid === file.uid), 1)
|
||||||
|
if (this.hideUpload) {
|
||||||
|
if (this.fileList.length < this.limit) {
|
||||||
|
this.hideFlag = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handlePictureCardPreview(file) {
|
||||||
|
this.dialogImageUrl = file.url
|
||||||
|
this.dialogVisible = true
|
||||||
|
},
|
||||||
|
onChange(file, fileList) {
|
||||||
|
this.$emit('update:fileList', fileList)
|
||||||
|
if (this.hideUpload) {
|
||||||
|
if (fileList.length === this.limit) {
|
||||||
|
this.hideFlag = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleExceed(files, fileList) {
|
||||||
|
this.$message.warning(`当前限制选择 ${this.limit} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
|
@ -25,6 +25,19 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="APPOINT_ANNEX" label="委托书:">
|
||||||
|
<upload-file
|
||||||
|
:file-list.sync="form.APPOINT_ANNEX"
|
||||||
|
:multiple="false"
|
||||||
|
:accept="'.pdf,.jpg,.png,doc,docx'"
|
||||||
|
:limit="1"
|
||||||
|
:size="1024"
|
||||||
|
:upload-type="1"/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
|
@ -39,9 +52,11 @@
|
||||||
import vueQr from 'vue-qr'
|
import vueQr from 'vue-qr'
|
||||||
import Treeselect from '@riophae/vue-treeselect'
|
import Treeselect from '@riophae/vue-treeselect'
|
||||||
import { requestFN } from '@/utils/request'
|
import { requestFN } from '@/utils/request'
|
||||||
|
import uploadFile from '../../../util/uploadFile/index.vue'
|
||||||
|
import { upload } from '@/utils/upload'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { Treeselect, vueQr },
|
components: { uploadFile, Treeselect, vueQr },
|
||||||
props: {
|
props: {
|
||||||
appendToBody: {
|
appendToBody: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
|
@ -80,6 +95,9 @@ export default {
|
||||||
],
|
],
|
||||||
OPINION: [
|
OPINION: [
|
||||||
{ required: true, message: '请填写打回原因', trigger: 'change' }
|
{ required: true, message: '请填写打回原因', trigger: 'change' }
|
||||||
|
],
|
||||||
|
APPOINT_ANNEX: [
|
||||||
|
{ required: true, message: '请上传文件', trigger: 'change' }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
heirloom: {},
|
heirloom: {},
|
||||||
|
@ -111,7 +129,12 @@ export default {
|
||||||
if (!valid) {
|
if (!valid) {
|
||||||
this.$message.error('请填写完整信息')
|
this.$message.error('请填写完整信息')
|
||||||
} else {
|
} else {
|
||||||
requestFN('/xgf/user/approve', this.form)
|
const formData = new FormData()
|
||||||
|
Object.keys(this.form).map(key => {
|
||||||
|
formData.append(key, this.form[key])
|
||||||
|
})
|
||||||
|
formData.append('weiTuoShu', this.form.APPOINT_ANNEX[0].raw)
|
||||||
|
upload('/xgf/user/attorney', formData)
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
this.$message.success('推送成功')
|
this.$message.success('推送成功')
|
||||||
this.visible = false
|
this.visible = false
|
||||||
|
|
|
@ -7,13 +7,15 @@
|
||||||
title="审批流程"
|
title="审批流程"
|
||||||
width="60%">
|
width="60%">
|
||||||
<el-steps :space="200" :active="list.length" direction="vertical" finish-status="success">
|
<el-steps :space="200" :active="list.length" direction="vertical" finish-status="success">
|
||||||
<el-step v-for="item in list" :key="item.FLOW_DETAIL_ID" :value="item.FLOW_DETAIL_ID" :title="item.SORT">
|
<el-step v-for="item in list" :key="item.FLOW_DETAIL_ID" :value="item.FLOW_DETAIL_ID" :title="item.SORT+''">
|
||||||
<template slot="description">
|
<template slot="description">
|
||||||
<el-card class="box-card a" style="width: 900px;">
|
<el-card class="box-card a" style="width: 900px;">
|
||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ item.STEP_NAME }}</span>
|
<span>{{ item.STEP_NAME }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col v-if="item.APPROVER_NAME">
|
<el-col v-if="item.APPROVER_NAME">
|
||||||
审批人:{{ item.APPROVER_NAME }}
|
审批人:{{ item.APPROVER_NAME }}
|
||||||
|
@ -34,6 +36,11 @@
|
||||||
审批结束
|
审批结束
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
</el-col>
|
||||||
|
<el-col v-if="item.APPOINT_ANNEX" :span="12">
|
||||||
|
<el-button icon="el-icon-download" type="primary" @click = "download(item)">下载附件</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</template>
|
</template>
|
||||||
|
@ -47,6 +54,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||||
|
import useDownloadFile from '../../../../utils/useDownloadFile'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
|
@ -77,6 +85,9 @@ export default {
|
||||||
},
|
},
|
||||||
closeWindow() {
|
closeWindow() {
|
||||||
this.handleClose()
|
this.handleClose()
|
||||||
|
},
|
||||||
|
download(item) {
|
||||||
|
useDownloadFile(item.APPOINT_ANNEX)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,7 +141,7 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th>民族</th>
|
<th>民族</th>
|
||||||
<td>{{ userDetailForm.minzuName ? userDetailForm.minzuName : '暂无信息' }}</td>
|
<td>{{ userDetailForm.NATIONALITY_NAME ? userDetailForm.NATIONALITY_NAME : '暂无信息' }}</td>
|
||||||
<th>婚姻状况</th>
|
<th>婚姻状况</th>
|
||||||
<td>{{ userDetailForm.MARITALSTATUS === '0' ? '未婚' : '已婚' }}</td>
|
<td>{{ userDetailForm.MARITALSTATUS === '0' ? '未婚' : '已婚' }}</td>
|
||||||
<th>政治面貌</th>
|
<th>政治面貌</th>
|
||||||
|
|
|
@ -62,7 +62,7 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th>民族</th>
|
<th>民族</th>
|
||||||
<td>{{ userDetailForm.minzuName ? userDetailForm.minzuName : '暂无信息' }}</td>
|
<td>{{ userDetailForm.NATIONALITY_NAME ? userDetailForm.NATIONALITY_NAME : '暂无信息' }}</td>
|
||||||
<th>婚姻状况</th>
|
<th>婚姻状况</th>
|
||||||
<td>{{ userDetailForm.MARITALSTATUS === '0' ? '未婚' : '已婚' }}</td>
|
<td>{{ userDetailForm.MARITALSTATUS === '0' ? '未婚' : '已婚' }}</td>
|
||||||
<th>政治面貌</th>
|
<th>政治面貌</th>
|
||||||
|
@ -137,6 +137,22 @@
|
||||||
<td>{{ formatLabel(userDetailForm.ISFLOW) }}</td>
|
<td>{{ formatLabel(userDetailForm.ISFLOW) }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
<div v-if="userDetailForm.ANNEX" style="padding-bottom: 10px">
|
||||||
|
<div class="level-title">
|
||||||
|
<h1>承诺书</h1>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<el-button icon="el-icon-download" type="primary" @click = "download(userDetailForm.ANNEX)">下载附件</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="userDetailForm.ATTORNEY" style="padding-bottom: 10px">
|
||||||
|
<div class="level-title">
|
||||||
|
<h1>委托书</h1>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<el-button icon="el-icon-download" type="primary" @click = "download(userDetailForm.ATTORNEY)">下载附件</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="level-title">
|
<div class="level-title">
|
||||||
<h1>培训记录</h1>
|
<h1>培训记录</h1>
|
||||||
|
@ -317,6 +333,7 @@
|
||||||
import vueQr from 'vue-qr'
|
import vueQr from 'vue-qr'
|
||||||
import dateformat from '@/utils/dateformat'
|
import dateformat from '@/utils/dateformat'
|
||||||
import { requestFN } from '@/utils/request'
|
import { requestFN } from '@/utils/request'
|
||||||
|
import useDownloadFile from '@/utils/useDownloadFile'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { vueQr },
|
components: { vueQr },
|
||||||
|
@ -347,7 +364,6 @@ export default {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
init(e) {
|
init(e) {
|
||||||
console.log(e)
|
|
||||||
this.visible = true
|
this.visible = true
|
||||||
this.heirloom = JSON.parse(JSON.stringify(e))
|
this.heirloom = JSON.parse(JSON.stringify(e))
|
||||||
this.getUserInfoById(this.heirloom)
|
this.getUserInfoById(this.heirloom)
|
||||||
|
@ -402,6 +418,9 @@ export default {
|
||||||
} else {
|
} else {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
download(item) {
|
||||||
|
useDownloadFile(item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,7 +141,7 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th>民族</th>
|
<th>民族</th>
|
||||||
<td>{{ userDetailForm.minzuName ? userDetailForm.minzuName : '暂无信息' }}</td>
|
<td>{{ userDetailForm.NATIONALITY_NAME ? userDetailForm.NATIONALITY_NAME : '暂无信息' }}</td>
|
||||||
<th>婚姻状况</th>
|
<th>婚姻状况</th>
|
||||||
<td>{{ userDetailForm.MARITALSTATUS === '0' ? '未婚' : '已婚' }}</td>
|
<td>{{ userDetailForm.MARITALSTATUS === '0' ? '未婚' : '已婚' }}</td>
|
||||||
<th>政治面貌</th>
|
<th>政治面貌</th>
|
||||||
|
|
Loading…
Reference in New Issue