hi-ucs/back/src/views/modules/myAgent/demo/ability-resource-shelf.vue

366 lines
11 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>
<div class="wrapper">
<div>
<el-form
:model="dataForm"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
:label-width="$i18n.locale === 'en-US' ? '120px' : 'auto'"
>
<div v-if="flagShow">
<ResourcesAndServices
:dataForm="dataForm"
:insertList="insertList"
></ResourcesAndServices>
</div>
<el-form-item
v-if="dataForm.enclosure"
label="申请附件"
prop="enclosure"
>
<el-button @click="downloadFile(dataForm.enclosure, '申请附件')"
>附件下载</el-button
>
</el-form-item>
</el-form>
</div>
<!-- 流程综合组件 -->
<!-- <ren-process-multiple
v-if="processVisible"
updateInstanceIdUrl="/processForm/tabilityapplication/updateInstanceId"
saveFormUrl="/processForm/tabilityapplication"
dataFormName="dataForm"
ref="renProcessMultiple"
></ren-process-multiple> -->
<!-- 审批 -->
<div class="agreeOr" v-if="taskId">
<h3>审批</h3>
<div>
<el-button type="primary" @click="showDialog('同意')">同意</el-button>
<el-button type="danger" plain @click="showDialog('拒绝')"
>拒绝</el-button
>
<!-- <el-radio-group v-model="agreeOrList" style="width: 230px">
<el-radio-button label="同意" class="blueAll">同意</el-radio-button>
<el-radio-button label="退回" class="redAll">退回</el-radio-button>
</el-radio-group>
<el-input
v-if="agreeOrList === '同意'"
v-model="inputAgree"
placeholder="请输入同意意见"
></el-input>
<el-input
v-if="agreeOrList === '退回'"
v-model="inputNo"
placeholder="请输入退回意见"
></el-input>
<el-button
class="inputBule"
@click.native="agreeOrNot($store.state.contentTabsActiveName)"
>提交</el-button
> -->
</div>
</div>
<!-- 流程详情 -->
<ren-process-detail></ren-process-detail>
<el-dialog
title="审批意见"
:close-on-click-modal="false"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose"
>
<el-input v-model="input" placeholder="请输入审批意见"></el-input>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose2">取 消</el-button>
<el-button
type="primary"
@click.native="agreeOrNot($store.state.contentTabsActiveName)"
>确 定</el-button
>
</span>
</el-dialog>
</div>
</template>
<script>
import bus from '@/views/bus.js'
import ResourcesAndServices from './ResourcesAndServices.vue'
import debounce from 'lodash/debounce'
import qs from 'qs'
export default {
// 注入公共方法
// mixins: [processModule],
components: {
ResourcesAndServices
},
props: {
// fromList: {
// // type: Array,
// // default: () => {
// // return []
// // }
// }
},
data () {
return {
dialogVisible: false,
dialogType: '',
input: '',
flagShow: false,
// processVisible: true,
visible: false,
// 表单属性是否可编辑
fieldDisabled: false,
dataForm: {},
id: '',
shifoushizujian: true,
coverageNotShow: true,
nameNotShow: false,
algorithmShow: true,
insertList: [],
inputAgree: '',
inputNo: '',
agreeOrList: '同意',
taskId: ''
}
},
watch: {},
created () {
// 将业务KEY赋值给表单
console.log('params=================>', this.$route, this.$route.params)
this.taskId = this.$route.params.taskId
this.dataForm.taskId = this.$route.params.taskId
this.init()
console.log('fromList', this.$router.currentRoute.params.businessKey)
// this.dataForm = this.$router.currentRoute.params.params.params.resourceDTO
// var callbacks = {
// startProcessSuccessCallback: this.closeCurrentTab,
// startProcessErrorCallback: this.startProcessErrorCallback,
// taskHandleSuccessCallback: this.closeCurrentTab,
// taskHandleErrorCallback: this.taskHandleErrorCallback,
// formSaveSuccessCallback: null,
// formSaveErrorCallback: null
// }
// // 初始化综合组件
// this.initProcessMultiple(callbacks)
},
mounted () {
const businessKey = this.$router.currentRoute.params.businessKey
this.getInfo(businessKey)
this.methodsThree()
console.log(this.taskId, 'this.dataForm.taskId')
},
computed: {},
methods: {
getInfo (id) {
this.$http.get('/resourceMountApply/' + id).then(({ data: res }) => {
this.dataForm = res.data.resourceDTO
if (this.dataForm) {
console.log('this.dataForm', this.dataForm)
this.flagShow = true
}
})
},
showDialog (title) {
this.dialogVisible = true
this.dialogType = title
},
handleClose (done) {
this.$confirm('确认关闭?')
.then((_) => {
this.input = ''
done()
})
.catch((_) => {})
},
handleClose2 () {
this.dialogVisible = false
this.input = ''
},
methodsThree () {
// this.$http.get('/category/getCategoryTree').then((res) => {
// this.insertList = res.data.data
// })
this.insertList = JSON.parse(localStorage.getItem('getCategoryTree'))
},
init () {
this.visible = true
this.$nextTick(() => {
this.$refs.dataForm.resetFields()
// if (this.dataForm.id) {
// 如业务KEY已存在不允许编辑
this.fieldDisabled = true
// this.id = this.$router.currentRoute.businessKey
console.log('id', this.$router.currentRoute.params.businessKey)
// }
})
},
// 同意与退回
agreeOrNot: debounce(
function (data) {
if (this.dialogType === '同意') {
console.log('this.dataForm', this.dataForm)
const params = qs.stringify({
taskId: this.taskId,
comment: this.input
})
console.log(params)
this.$http
.post('/act/task/complete?' + params)
.then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
if (this.callbacks.taskHandleErrorCallback) {
this.callbacks.taskHandleErrorCallback(res)
}
return
}
bus.$emit('abilityResourceShelfInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.dialogVisible = false
this.input = ''
if (this.callbacks.taskHandleSuccessCallback) {
this.callbacks.taskHandleSuccessCallback(res)
}
}
})
})
.catch(() => {})
} else if (this.dialogType === '拒绝') {
const params = qs.stringify({
taskId: this.taskId,
comment: this.input
})
this.$http
.post('/act/task/endProcess?', params)
.then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
if (this.callbacks.taskHandleErrorCallback) {
this.callbacks.taskHandleErrorCallback(res)
}
return
}
bus.$emit('abilityResourceShelfInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
if (this.callbacks.taskHandleSuccessCallback) {
this.callbacks.taskHandleSuccessCallback(res)
}
}
})
})
}
this.tabRemoveHandle(data)
},
1000,
{ leading: true, trailing: false }
),
tabRemoveHandle (tabName) {
console.log(tabName, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
if (tabName === 'home') {
return false
}
this.$store.state.contentTabs = this.$store.state.contentTabs.filter(
(item) => item.name !== tabName
)
if (this.$store.state.contentTabs.length <= 0) {
this.$store.state.sidebarMenuActiveName =
this.$store.state.contentTabsActiveName = 'home'
return false
}
// 当前选中tab被删除
if (tabName === this.$store.state.contentTabsActiveName) {
const tab =
this.$store.state.contentTabs[
this.$store.state.contentTabs.length - 1
]
this.$router.push({
name: /^iframe_.+/.test(tab.name) ? 'iframe' : tab.name,
params: { ...tab.params },
query: { ...tab.query }
})
}
}
}
}
</script>
<style scoped lang="scss">
.kuandukuandukuandu {
max-width: 1500px;
}
.wrapper {
}
::v-deep .agreeOr > div {
display: flex;
align-items: center;
.el-input {
margin-right: 10px;
margin-left: 32px;
}
}
::v-deep .agreeOr > div:last-of-type {
margin-top: 15px;
}
.blueAll {
::v-deep .el-radio-button__inner {
width: 80px;
height: 32px;
line-height: 32px;
padding: 0;
border-radius: 2px;
background: #ffffff;
color: #0558e1;
border: 1px solid #0558e1;
}
::v-deep .el-radio-button__orig-radio:checked + .el-radio-button__inner {
box-shadow: unset !important;
background: #0558e1;
color: #ffffff;
}
}
.inputBule {
width: 55px;
height: 32px;
line-height: 32px;
padding: 0;
border-radius: 2px;
background: #0558e1;
color: #ffffff;
border: 1px solid #0558e1;
}
.redAll {
margin-left: 10px;
::v-deep .el-radio-button__inner {
width: 80px;
height: 32px;
line-height: 32px;
padding: 0;
border-radius: 2px;
border: 1px solid #e83a48;
background: #ffffff;
color: #e83a48;
margin-left: 10px;
}
::v-deep .el-radio-button__orig-radio:checked + .el-radio-button__inner {
box-shadow: unset !important;
color: #ffffff;
background: #e83a48;
}
}
.blueInput {
width: 55px;
}
</style>