Files
dvcp_v2_webapp/packages/work/AppHelpDeclaration/components/Detail.vue
2022-05-19 11:43:39 +08:00

302 lines
9.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<section class="detail">
<ai-detail>
<template #title>
<ai-title title="帮扶申请详情" isShowBottomBorder isShowBack @onBackClick="cancel(true)">
<template #rightBtn>
<!-- <ai-wechat-selecter :instance="instance" v-model="addUser" :isMultiple="form.readType == '0' ? false : true" @change="onChange" v-if="form.status === '2' && form.readType == '0'">
<el-button
size="small"
type="primary"
icon="iconfont iconResetting">
再次流转
</el-button>
</ai-wechat-selecter> -->
<el-button type="primary" @click="changeStatus('转交事件')" size="small"> 转交事件</el-button>
<el-button type="primary" @click="changeStatus('审核处理')" size="small"> 审核处理</el-button>
</template>
</ai-title>
</template>
<template #content>
<div style="display:flex;">
<ai-card title="申请信息" style="flex:2;margin-right:32px;">
<template slot="content">
<ai-wrapper class="mar-t16" label-width="100px" :columnsNumber="2">
<ai-info-item label="申请人姓名:"><span>{{form.documentCode || '-'}}</span></ai-info-item>
<ai-info-item label="身份证号:"><span>{{$dict.getLabel("officialDocumentName", form.documentType) || '-'}}</span></ai-info-item>
<ai-info-item label="联系方式:"><span>{{$dict.getLabel("officialDocumentConfidentialityLevel", form.confidentialityLevel) || '-'}}</span></ai-info-item>
<ai-info-item label="申报方式:"><span>{{form.documentCode || '-'}}</span></ai-info-item>
<ai-info-item label="家庭人口数:"><span>{{form.documentCode || '-'}}</span></ai-info-item>
<ai-info-item label="排查人员:"><span>{{form.documentCode || '-'}}</span></ai-info-item>
<ai-info-item label="申请帮扶原因:"><span>{{form.documentCode || '-'}}</span></ai-info-item>
<ai-info-item label="上报时间:"><span>{{form.documentCode || '-'}}</span></ai-info-item>
</ai-wrapper>
<ai-wrapper label-width="100px" :columnsNumber="1">
<ai-info-item label="风险说明:"><span>{{$dict.getLabel("officialDocumentReadType", form.readType) || '-'}}</span></ai-info-item>
</ai-wrapper>
<ai-file-list v-if="form.files && form.files.length"
:fileList="form.files"
:fileOps="{ name: 'name', size: 'fileSizeStr' }"
></ai-file-list>
</template>
</ai-card>
<ai-card title="办理进度" style="flex:1;">
<template #right>
<p style="color:#666;font-size:14px;">当前状态待处理</p>
</template>
<template #content>
<div class="ai-steps">
<div class="ai-steps__item" v-for="(item, index) in form.flowUsers" :key="index">
<div class="ai-steps__item--left">
<div class="ai-steps__item--index">1</div>
</div>
<div class="ai-steps__item--right">
<div class="ai-steps__item__avatar">
<img :src="item.avatar" v-if="item.avatar">
<h2 v-else>{{ formatName(item.flowUserName) }}</h2>
</div>
<div class="ai-steps__item--content">
<h2>李四发起排查上报等待处理</h2>
<p>{{ item.flowTime }}</p>
</div>
</div>
</div>
</div>
</template>
</ai-card>
</div>
<ai-dialog :title="dialogTitie" :visible.sync="showDialog" @onConfirm="queMeeting('writeInfo')" @onCancel="showDialog=false;" @close="$refs.dialogInfo.resetFields()" width="520px">
<div class="addother_main" style="width:400px;margin:auto;">
<el-form :model="dialogInfo" status-icon ref="writeInfo" label-width="100px" class="demo-ruleForm">
<el-form-item label="请假原因:" prop="reason" autocomplete="off" :rules="{ required: true, message: '请假原因不能为空', trigger: 'blur' }">
<el-input v-model.trim="dialogInfo.reason" autocomplete="off" size="mini" placeholder="请输入..." type="textarea" :rows="4" :maxlength="100" show-word-limit></el-input>
</el-form-item>
</el-form>
</div>
</ai-dialog>
</template>
</ai-detail>
</section>
</template>
<script>
export default {
name: "detail",
props: {
instance: Function,
dict: Object,
permissions: Function,
params: Object
},
data() {
return {
form: {},
showDialog: false,
dialogTitle: '',
dialogInfo: {}
};
},
computed: {
},
created() {
this.dict.load('issuingUnit','officialDocumentEmergencyLevel', 'officialDocumentReadType', 'officialDocumentConfidentialityLevel', 'officialDocumentName', 'documentFlowStatus', 'readingStatus');
},
mounted() {
this.form = this.params
this.getDetail()
},
methods: {
formatName (name) {
if(name == undefined){
return
}
return name.substr(name.length - 2, name.length > 2 ? (name.length - 1) : name.length)
},
onChange() {
if (!this.addUser.length) {
return this.$message.error('请选择流转人员')
}
if (this.form.readType === '0' && this.form.status === '0') {
// 开始流转
let data = this.form
const flowUsers = [...this.addUser].map(item => {
return {
flowUserId: item.id,
flowUserName: item.name,
avatar: item.avatar
}
})
const fileIds = data.files.length ? data.files.map(item => item.id) : []
delete data.files
this.instance.post(`/app/appofficialdocumentinfo/addOrUpdate`, {
id: this.form.id,
...data,
status: '1',
flowUsers: flowUsers,
fileIds
}).then(res => {
if (res.code == 0) {
this.$message.success('流转成功')
this.getDetail()
}
})
} else {
// 再次流转
this.instance.post(`/app/appofficialdocumentinfo/flowById`, null, {
params: {
flag: '1',
flowUserId: this.addUser[0].id,
flowUserName: this.addUser[0].name,
avatar: this.addUser[0].avatar,
id: this.form.id
}
}).then(res => {
if (res.code == 0) {
this.$message.success('添加成功')
this.getDetail(this.id)
}
})
}
},
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 || []
if (res.data.readType === '1') {
this.tableData = res.data.flowUsers
this.total = res.data.flowUsers.length
}
}
});
},
cancel(isRefresh) {
this.$emit('change', {
type: 'list',
isRefresh: !!isRefresh
})
},
changeStatus(title) {
this.dialogTitle = title
this.showDialog = true
}
},
};
</script>
<style lang="scss" scoped>
.detail {
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;
}
}
.ai-steps {
padding-bottom: 40px;
.ai-steps__item {
display: flex;
position: relative;
padding-bottom: 44px;
&:after {
position: absolute;
left: 12px;
top: 26px;
width: 1px;
height: calc(100% - 30px);
background: #DDDDDD;
content: " ";
}
&:last-child {
padding-bottom: 0;
&:after {
display: none;
}
}
.ai-steps__item--left {
position: relative;
margin-right: 16px;
.ai-steps__item--index{
width: 24px;
height: 24px;
line-height: 24px;
border-radius: 50%;
border: 1px solid #ddd;
text-align: center;
color: #ddd;
font-size: 12px;
}
}
.ai-steps__item--right {
flex-shrink: 0;
color: #666;
font-size: 14px;
display: flex;
.ai-steps__item--content {
span {
color: #333;
font-size: 16px;
}
h2 {
color: #666666;
font-size: 14px;
}
p {
margin-top: 8px;
color: #666666;
font-size: 14px;
}
}
.ai-steps__item__avatar {
width: 40px;
height: 40px;
margin-right: 8px;
img, h2 {
width: 40px;
height: 40px;
line-height: 40px;
text-align: center;
color: #fff;
font-size: 14px;
background: #2266FF;
}
}
}
}
}
</style>