437 lines
14 KiB
Vue
437 lines
14 KiB
Vue
|
|
<!-- 会议纪要落实 -->
|
|||
|
|
<template>
|
|||
|
|
<view class="page-wrap">
|
|||
|
|
<view class="card">
|
|||
|
|
<uni-card margin="0" :is-shadow="true">
|
|||
|
|
<u--form labelPosition="left" labelWidth="auto" labelAlign="center" :model="model" :rules="rules"
|
|||
|
|
ref="wForm" errorType="border-bottom">
|
|||
|
|
|
|||
|
|
<view class="label-title">会议主题</view>
|
|||
|
|
<u-form-item prop="Nav_Meeting.THEME" borderBottom>
|
|||
|
|
<u--textarea autoHeight disabled maxlength='1500' v-model="model.Nav_Meeting.THEME"
|
|||
|
|
placeholder="会议主题" border="surround"></u--textarea>
|
|||
|
|
</u-form-item>
|
|||
|
|
<u-form-item label="会议时间" prop="Nav_Meeting.BEGIN_TIME" borderBottom>
|
|||
|
|
<u--input disabled disabledColor="#fff" v-model="model.Nav_Meeting.BEGIN_TIME" border="none"
|
|||
|
|
inputAlign="right"></u--input>
|
|||
|
|
</u-form-item>
|
|||
|
|
|
|||
|
|
<u-form-item label="会议地点" prop="Nav_Meeting.ADDRESS" borderBottom>
|
|||
|
|
<u--input disabled disabledColor="#fff" v-model="model.Nav_Meeting.ADDRESS" border="none"
|
|||
|
|
slot="right" inputAlign="right"></u--input>
|
|||
|
|
</u-form-item>
|
|||
|
|
<u-form-item label="发起部门" prop="Nav_Meeting.Nav_Department.NAME" borderBottom>
|
|||
|
|
<u--input disabled disabledColor="#fff" v-model="model.Nav_Meeting.Nav_Department.NAME"
|
|||
|
|
border="none" inputAlign="right"></u--input>
|
|||
|
|
</u-form-item>
|
|||
|
|
<u-form-item label="主持人" prop="Nav_Meeting.Nav_UserHost.NAME" borderBottom>
|
|||
|
|
<u--input disabled disabledColor="#fff" v-model="model.Nav_Meeting.Nav_UserHost.NAME"
|
|||
|
|
border="none" inputAlign="right"></u--input>
|
|||
|
|
</u-form-item>
|
|||
|
|
<u-form-item label="记录人" prop="Nav_Meeting.Nav_UserRecorder.NAME" borderBottom>
|
|||
|
|
<u--input disabled disabledColor="#fff" v-model="model.Nav_Meeting.Nav_UserRecorder.NAME"
|
|||
|
|
border="none" inputAlign="right"></u--input>
|
|||
|
|
</u-form-item>
|
|||
|
|
|
|||
|
|
<view class="label-title">参会人员:</view>
|
|||
|
|
<view v-show="!!model.Nav_ListPJoin.length" class="tag-view">
|
|||
|
|
<uni-tag class="tag" v-for="(i, k) in model.Nav_ListPJoin.filter(i => !i.IS_DELETED)" :key="k"
|
|||
|
|
:inverted="true" :text="i.NAME" type="primary" />
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
<u-form-item label="请假人员" prop="ListPAskForLeaveSHOW" @click='handleChange("AskForLeave")'
|
|||
|
|
borderBottom>
|
|||
|
|
<u--input disabledColor="#fff" v-model="model.ListPAskForLeaveSHOW" border="none"
|
|||
|
|
inputAlign="right"></u--input>
|
|||
|
|
|
|||
|
|
</u-form-item>
|
|||
|
|
<u-form-item label="缺席人员" prop="ListPAbsenceShow" @click='handleChange("Absence")' borderBottom>
|
|||
|
|
<u--input disabledColor="#fff" v-model="model.ListPAbsenceShow" border="none"
|
|||
|
|
inputAlign="right"></u--input>
|
|||
|
|
|
|||
|
|
</u-form-item>
|
|||
|
|
|
|||
|
|
<view class="label-title">会议记录</view>
|
|||
|
|
<u-form-item prop="MEETINGRECORD" borderBottom>
|
|||
|
|
<u--textarea disabled autoHeight maxlength='500' v-model="model.MEETINGRECORD"
|
|||
|
|
placeholder="请输入检查内容" border="surround"></u--textarea>
|
|||
|
|
</u-form-item>
|
|||
|
|
|
|||
|
|
<view class="upload-title">附件</view>
|
|||
|
|
<full-upload v-model="model.Nav_Files" :isShowBtn='false'></full-upload>
|
|||
|
|
|
|||
|
|
</u--form>
|
|||
|
|
</uni-card>
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
<u-sticky offset-top="20">
|
|||
|
|
<view class="sub-form">
|
|||
|
|
<view class="sub-form-wrap">
|
|||
|
|
<u--form labelPosition="left" labelWidth="auto" labelAlign="center" errorType="border-bottom"
|
|||
|
|
ref="sForm"> <!-- :model="model.Nav_ListMinutesDetail" :rules="rulesSub" -->
|
|||
|
|
<uni-collapse :border="false" accordion>
|
|||
|
|
<uni-card style="margin-bottom: 16px;" margin="0" spacing="0" :is-shadow="false"
|
|||
|
|
v-for="(item, index) in model.Nav_ListMinutesDetail">
|
|||
|
|
<uni-collapse-item :title="index + 1 + '. ' + item.RESOLUTION">
|
|||
|
|
<view class="label-title">会议决议</view>
|
|||
|
|
<u-form-item prop="RESOLUTION" borderBottom>
|
|||
|
|
<u--textarea disabled autoHeight v-model="item.RESOLUTION" placeholder="会议决议"
|
|||
|
|
border="surround"></u--textarea>
|
|||
|
|
</u-form-item>
|
|||
|
|
|
|||
|
|
<u-form-item label="是否需要落实" prop="ISNEEDDEALSHOW" borderBottom>
|
|||
|
|
<u--input disabled disabledColor="#fff" v-model="item.ISNEEDDEALSHOW"
|
|||
|
|
border="none" inputAlign="right"></u--input>
|
|||
|
|
</u-form-item>
|
|||
|
|
|
|||
|
|
<u-form-item label="落实部门" prop="Nav_DepartmentDeal.NAME" borderBottom>
|
|||
|
|
<u--input disabled disabledColor="#fff" v-model="item.Nav_DepartmentDeal.NAME"
|
|||
|
|
border="none" inputAlign="right"></u--input>
|
|||
|
|
<!-- <u-icon style="margin-left: 4px;" slot="right" name="arrow-down"></u-icon> -->
|
|||
|
|
</u-form-item>
|
|||
|
|
<u-form-item label="落实责任人" prop="Nav_UserDeal.NAME" borderBottom>
|
|||
|
|
<u--input disabled disabledColor="#fff" v-model="item.Nav_UserDeal.NAME"
|
|||
|
|
border="none" inputAlign="right"></u--input>
|
|||
|
|
<!-- <u-icon style="margin-left: 4px;" slot="right" name="arrow-down"></u-icon> -->
|
|||
|
|
</u-form-item>
|
|||
|
|
|
|||
|
|
<w-view-require class="label-title" title='责任人意见'></w-view-require>
|
|||
|
|
<u-form-item prop="OPINION" borderBottom>
|
|||
|
|
<u--textarea autoHeight v-model="item.OPINION" placeholder="请输入责任人意见"
|
|||
|
|
border="surround"></u--textarea>
|
|||
|
|
</u-form-item>
|
|||
|
|
<w-view-require class="label-title" title='落实情况反馈'></w-view-require>
|
|||
|
|
<u-form-item prop="DEALBACK" borderBottom>
|
|||
|
|
<u--textarea autoHeight v-model="item.DEALBACK" placeholder="请输入落实情况反馈"
|
|||
|
|
border="surround"></u--textarea>
|
|||
|
|
</u-form-item>
|
|||
|
|
|
|||
|
|
<u-form-item label="落实期限" prop="LIMITDATETIMESHOW" borderBottom
|
|||
|
|
@click="showCheckDate(item)">
|
|||
|
|
<u--input disabled disabledColor="#fff" v-model="item.LIMITDATETIMESHOW"
|
|||
|
|
placeholder="请选择落实期限" border="none" inputAlign="right"></u--input>
|
|||
|
|
</u-form-item>
|
|||
|
|
|
|||
|
|
<view class="upload-title">附件</view>
|
|||
|
|
<full-upload v-model="item.Nav_Files" :isShowBtn='true'
|
|||
|
|
:listProp='listPropSubUpload'
|
|||
|
|
:listPropVal='item.listPropSubValUpload'></full-upload>
|
|||
|
|
|
|||
|
|
</uni-collapse-item>
|
|||
|
|
</uni-card>
|
|||
|
|
</uni-collapse>
|
|||
|
|
</u--form>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</u-sticky>
|
|||
|
|
|
|||
|
|
<view class="bottom-button">
|
|||
|
|
<button type="primary" v-if='isLoadOK && tableKey === "1"' @click="FullUpdate">提交</button>
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import {
|
|||
|
|
guid,
|
|||
|
|
initFilter,
|
|||
|
|
extendRule,
|
|||
|
|
extendInclude,
|
|||
|
|
extendGroupRule,
|
|||
|
|
initFilterGroup,
|
|||
|
|
extendFilterGroup,
|
|||
|
|
extendFilterGroupGroupRules
|
|||
|
|
} from '../../../../utils/common'
|
|||
|
|
|
|||
|
|
import {
|
|||
|
|
|
|||
|
|
GetByDetailDeal,
|
|||
|
|
UpdateDeal
|
|||
|
|
} from '../../../../services/apply/subPages/SCMT/meeting'
|
|||
|
|
|
|||
|
|
import {
|
|||
|
|
OrderPagedUseful2
|
|||
|
|
} from '../../../../services/common'
|
|||
|
|
|
|||
|
|
import {
|
|||
|
|
getDepartmentLists
|
|||
|
|
} from '../../../../services/app'
|
|||
|
|
|
|||
|
|
import wViewRequire from '@/components/custom/w-view-require.vue'
|
|||
|
|
// import WViewTequire from 'components/custom/w-view-require.vue'
|
|||
|
|
|
|||
|
|
import UButton from '../../../../uni_modules/uview-ui/components/u-button/u-button.vue'
|
|||
|
|
import form from '../../../../uni_modules/uview-ui/libs/config/props/form'
|
|||
|
|
|
|||
|
|
export default {
|
|||
|
|
components: {
|
|||
|
|
wViewRequire
|
|||
|
|
// UButton,
|
|||
|
|
},
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
tableKey: '0',
|
|||
|
|
TaskID: '',
|
|||
|
|
listPropSubUpload: ['MEETING_MINUTES_DETAIL_ID'],
|
|||
|
|
|
|||
|
|
AUDIT_OPINION: '',
|
|||
|
|
isAudit: true,
|
|||
|
|
isLoadOK: false,
|
|||
|
|
|
|||
|
|
model: {
|
|||
|
|
ID: '',
|
|||
|
|
TaskID: '',
|
|||
|
|
Nav_Files: [],
|
|||
|
|
Nav_Meeting: {
|
|||
|
|
|
|||
|
|
Nav_UserHost: {
|
|||
|
|
NAME: ''
|
|||
|
|
},
|
|||
|
|
Nav_UserRecorder: {
|
|||
|
|
NAME: '',
|
|||
|
|
},
|
|||
|
|
THEME: '',
|
|||
|
|
Nav_ListThemes: [],
|
|||
|
|
|
|||
|
|
// Nav_ListPAll: [{
|
|||
|
|
// USER_ID: '',
|
|||
|
|
// NAME: '',
|
|||
|
|
// Nav_User: {
|
|||
|
|
// NAME: ''
|
|||
|
|
// }
|
|||
|
|
// }]
|
|||
|
|
},
|
|||
|
|
// Nav_ListMeetingPJoin: [{ //初始的人员信息 不然请假人 缺席人 操作可能会导致 参会人丢失
|
|||
|
|
// USER_ID: '',
|
|||
|
|
// NAME: '',
|
|||
|
|
// Nav_User: {
|
|||
|
|
// NAME: ''
|
|||
|
|
// }
|
|||
|
|
// }],
|
|||
|
|
Nav_ListPJoin: [{
|
|||
|
|
USER_ID: '',
|
|||
|
|
NAME: '',
|
|||
|
|
Nav_User: {
|
|||
|
|
NAME: ''
|
|||
|
|
}
|
|||
|
|
}],
|
|||
|
|
Nav_ListPAskForLeave: [],
|
|||
|
|
ListPAskForLeaveSHOW: '',
|
|||
|
|
Nav_ListPAbsence: [],
|
|||
|
|
ListPAbsenceShow: '',
|
|||
|
|
Nav_ListMinutesDetail: [{
|
|||
|
|
listPropSubValUpload: [],
|
|||
|
|
MEETING_MINUTES_ID: '',
|
|||
|
|
RESOLUTION: '',
|
|||
|
|
ISNEEDDEAL: false,
|
|||
|
|
ISNEEDDEALSHOW: '',
|
|||
|
|
DEAL_DEPARTMENT_ID: '',
|
|||
|
|
Nav_DepartmentDeal: {
|
|||
|
|
NAME: ''
|
|||
|
|
},
|
|||
|
|
DEAL_USER_ID: '',
|
|||
|
|
Nav_UserDeal: {
|
|||
|
|
NAME: ''
|
|||
|
|
},
|
|||
|
|
LIMITDATETIME: '',
|
|||
|
|
LIMITDATETIMESHOW: ''
|
|||
|
|
}]
|
|||
|
|
},
|
|||
|
|
rulesSub: {
|
|||
|
|
'OPINION': {
|
|||
|
|
type: 'string',
|
|||
|
|
required: true,
|
|||
|
|
trigger: ['blur', 'change']
|
|||
|
|
},
|
|||
|
|
'DEALBACK': {
|
|||
|
|
type: 'string',
|
|||
|
|
required: true,
|
|||
|
|
trigger: ['blur', 'change']
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
rules: {
|
|||
|
|
// 'MEETINGTYPESHOW': {
|
|||
|
|
// type: 'string',
|
|||
|
|
// required: true,
|
|||
|
|
// trigger: ['blur', 'change']
|
|||
|
|
// },
|
|||
|
|
// 'THEME': {
|
|||
|
|
// type: 'string',
|
|||
|
|
// required: true,
|
|||
|
|
// trigger: ['blur', 'change']
|
|||
|
|
// },
|
|||
|
|
// 'Nav_UserHost.NAME': {
|
|||
|
|
// type: 'string',
|
|||
|
|
// required: true,
|
|||
|
|
// trigger: ['blur', 'change']
|
|||
|
|
// },
|
|||
|
|
// 'Nav_UserRecorder.NAME': {
|
|||
|
|
// type: 'string',
|
|||
|
|
// required: true,
|
|||
|
|
// trigger: ['blur', 'change']
|
|||
|
|
// },
|
|||
|
|
// 'BEGIN_TIME': {
|
|||
|
|
// type: 'string',
|
|||
|
|
// required: true,
|
|||
|
|
// trigger: ['blur', 'change']
|
|||
|
|
// },
|
|||
|
|
// 'ADDRESS': {
|
|||
|
|
// type: 'string',
|
|||
|
|
// required: true,
|
|||
|
|
// trigger: ['blur', 'change']
|
|||
|
|
// }
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
onLoad(option) {
|
|||
|
|
this.model.ID = option.ID
|
|||
|
|
this.model.TaskID = option.taskID
|
|||
|
|
this.TaskID = option.taskID
|
|||
|
|
this.tableKey = option.tableKey
|
|||
|
|
this.loadData()
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
|
|||
|
|
FullUpdate() {
|
|||
|
|
|
|||
|
|
// const ele = this.$refs
|
|||
|
|
// debugger
|
|||
|
|
// ele['sForm'].validate().then(res => {
|
|||
|
|
// debugger
|
|||
|
|
// }).catch(err => {
|
|||
|
|
// uni.$showErrorInfo('校验失败')
|
|||
|
|
// })
|
|||
|
|
// return false;
|
|||
|
|
|
|||
|
|
// ele['wForm'].validate().then(res => {
|
|||
|
|
const orgId = uni.getStorageSync('orgId')
|
|||
|
|
this.model.TaskID = this.TaskID
|
|||
|
|
this.model.Nav_ListMinutesDetail[0].STATUS = 30;
|
|||
|
|
|
|||
|
|
// if (!this.model.DEPARTMENT_ID || !this.model.USER_ID_ORIGINATOR) {
|
|||
|
|
// var loginInfo = uni.getStorageSync('appInfo')
|
|||
|
|
// this.model.DEPARTMENT_ID = loginInfo.User.DEPARTMENT_ID
|
|||
|
|
// this.model.USER_ID_ORIGINATOR = loginInfo.User.ID
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// this.model.Nav_UserHost = null
|
|||
|
|
// this.model.Nav_UserRecorder = null
|
|||
|
|
// this.model.Nav_ListPAll.forEach(e => e.Nav_User = null)
|
|||
|
|
|
|||
|
|
// this.model.Nav_UserHost = null
|
|||
|
|
// this.model.Nav_UserRecorder = null
|
|||
|
|
// this.model.Nav_ListMinutesDetail.forEach(e => {
|
|||
|
|
// if (e.Nav_DepartmentDeal != null) {
|
|||
|
|
// e.Nav_DepartmentDeal = null
|
|||
|
|
// }
|
|||
|
|
// if (e.Nav_UserDeal != null) {
|
|||
|
|
// e.Nav_UserDeal = null
|
|||
|
|
// }
|
|||
|
|
// })
|
|||
|
|
// this.model.Nav_ListPJoin.forEach(e => {
|
|||
|
|
// e.Nav_User = null
|
|||
|
|
// })
|
|||
|
|
|
|||
|
|
|
|||
|
|
UpdateDeal(this.model).then(res => {
|
|||
|
|
uni.$showMsgFunc('操作成功!', () => {
|
|||
|
|
// if (this.tableKey == null || this.tableKey == 0) {
|
|||
|
|
// uni.navigateTo({
|
|||
|
|
// url: 'safeCheckIndex'
|
|||
|
|
// })
|
|||
|
|
// } else {
|
|||
|
|
uni.navigateBack()
|
|||
|
|
// }
|
|||
|
|
}, 'success', 1000)
|
|||
|
|
|
|||
|
|
}).catch(err => {
|
|||
|
|
debugger
|
|||
|
|
uni.$showErrorInfo(err)
|
|||
|
|
})
|
|||
|
|
// }).catch(err => {
|
|||
|
|
// uni.$showErrorInfo('校验失败')
|
|||
|
|
// })
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
async loadData() {
|
|||
|
|
|
|||
|
|
const orgId = uni.getStorageSync('orgId')
|
|||
|
|
const json = initFilter(orgId, "", "", 1)
|
|||
|
|
extendRule(json, 'ID', 1, this.model.ID);
|
|||
|
|
extendInclude(json, "Nav_ListContent.Nav_Content.Nav_ListContentDeal");
|
|||
|
|
extendInclude(json, "Nav_ListContent.Nav_ListContentDeal");
|
|||
|
|
extendInclude(json, "Nav_Meeting");
|
|||
|
|
extendInclude(json, "Nav_Meeting.Nav_Department");
|
|||
|
|
extendInclude(json, "Nav_Meeting.Nav_UserHost");
|
|||
|
|
extendInclude(json, "Nav_Meeting.Nav_UserRecorder");
|
|||
|
|
extendInclude(json, "Nav_ListPJoin");
|
|||
|
|
extendInclude(json, "Nav_ListPJoin.Nav_User");
|
|||
|
|
extendInclude(json, "Nav_ListPAskForLeave");
|
|||
|
|
extendInclude(json, "Nav_ListPAskForLeave.Nav_User");
|
|||
|
|
extendInclude(json, "Nav_ListPAbsence");
|
|||
|
|
extendInclude(json, "Nav_ListPAbsence.Nav_User");
|
|||
|
|
extendInclude(json, "Nav_Files.Nav_ImgFile");
|
|||
|
|
extendInclude(json, "Nav_ListMinutesDetail");
|
|||
|
|
extendInclude(json, "Nav_ListMinutesDetail.Nav_DepartmentDeal");
|
|||
|
|
extendInclude(json, "Nav_ListMinutesDetail.Nav_UserDeal");
|
|||
|
|
extendInclude(json, "Nav_ListMinutesDetail.Nav_Files.Nav_ImgFile");
|
|||
|
|
json.IgnoreDataRule = true
|
|||
|
|
GetByDetailDeal(json).then(res => {
|
|||
|
|
if (res.Nav_ListPJoin != null && res.Nav_ListPJoin.length > 0) {
|
|||
|
|
res.Nav_ListPJoin.forEach(e => e.NAME = e.Nav_User.NAME)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
this.model = res
|
|||
|
|
let ListPAskForLeaveSHOW = ''
|
|||
|
|
let ListPAbsenceShow = ''
|
|||
|
|
|
|||
|
|
if (res.Nav_ListPAskForLeave != undefined && res.Nav_ListPAskForLeave.length > 0) {
|
|||
|
|
res.Nav_ListPAskForLeave.forEach(e => {
|
|||
|
|
ListPAskForLeaveSHOW += (ListPAskForLeaveSHOW.length > 0 ? ' ' : '') + e
|
|||
|
|
.Nav_User.NAME
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (res.Nav_ListPAbsence != undefined && res.Nav_ListPAbsence.length > 0) {
|
|||
|
|
res.Nav_ListPAbsence.forEach(e => {
|
|||
|
|
ListPAbsenceShow += (ListPAbsenceShow.length > 0 ? ' ' : '') + e.Nav_User
|
|||
|
|
.NAME
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
this.model.ListPAskForLeaveSHOW = ListPAskForLeaveSHOW
|
|||
|
|
this.model.ListPAbsenceShow = ListPAbsenceShow
|
|||
|
|
|
|||
|
|
if (this.model.Nav_ListMinutesDetail != null && this.model
|
|||
|
|
.Nav_ListMinutesDetail.length > 0) {
|
|||
|
|
this.model.Nav_ListMinutesDetail.forEach(e => {
|
|||
|
|
e.listPropSubValUpload = []
|
|||
|
|
e.listPropSubValUpload.push(e.ID)
|
|||
|
|
|
|||
|
|
if (e.ISNEEDDEAL)
|
|||
|
|
e.ISNEEDDEALSHOW = '是'
|
|||
|
|
else
|
|||
|
|
e.ISNEEDDEALSHOW = '否'
|
|||
|
|
|
|||
|
|
if (e.LIMITDATETIME != null && e.LIMITDATETIME.length > 0)
|
|||
|
|
e.LIMITDATETIMESHOW = e.LIMITDATETIME.split(' ')[0]
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
this.isLoadOK = true
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
computed: {},
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<style scoped>
|
|||
|
|
@import url("../../../../style/css/editTemplate.css");
|
|||
|
|
</style>
|