388 lines
12 KiB
Vue
388 lines
12 KiB
Vue
<template>
|
||
<section class="managementDetail">
|
||
<ai-detail>
|
||
<template #title>
|
||
<ai-title title="公文登记" isShowBottomBorder isShowBack @onBackClick="cancel(true)"/>
|
||
</template>
|
||
<template #content>
|
||
<ai-card title="公文信息">
|
||
<template slot="content">
|
||
<div class="form_div mar-t16">
|
||
<el-form
|
||
ref="rules"
|
||
:model="form"
|
||
:rules="formRules"
|
||
size="small"
|
||
label-suffix=":"
|
||
label-width="100px"
|
||
>
|
||
<el-form-item label="公文名称" prop="documentName">
|
||
<el-input
|
||
v-model="form.documentName"
|
||
placeholder="请输入..."
|
||
maxlength="50"
|
||
></el-input>
|
||
</el-form-item>
|
||
<div class="above">
|
||
<div class="left">
|
||
<el-form-item label="公文编号" prop="documentCode">
|
||
<el-input
|
||
v-model="form.documentCode"
|
||
placeholder="请输入..."
|
||
maxlength="50"
|
||
></el-input>
|
||
</el-form-item>
|
||
</div>
|
||
<div class="right">
|
||
<el-form-item label="公文类型" prop="documentType">
|
||
<el-select
|
||
v-model="form.documentType"
|
||
placeholder="请选择..."
|
||
clearable
|
||
>
|
||
<el-option
|
||
v-for="(item, i) in dict.getDict('officialDocumentName')"
|
||
:key="i"
|
||
:label="item.dictName"
|
||
:value="item.dictValue"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
<div class="above">
|
||
<div class="left">
|
||
<el-form-item label="保密等级">
|
||
<el-select
|
||
v-model="form.confidentialityLevel"
|
||
placeholder="请选择..."
|
||
clearable
|
||
>
|
||
<el-option
|
||
v-for="(item, i) in dict.getDict('officialDocumentConfidentialityLevel')"
|
||
:key="i"
|
||
:label="item.dictName"
|
||
:value="item.dictValue"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</div>
|
||
<div class="right">
|
||
<el-form-item label="阅示类型" prop="readType">
|
||
<el-select @change="readTypeChange"
|
||
v-model="form.readType"
|
||
placeholder="请选择..."
|
||
clearable
|
||
>
|
||
<el-option
|
||
v-for="(item, i) in dict.getDict('officialDocumentReadType')"
|
||
:key="i"
|
||
:label="item.dictName"
|
||
:value="item.dictValue"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
<div class="above">
|
||
<div class="left">
|
||
<el-form-item label="紧急程度">
|
||
<el-select
|
||
v-model="form.emergencyLevel"
|
||
placeholder="请选择..."
|
||
clearable
|
||
>
|
||
<el-option
|
||
v-for="(item, i) in dict.getDict('officialDocumentEmergencyLevel')"
|
||
:key="i"
|
||
:label="item.dictName"
|
||
:value="item.dictValue"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
<div class="above">
|
||
<div class="left">
|
||
<el-form-item label="发文机关">
|
||
<el-input
|
||
v-model="form.issuingUnit"
|
||
placeholder="请输入..."
|
||
maxlength="50"
|
||
></el-input>
|
||
</el-form-item>
|
||
</div>
|
||
<div class="right">
|
||
<el-form-item label="发文字号">
|
||
<el-input
|
||
v-model="form.issuingFont"
|
||
placeholder="请输入..."
|
||
maxlength="50"
|
||
></el-input>
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
<div class="above">
|
||
<div class="left">
|
||
<el-form-item label="签发人">
|
||
<el-input
|
||
v-model="form.signer"
|
||
placeholder="请输入..."
|
||
maxlength="50"
|
||
></el-input>
|
||
</el-form-item>
|
||
</div>
|
||
</div>
|
||
<el-form-item label="备注">
|
||
<el-input
|
||
v-model="form.remark"
|
||
type="textarea"
|
||
:rows="5"
|
||
maxlength="200"
|
||
show-word-limit
|
||
placeholder="请输入..."
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="附件">
|
||
<div class="upload">
|
||
<ai-uploader :instance="instance" v-model="form.files" fileType="file" :limit="9" @change="onChange"></ai-uploader>
|
||
</div>
|
||
</el-form-item>
|
||
</el-form>
|
||
</div>
|
||
</template>
|
||
</ai-card>
|
||
<ai-card title="流转信息">
|
||
<template #content>
|
||
<span class="form-label">流转对象:</span>
|
||
<div class="user-content">
|
||
<ai-wechat-selecter slot="append" :instance="instance" v-model="form.flowUsers" isShowUser :isMultiple="isMultiple"></ai-wechat-selecter>
|
||
</div>
|
||
</template>
|
||
</ai-card>
|
||
</template>
|
||
<template #footer>
|
||
<el-button class="delete-btn footer-btn" @click="cancel(true)">取消</el-button>
|
||
<el-button class="footer-btn" type="primary" @click="save('rules', '1')">保存并流转</el-button>
|
||
<el-button class="footer-btn" @click="save('rules', '0')">保存</el-button>
|
||
</template>
|
||
</ai-detail>
|
||
</section>
|
||
</template>
|
||
|
||
<script>
|
||
export default {
|
||
name: "managementDetail",
|
||
props: {
|
||
instance: Function,
|
||
dict: Object,
|
||
permissions: Function,
|
||
params: Object
|
||
},
|
||
data() {
|
||
return {
|
||
form: {
|
||
documentName: '',
|
||
documentCode: '',
|
||
documentType: '',
|
||
confidentialityLevel: '',
|
||
readType: '',
|
||
emergencyLevel: '',
|
||
issuingTime: '',
|
||
issuingUnit: '',
|
||
issuingFont: '',
|
||
signer: '',
|
||
overDescription: '',
|
||
overTime: '',
|
||
deliver: '',
|
||
remark: '',
|
||
files: [],
|
||
fileIds: [],
|
||
flowUsers: [],
|
||
},
|
||
isMultiple: true,
|
||
};
|
||
},
|
||
computed: {
|
||
formRules(){
|
||
return {
|
||
documentName: [{required: true, message: "请输入公文名称", trigger: 'change' }],
|
||
documentCode: [{required: true, message: "请输入公文编号", trigger: 'change' }],
|
||
documentType: [{required: true, message: "请选择公文类型", trigger: 'change' }],
|
||
readType: [{required: true, message: "请选择阅示类型", trigger: 'change' }],
|
||
}
|
||
},
|
||
colConfigs(){
|
||
return [
|
||
{
|
||
prop: 'meetingUserName',
|
||
align: 'center',
|
||
label: '姓名',
|
||
},
|
||
{
|
||
prop: 'meetingUserPhone',
|
||
align: 'center',
|
||
label: '手机号码',
|
||
},
|
||
{
|
||
prop: 'meetingUnitName',
|
||
align: 'center',
|
||
label: '所属部门',
|
||
},
|
||
{
|
||
slot: 'joinStatus',
|
||
},
|
||
{
|
||
slot: 'option',
|
||
}
|
||
]
|
||
},
|
||
},
|
||
created() {
|
||
this.dict.load('issuingUnit','officialDocumentEmergencyLevel', 'officialDocumentReadType', 'officialDocumentConfidentialityLevel', 'officialDocumentName');
|
||
},
|
||
mounted() {
|
||
if(this.params.id) {
|
||
this.getDetail()
|
||
}
|
||
},
|
||
methods: {
|
||
onChange() {
|
||
|
||
},
|
||
readTypeChange() {
|
||
if(this.form.readType == 0) {
|
||
this.isMultiple = false
|
||
if(this.form.flowUsers.length > 1) {
|
||
this.form.flowUsers = []
|
||
}
|
||
}else {
|
||
this.isMultiple = true
|
||
}
|
||
},
|
||
getDetail() {
|
||
this.instance.post(`/app/appofficialdocumentinfo/queryDetailById?id=${this.params.id}&flag=0`, null).then((res) => {
|
||
if (res.code == 0) {
|
||
this.form = {...res.data}
|
||
this.form.files = this.form.files || []
|
||
}
|
||
});
|
||
},
|
||
save(formName, status){
|
||
this.$refs[formName].validate((valid) => {
|
||
if (valid) {
|
||
this.submit(status)
|
||
} else {
|
||
return false;
|
||
}
|
||
});
|
||
},
|
||
submit(status) {
|
||
var flowUsers = []
|
||
this.form.flowUsers.map(item => {
|
||
var info = {
|
||
flowUserId: item.id,
|
||
flowUserName: item.name,
|
||
avatar: item.avatar
|
||
}
|
||
flowUsers.push(info)
|
||
})
|
||
|
||
this.form.fileIds = []
|
||
if(this.form.files.length) {
|
||
this.form.files.map((item) => {
|
||
this.form.fileIds.push(item.id)
|
||
})
|
||
}
|
||
this.instance.post(`/app/appofficialdocumentinfo/addOrUpdate`, {
|
||
...this.form,
|
||
status: status,
|
||
flowUsers: flowUsers
|
||
}, null).then((res) => {
|
||
if (res.code == 0) {
|
||
if(this.params.id){
|
||
this.$message.success("编辑成功");
|
||
}else{
|
||
this.$message.success("提交成功");
|
||
}
|
||
this.cancel(true)
|
||
}
|
||
});
|
||
},
|
||
cancel(isRefresh) {
|
||
this.$emit('change', {
|
||
type: 'list',
|
||
isRefresh: !!isRefresh
|
||
})
|
||
},
|
||
downFileAll () {
|
||
if (this.form.files.length > 0) {
|
||
this.instance.post('/app/appofficialdocumentinfo/downLoadAllFileForDetail', null, {
|
||
responseType: 'blob',
|
||
params: {
|
||
id: this.form.id
|
||
}
|
||
}).then((res) => {
|
||
const link = document.createElement('a')
|
||
let blob = new Blob([res], { type: 'application/vnd.ms-excel' })
|
||
link.style.display = 'none'
|
||
link.href = URL.createObjectURL(blob)
|
||
var num = ''
|
||
for (let i = 0; i < 10; i++) {
|
||
num += Math.ceil(Math.random() * 10)
|
||
}
|
||
link.setAttribute('download', '公文文件' + '.zip')
|
||
document.body.appendChild(link)
|
||
link.click()
|
||
document.body.removeChild(link)
|
||
})
|
||
} else {
|
||
this.$message.error('暂无附件提供下载')
|
||
}
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.managementDetail {
|
||
height: 100%;
|
||
overflow: auto;
|
||
background: #f3f6f9;
|
||
.above{
|
||
overflow: hidden;
|
||
width: 100%;
|
||
.left{
|
||
width: 50%;
|
||
float: left;
|
||
}
|
||
.right{
|
||
width: 50%;
|
||
float: right;
|
||
}
|
||
.el-select{
|
||
width: 100%;
|
||
}
|
||
.el-date-editor.el-input{
|
||
width: 100%;
|
||
}
|
||
}
|
||
.iconEdit,.Edit{
|
||
color:#5088FF;
|
||
font-size: 12px;
|
||
cursor: pointer;
|
||
padding-left: 8px;
|
||
}
|
||
.form-label{
|
||
display: inline-block;
|
||
width: 100px;
|
||
color: #666;
|
||
font-size: 14px;
|
||
text-align: right;
|
||
}
|
||
.user-content{
|
||
display: inline-block;
|
||
width: calc(100% - 100px);
|
||
}
|
||
}
|
||
</style> |