¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog v-loading="diaLoading" :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | :visible.sync="formDia" |
| | | title="管çè¯å®¡è®¡å" |
| | | width="80%" @close="closeImplementDia"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-position="right" label-width="auto" style="height: 75vh;overflow-y: auto;overflow-x: hidden;"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è¯å®¡æ¶é´" prop="reviewTime"> |
| | | <el-date-picker |
| | | v-model="form.reviewTime" |
| | | :disabled="operationType === 'ratify'" |
| | | clearable |
| | | format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 100%" |
| | | type="datetime" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è¯å®¡å°ç¹" prop="judgingLocation"> |
| | | <el-input v-model="form.judgingLocation" :disabled="operationType === 'ratify'" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="è¯å®¡ç®ç" prop="judgingPurpose"> |
| | | <el-input v-model="form.judgingPurpose" :disabled="operationType === 'ratify'" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="è¯å®¡æ¹å¼" prop="judgingMethod"> |
| | | <el-input v-model="form.judgingMethod" :disabled="operationType === 'ratify'" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="åå 人å" prop="participants"> |
| | | <!-- <el-input v-model="form.participants" :disabled="operationType === 'ratify'" clearable size="small"></el-input> --> |
| | | <el-select v-model="form.participants" size="small" style="width: 100%;" filterable :disabled="operationType === 'ratify'" clearable multiple > |
| | | <el-option |
| | | v-for="item in personList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="è¯å®¡èå´" prop="judgingScope"> |
| | | <el-input v-model="form.judgingScope" :disabled="operationType === 'ratify'" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="è¯å®¡ä¾æ®" prop="judgingBasis"> |
| | | <el-input v-model="form.judgingBasis" |
| | | :disabled="operationType === 'ratify'" |
| | | :rows="3" |
| | | clearable |
| | | size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="è¯å®¡ä¸»è¦å
容" prop="mainContext"> |
| | | <el-input v-model="form.mainContext" |
| | | :disabled="operationType === 'ratify'" |
| | | :rows="3" |
| | | clearable |
| | | size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="åå¤å·¥ä½è¦æ±" prop="preparationRequirements"> |
| | | <el-input v-model="form.preparationRequirements" |
| | | :disabled="operationType === 'ratify'" |
| | | :rows="3" |
| | | clearable |
| | | size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeImplementDia">å æ¶</el-button> |
| | | <el-button v-if="operationType === 'ratify'" :loading="loading" type="primary" @click="handleApproval(1)">æ¹ å</el-button> |
| | | <el-button v-if="operationType !== 'ratify'" :loading="loading" type="primary" @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="approvalDialog" title="æ¹å" width="30%" @close="approvalDialog = false"> |
| | | <span> |
| | | æ¹å夿³¨ï¼ |
| | | <el-input v-model="qualityRemark" type="textarea"></el-input> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :loading="approvalLoading" @click="approvalDialog = false">å æ¶</el-button> |
| | | <el-button :loading="approvalLoading" type="primary" @click="handleApproval(0)">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { dateFormat } from '../../../util/date' |
| | | export default { |
| | | name: 'managementFormDIa', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | diaLoading: false, |
| | | loading: false, |
| | | form: { |
| | | id: '', |
| | | reviewTime: '', |
| | | judgingLocation: '', |
| | | judgingPurpose: '', |
| | | judgingMethod: '', |
| | | participants: [], |
| | | judgingScope: '', |
| | | judgingBasis: '', |
| | | mainContext: '', |
| | | preparationRequirements: '', |
| | | }, |
| | | rules: { |
| | | reviewTime: [{required: true, message: 'è¯·éæ©è¯å®¡æ¶é´',trigger: 'blur'}], |
| | | judgingLocation: [{required: true, message: '请填åè¯å®¡å°ç¹',trigger: 'blur'}], |
| | | judgingPurpose: [{required: true, message: '请填åè¯å®¡ç®ç',trigger: 'blur'}], |
| | | judgingMethod: [{required: true, message: '请填åè¯å®¡æ¹å¼',trigger: 'blur'}], |
| | | participants: [{required: true, message: '请填ååå 人å',trigger: 'change'}], |
| | | judgingScope: [{required: true, message: '请填åè¯å®¡èå´',trigger: 'blur'}], |
| | | judgingBasis: [{required: true, message: '请填åè¯å®¡ä¾æ®',trigger: 'blur'}], |
| | | mainContext: [{required: true, message: '请填åè¯å®¡ä¸»è¦å
容',trigger: 'blur'}], |
| | | preparationRequirements: [{required: true, message: '请填ååå¤å·¥ä½è¦æ±',trigger: 'blur'}], |
| | | }, |
| | | operationType: '', |
| | | approvalDialog: false, |
| | | approvalLoading: false, |
| | | qualityRemark: '', |
| | | personList:[], |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.getAuthorizedPerson() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æå¼å¼¹æ¡ |
| | | openDia (type, row) { |
| | | this.formDia = true |
| | | this.operationType = type |
| | | if (type !== 'add') { |
| | | this.form = row |
| | | this.form.participants = row.participants ? row.participants.split(',').map(m=>Number(m)) : [] |
| | | } |
| | | }, |
| | | // æ¥è¯¢è¯¦æ
|
| | | // searchInfo (row) { |
| | | // this.diaLoading = true |
| | | // this.$axios(this.$api.internalReport.getInternalReportOne + '?reportId=' + row.reportId).then(res => { |
| | | // this.diaLoading = false |
| | | // if (res.code === 201) return |
| | | // this.form = res.data |
| | | // }).catch(err => { |
| | | // console.log(err) |
| | | // this.diaLoading = false |
| | | // }) |
| | | // }, |
| | | // æäº¤å¼¹æ¡æ°æ® |
| | | handleEdit () { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | this.loading = true |
| | | const internalReport = this.HaveJson(this.form) |
| | | internalReport.participants = internalReport.participants.join(',') |
| | | if (this.operationType === 'add') { |
| | | this.$axios.post(this.$api.manageReviewProgram.addReviewProgram, internalReport, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeImplementDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } else if (this.operationType === 'edit') { |
| | | this.$axios.put(this.$api.manageReviewProgram.modifyReviewProgram, internalReport, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeImplementDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | // æäº¤æ¹åä¿¡æ¯ |
| | | handleApproval (qualityStatus) { |
| | | this.approvalLoading = true |
| | | const internalReport = this.HaveJson(this.form) |
| | | internalReport.approve = JSON.parse(localStorage.getItem("user")).name |
| | | internalReport.approveDate = dateFormat(new Date()) |
| | | internalReport.participants = internalReport.participants.join(',') |
| | | this.$axios.put(this.$api.manageReviewProgram.modifyReviewProgram, internalReport, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('æäº¤æåï¼'); |
| | | this.approvalDialog = false |
| | | this.closeImplementDia(this.departId); |
| | | } |
| | | this.approvalLoading = false |
| | | }).catch(() => { |
| | | this.approvalLoading = false |
| | | }) |
| | | }, |
| | | closeImplementDia () { |
| | | this.$refs.form.resetFields(); |
| | | this.formDia = false |
| | | this.$emit('closeImplementDia') |
| | | }, |
| | | getAuthorizedPerson() { |
| | | this.$axios.get(this.$api.user.getUserMenu).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id |
| | | }) |
| | | }) |
| | | this.personList = data |
| | | }) |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | >>>.el-dialog { |
| | | margin: 6vh auto 50px !important; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">è¯å®¡å°ç¹ï¼</span> |
| | | <el-input v-model="searchForm.judgingLocation" clearable size="small"></el-input> |
| | | <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="medium" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="medium" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | <div class="table"> |
| | | <ZTTable |
| | | :column="tableColumn" |
| | | :height="'calc(100vh - 20em)'" |
| | | :table-data="tableData" |
| | | :table-loading="tableLoading" |
| | | style="padding: 0 10px;margin-bottom: 16px"> |
| | | </ZTTable> |
| | | <el-pagination :current-page="1" :page-size="page.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </div> |
| | | <management-form-d-ia v-if="managementFormDIa" ref="managementFormDIa" @closeImplementDia="closeImplementDia"></management-form-d-ia> |
| | | <el-dialog :visible.sync="listDialogVisible" top="15vh" |
| | | title="æä»¶æ¥ç" |
| | | width="400px"> |
| | | <div style="max-height:60vh;overflow-y: auto;"> |
| | | <p v-for="(item,index) in fileList" :key="index"> |
| | | <span>{{ item.fileName }}</span> |
| | | <el-button size="small" type="text" icon="el-icon-view" @click="lookFile(item.url,item.fileName)" style="margin-left: 20px;">é¢è§</el-button> |
| | | <el-button size="small" type="text" icon="el-icon-bottom" @click="handleDown0(item.url,item.fileName)" style="margin-left: 20px;">ä¸è½½</el-button> |
| | | </p> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog |
| | | title="æ¥çéä»¶" |
| | | :visible.sync="lookDialogVisible" |
| | | width="800px" top="5vh" fullscreen> |
| | | <filePreview v-if="lookDialogVisible" :fileUrl="javaApi+'/word/'+currentInfo.url" |
| | | :currentFile="{}" style="height: 90vh;overflow-y: auto;"/> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ZTTable from '../../caorui/ZTTable/index.vue'; |
| | | import ManagementFormDIa from './managementFormDIa.vue'; |
| | | import filePreview from '../../tool/file-preview.vue' |
| | | |
| | | export default { |
| | | name: 'managementReviewPlan', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { ManagementFormDIa, ZTTable,filePreview }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | judgingLocation: '', |
| | | }, |
| | | listDialogVisible:false, |
| | | lookDialogVisible:false, |
| | | fileList:[], |
| | | currentInfo:{}, |
| | | tableColumn: [ |
| | | { |
| | | label: 'è¯å®¡æ¶é´', |
| | | prop: 'reviewTime', |
| | | }, |
| | | { |
| | | label: 'è¯å®¡å°ç¹', |
| | | prop: 'judgingLocation', |
| | | }, |
| | | { |
| | | label: 'è¯å®¡ç®ç', |
| | | prop: 'judgingPurpose', |
| | | }, |
| | | { |
| | | label: 'è¯å®¡æ¹å¼', |
| | | prop: 'judgingMethod', |
| | | }, |
| | | { |
| | | label: 'è¯å®¡èå´', |
| | | prop: 'judgingScope', |
| | | }, |
| | | // { |
| | | // dataType: 'tag', |
| | | // label: 'æ¹åç¶æ', |
| | | // prop: 'approve', |
| | | // minWidth: '100', |
| | | // formatData: (params) => { |
| | | // if (params === 0) { |
| | | // return 'ä¸éè¿'; |
| | | // } else if (params === 1) { |
| | | // return 'éè¿'; |
| | | // } else { |
| | | // return null; |
| | | // } |
| | | // }, |
| | | // formatType: (params) => { |
| | | // if (params === 0) { |
| | | // return 'danger'; |
| | | // } else if (params === 1) { |
| | | // return 'success'; |
| | | // } else { |
| | | // return null; |
| | | // } |
| | | // } |
| | | // }, |
| | | { |
| | | dataType: 'action', |
| | | minWidth: '110', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('edit', row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.approve |
| | | }, |
| | | }, |
| | | { |
| | | name: 'ä¸ä¼ ', |
| | | type: 'upload', |
| | | multiple:true, |
| | | limit:20, |
| | | accept:'.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.pdf', |
| | | clickFun: async (row,file, fileList) => { |
| | | const formData = new FormData(); |
| | | formData.append('file',file.raw); // æä»¶å段 |
| | | formData.append('id', row.id); // æä»¶ååæ®µ |
| | | let res = await this.$axios.post(this.$api.manageReviewProgram.addReviewProgramFile, formData,{ |
| | | headers: { |
| | | 'Content-Type': 'multipart/form-data;' |
| | | }, |
| | | noQs: true |
| | | }) |
| | | if(res.code==200){ |
| | | this.$message({ message: 'ä¸ä¼ æå', type: 'success' }); |
| | | // this.searchList() |
| | | return |
| | | }else{ |
| | | this.$message({ message: 'ä¸ä¼ 失败', type: 'error' }); |
| | | return |
| | | } |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.approve |
| | | }, |
| | | }, |
| | | { |
| | | name: 'æ¥çéä»¶', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.$axios.get(this.$api.manageReviewProgram.selectReviewProgramFile + '?id='+row.id).then(res => { |
| | | this.listDialogVisible = true; |
| | | this.fileList = res.data.fileList |
| | | }); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'æ¹å', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('ratify', row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.approve |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delPlan(row) |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.qualityStatus === 1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: 'ä¸è½½', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row) |
| | | } |
| | | }, |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | }, |
| | | total: 0, |
| | | managementFormDIa: false, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList () { |
| | | this.tableLoading = true |
| | | this.$axios.get(this.$api.manageReviewProgram.getPageReviewProgram + '?judgingLocation=' + this.searchForm.judgingLocation + '&pages=' + this.page.current + '&size=' + this.page.size).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data.records |
| | | this.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // æ°å¢ï¼ç¼è¾ï¼æ¹åå¼¹æ¡ |
| | | openFormDia (type, row) { |
| | | this. managementFormDIa = true |
| | | this.$nextTick(() => { |
| | | this.$refs. managementFormDIa.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeImplementDia () { |
| | | this. managementFormDIa = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm () { |
| | | this.searchForm.judgingLocation = ''; |
| | | this.searchList() |
| | | }, |
| | | // å é¤ |
| | | delPlan (row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | this.$axios.delete(this.$api.manageReviewProgram.deleteReviewProgram + '?id=' + row.id).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // å页 |
| | | handleSizeChange(val) { |
| | | this.page.size = val; |
| | | this.searchList(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.page.current = val; |
| | | this.searchList(); |
| | | }, |
| | | handleDown(row){ |
| | | this.$axios.post(this.$api.manageReviewProgram.exportReviewProgram,{id:row.id},{responseType: "blob"}).then(res => { |
| | | if(res.code == 201){ |
| | | this.$message.error(res.message) |
| | | return |
| | | } |
| | | this.$message.success('ä¸è½½æå') |
| | | const blob = new Blob([res],{ type: 'application/octet-stream' }); |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'è¯å®¡è®¡å.docx'; |
| | | link.click(); |
| | | }) |
| | | }, |
| | | lookFile(url,name){ |
| | | this.currentInfo.url = url |
| | | this.currentInfo.name = name |
| | | this.lookDialogVisible = true |
| | | }, |
| | | handleDown0(url,name){ |
| | | if(!url) return this.$message.warning('æä»¶æªä¸ä¼ ') |
| | | let url0 = this.javaApi+'/word/'+url |
| | | const link = document.createElement('a'); |
| | | link.href = url0; |
| | | link.target = '_blank'; |
| | | link.click(); |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">ä¼è®®å°ç¹ï¼</span> |
| | | <el-input v-model="searchForm.place" clearable size="small"></el-input> |
| | | <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="medium" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="medium" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | <div class="table"> |
| | | <ZTTable |
| | | :column="tableColumn" |
| | | :height="'calc(100vh - 20em)'" |
| | | :table-data="tableData" |
| | | :table-loading="tableLoading" |
| | | style="padding: 0 10px;margin-bottom: 16px"> |
| | | </ZTTable> |
| | | <el-pagination :current-page="1" :page-size="page.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </div> |
| | | <meeting-records-dia v-if="meetingRecordsDia" ref="meetingRecordsDia" @closeYearDia="closeYearDia"></meeting-records-dia> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ZTTable from '../../caorui/ZTTable/index.vue'; |
| | | import MeetingRecordsDia from './meetingRecordsDia.vue'; |
| | | import ManagementFormDIa from './managementFormDIa.vue'; |
| | | |
| | | export default { |
| | | name: 'meetingRecords', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { ManagementFormDIa, MeetingRecordsDia, ZTTable }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | place: '', |
| | | }, |
| | | tableColumn: [ |
| | | { |
| | | label: 'æ¶é´', |
| | | prop: 'meetingTime', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: '主æäºº', |
| | | prop: 'compere', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'ä¼è®®å°ç¹', |
| | | prop: 'place', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'ä¼è®®å
容æè¦', |
| | | prop: 'content', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | minWidth: '120', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('edit', row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delPlan(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'ä¸è½½', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row) |
| | | } |
| | | }, |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | }, |
| | | total: 0, |
| | | meetingRecordsDia: false |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList () { |
| | | this.tableLoading = true |
| | | this.$axios.get(this.$api.manageMeeting.getPageMeeting + '?place=' + this.searchForm.place + '&pages=' + this.page.current + '&size=' + this.page.size).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data.records |
| | | this.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // æ°å¢ï¼ç¼è¾å¼¹æ¡ |
| | | openFormDia (type, row) { |
| | | this. meetingRecordsDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs. meetingRecordsDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeYearDia () { |
| | | this. meetingRecordsDia = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm () { |
| | | this.searchForm.place = ''; |
| | | this.searchList() |
| | | }, |
| | | // å é¤ |
| | | delPlan (row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | this.$axios.delete(this.$api.manageMeeting.deleteMeeting + '?id=' + row.id).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // å页 |
| | | handleSizeChange(val) { |
| | | this.page.size = val; |
| | | this.searchList(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.page.current = val; |
| | | this.searchList(); |
| | | }, |
| | | handleDown(row){ |
| | | this.$axios.post(this.$api.manageMeeting.exportMeeting,{id:row.id},{responseType: "blob"}).then(res => { |
| | | if(res.code == 201){ |
| | | this.$message.error(res.message) |
| | | return |
| | | } |
| | | this.$message.success('ä¸è½½æå') |
| | | const blob = new Blob([res],{ type: 'application/octet-stream' }); |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'ä¼è®®è®°å½.docx'; |
| | | link.click(); |
| | | }) |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog v-loading="diaLoading" :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | :visible.sync="formDia" |
| | | title="管çè¯å®¡ä¼è®®è®°å½" |
| | | width="1000px" @close="closeYearDia"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-position="top" label-width="auto"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ¶é´" prop="meetingTime"> |
| | | <el-date-picker |
| | | v-model="form.meetingTime" |
| | | clearable |
| | | format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 100%" |
| | | type="datetime" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å°ç¹" prop="place"> |
| | | <el-input v-model="form.place" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="主æäºº" prop="compere"> |
| | | <el-input v-model="form.compere" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¼è®®å
容æè¦" prop="content"> |
| | | <el-input v-model="form.content" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="åä¼äººå" prop="participant"> |
| | | <el-select v-model="form.participant" |
| | | clearable |
| | | filterable |
| | | multiple |
| | | placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%;"> |
| | | <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeYearDia">å æ¶</el-button> |
| | | <el-button :loading="loading" type="primary" @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'meetingRecordsDia', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | diaLoading: false, |
| | | loading: false, |
| | | form: { |
| | | id: '', |
| | | meetingTime: '', |
| | | compere: '', |
| | | place: '', |
| | | content: '', |
| | | participant: [], |
| | | }, |
| | | rules: { |
| | | meetingTime: [{required: true, message: '请填åä¼è®®æ¶é´',trigger: 'blur'}], |
| | | compere: [{required: true, message: '请填å主æäºº',trigger: 'blur'}], |
| | | place: [{required: true, message: '请填åå°ç¹',trigger: 'blur'}], |
| | | content: [{required: true, message: '请填åä¼è®®å
容æè¦',trigger: 'blur'}], |
| | | participant: [{required: true, message: 'è¯·éæ©åå 人å',trigger: 'change'}], |
| | | }, |
| | | operationType: '', |
| | | personList: [] |
| | | }; |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æå¼å¼¹æ¡ |
| | | openDia (type, row) { |
| | | this.operationType = type |
| | | this.getAuthorizedPerson() |
| | | if (type !== 'add') { |
| | | this.form = row |
| | | this.form.participant = row.participant.split(',').map(a => { |
| | | a = Number(a) |
| | | return a |
| | | }) |
| | | } |
| | | this.formDia = true |
| | | }, |
| | | // æäº¤å¼¹æ¡æ°æ® |
| | | handleEdit () { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | this.loading = true |
| | | const internalMeeting = this.HaveJson(this.form) |
| | | internalMeeting.participant = internalMeeting.participant.join(',') |
| | | if (this.operationType === 'add') { |
| | | this.$axios.post(this.$api.manageMeeting.addMeeting, internalMeeting, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeYearDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } else if (this.operationType === 'edit') { |
| | | this.$axios.put(this.$api.manageMeeting.modifyMeeting, internalMeeting, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeYearDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | closeYearDia () { |
| | | this.$refs.form.resetFields(); |
| | | this.formDia = false |
| | | this.$emit('closeYearDia') |
| | | }, |
| | | getAuthorizedPerson() { |
| | | this.$axios.get(this.$api.user.getUserMenu).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id |
| | | }) |
| | | }) |
| | | this.personList = data |
| | | }) |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">å°ç¹ï¼</span> |
| | | <el-input v-model="searchForm.place" clearable size="small"></el-input> |
| | | <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="medium" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="medium" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | <div class="table"> |
| | | <ZTTable |
| | | :column="tableColumn" |
| | | :height="'calc(100vh - 20em)'" |
| | | :table-data="tableData" |
| | | :table-loading="tableLoading" |
| | | style="padding: 0 10px;margin-bottom: 16px"> |
| | | </ZTTable> |
| | | <el-pagination :current-page="1" :page-size="page.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </div> |
| | | <review-report-dia v-if="reviewReportDia" ref="reviewReportDia" @closeYearDia="closeYearDia"></review-report-dia> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ZTTable from '../../caorui/ZTTable/index.vue'; |
| | | import ReviewReportDia from './reviewReportDia.vue'; |
| | | |
| | | export default { |
| | | name: 'reviewReport', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { ReviewReportDia, ZTTable }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | place: '', |
| | | }, |
| | | tableColumn: [ |
| | | { |
| | | label: 'ç®ç', |
| | | prop: 'objective', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å°ç¹', |
| | | prop: 'place', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: '主æäºº', |
| | | prop: 'compere', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'è®°å½äºº', |
| | | prop: 'recordPeople', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'æ¥æ', |
| | | prop: 'date', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: '页次', |
| | | prop: 'page', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'è¯å®¡æ¹å¼', |
| | | prop: 'judgingMethod', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'è¯å®¡ä¾æ®', |
| | | prop: 'reviewBasis', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | minWidth: '160', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('edit', row); |
| | | }, |
| | | disabled:(row)=>{ |
| | | return !!row.audit||!!row.approval |
| | | } |
| | | }, |
| | | { |
| | | name: 'å®¡æ ¸', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.$confirm('ç¡®å®å®¡æ ¸éè¿?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.submit('audit',row) |
| | | }).catch(() => { |
| | | }); |
| | | }, |
| | | disabled:(row)=>{ |
| | | return !!row.audit |
| | | } |
| | | }, |
| | | { |
| | | name: 'æ¹å', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.$confirm('ç¡®å®æ¹åéè¿?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.submit('approval',row) |
| | | }).catch(() => { |
| | | }); |
| | | }, |
| | | disabled:(row)=>{ |
| | | return !row.audit||!!row.approval |
| | | } |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delPlan(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'ä¸è½½', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row) |
| | | } |
| | | }, |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | }, |
| | | total: 0, |
| | | reviewReportDia: false, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList () { |
| | | this.tableLoading = true |
| | | this.$axios.get(this.$api.manageReviewReport.getPageReviewReport + '?place=' + this.searchForm.place + '&pages=' + this.page.current + '&size=' + this.page.size).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data.records |
| | | this.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // æ°å¢ï¼ç¼è¾å¼¹æ¡ |
| | | openFormDia (type, row) { |
| | | this. reviewReportDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs. reviewReportDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeYearDia () { |
| | | this. reviewReportDia = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm () { |
| | | this.searchForm.place = ''; |
| | | this.searchList() |
| | | }, |
| | | // å é¤ |
| | | delPlan (row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | this.$axios.delete(this.$api.manageReviewReport.deleteReviewReport + '?id=' + row.id).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // å页 |
| | | handleSizeChange(val) { |
| | | this.page.size = val; |
| | | this.searchList(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.page.current = val; |
| | | this.searchList(); |
| | | }, |
| | | handleDown(row){ |
| | | this.$axios.post(this.$api.manageReviewReport.exportReviewReport,{id:row.id},{responseType: "blob"}).then(res => { |
| | | if(res.code == 201){ |
| | | this.$message.error(res.message) |
| | | return |
| | | } |
| | | this.$message.success('ä¸è½½æå') |
| | | const blob = new Blob([res],{ type: 'application/octet-stream' }); |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'è¯å®¡æ¥å.docx'; |
| | | link.click(); |
| | | }) |
| | | }, |
| | | submit(type,row){ |
| | | let obj = row |
| | | obj[type] = JSON.parse(localStorage.getItem("user")).name; |
| | | this.$axios.put(this.$api.manageReviewReport.modifyReviewReport, obj, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.searchList() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | }) |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog v-loading="diaLoading" :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | :visible.sync="formDia" |
| | | title="管çè¯å®¡ä¼è®®è®°å½" |
| | | width="1000px" @close="closeYearDia"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-position="top" label-width="auto" style="height: 75vh;overflow-y: auto;overflow-x: hidden;"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ç®ç" prop="objective"> |
| | | <el-input v-model="form.objective" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å°ç¹" prop="place"> |
| | | <el-input v-model="form.place" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="主æäºº" prop="compere"> |
| | | <el-input v-model="form.compere" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è®°å½äºº" prop="recordPeople"> |
| | | <el-input v-model="form.recordPeople" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ¥æ" prop="date"> |
| | | <el-date-picker |
| | | v-model="form.date" |
| | | clearable |
| | | format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 100%" |
| | | type="datetime" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="页次" prop="page"> |
| | | <el-input v-model="form.page" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è¯å®¡æ¹å¼" prop="judgingMethod"> |
| | | <el-input v-model="form.judgingMethod" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è¯å®¡ä¾æ®" prop="reviewBasis"> |
| | | <el-input v-model="form.reviewBasis" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="åºå¸äººå" prop="attendess"> |
| | | <!-- <el-input v-model="form.attendess " clearable size="small"></el-input> --> |
| | | <el-select v-model="form.attendess" size="small" style="width: 100%;" filterable clearable multiple > |
| | | <el-option |
| | | v-for="item in personList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="è¯å®¡è¾å
¥æ
åµ" prop="reviewInputs"> |
| | | <el-input v-model="form.reviewInputs" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="è¯å®¡è¿ç¨æ¦åµ" prop="reviewProcess"> |
| | | <el-input v-model="form.reviewProcess" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="主è¦è®®é¢æ¦è¿°" prop="mainTopic"> |
| | | <el-input v-model="form.mainTopic" |
| | | :rows="5" |
| | | clearable |
| | | placeholder="请è¾å
¥å
容ï¼å¯è¾å
¥å åå" |
| | | size="small" |
| | | type="textarea"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="äºé¡¹" prop="matters"> |
| | | <el-input v-model="form.matters" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="è´è´£äºº" prop="head"> |
| | | <el-input v-model="form.head" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å®ææ¥æ" prop="completionDate"> |
| | | <el-date-picker |
| | | v-model="form.completionDate" |
| | | clearable |
| | | format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 100%" |
| | | type="datetime" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="è·è¸ªç¡®è®¤äºº" prop="trackingConfirmed"> |
| | | <el-input v-model="form.trackingConfirmed" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="è·è¸ªæ
åµç¡®è®¤è®°å½" prop="follerUp"> |
| | | <el-input v-model="form.follerUp" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="ä½ç³»è¯ä»·" prop="overallEvaluation"> |
| | | <el-input v-model="form.overallEvaluation" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeYearDia">å æ¶</el-button> |
| | | <el-button :loading="loading" type="primary" @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'reviewReportDia', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | diaLoading: false, |
| | | loading: false, |
| | | form: { |
| | | id: '', |
| | | objective: '', |
| | | place: '', |
| | | compere: '', |
| | | recordPeople: '', |
| | | date: '', |
| | | page: '', |
| | | judgingMethod: '', |
| | | reviewBasis: '', |
| | | attendess : [], |
| | | reviewInputs : '', |
| | | reviewProcess : '', |
| | | mainTopic : '', |
| | | matters : '', |
| | | head : '', |
| | | completionDate : '', |
| | | trackingConfirmed : '', |
| | | follerUp : '', |
| | | overallEvaluation : '', |
| | | }, |
| | | rules: { |
| | | objective: [{required: true, message: '请填åç®ç',trigger: 'blur'}], |
| | | place: [{required: true, message: '请填åå°ç¹',trigger: 'blur'}], |
| | | compere: [{required: true, message: '请填å主æäºº',trigger: 'blur'}], |
| | | recordPeople: [{required: true, message: '请填åè®°å½äºº',trigger: 'blur'}], |
| | | date: [{required: true, message: 'è¯·éæ©æ¥æ',trigger: 'change'}], |
| | | completionDate: [{required: true, message: 'è¯·éæ©å®ææ¥æ',trigger: 'change'}], |
| | | page: [{required: true, message: '请填å页次',trigger: 'blur'}], |
| | | judgingMethod: [{required: true, message: '请填åè¯å®¡æ¹å¼',trigger: 'blur'}], |
| | | reviewBasis: [{required: true, message: '请填åè¯å®¡ä¾æ®',trigger: 'blur'}], |
| | | attendess : [{required: true, message: '请填ååºå¸äººå',trigger: 'change'}], |
| | | reviewInputs : [{required: true, message: '请填åè¯å®¡è¾å
¥æ
åµ',trigger: 'blur'}], |
| | | reviewProcess : [{required: true, message: '请填åè¯å®¡è¾å
¥æ
åµ',trigger: 'blur'}], |
| | | mainTopic : [{required: true, message: '请填å主è¦è®®é¢æ¦è¿°',trigger: 'blur'}], |
| | | matters : [{required: true, message: '请填å主è¦è®®é¢æ¦è¿°',trigger: 'blur'}], |
| | | head : [{required: true, message: '请填åè´è´£äºº',trigger: 'blur'}], |
| | | trackingConfirmed : [{required: true, message: '请填åè·è¸ªç¡®è®¤äºº',trigger: 'blur'}], |
| | | follerUp : [{required: true, message: '请填åè·è¸ªç¡®è®¤äºº',trigger: 'blur'}], |
| | | overallEvaluation : [{required: true, message: '请填åä½ç³»è¯ä»·',trigger: 'blur'}], |
| | | }, |
| | | operationType: '', |
| | | personList: [] |
| | | }; |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æå¼å¼¹æ¡ |
| | | openDia (type, row) { |
| | | this.formDia = true |
| | | this.operationType = type |
| | | this.getAuthorizedPerson() |
| | | if (type !== 'add') { |
| | | this.form = row |
| | | this.form.attendess = this.form.attendess?this.form.attendess.split(',').map(m=>Number(m)):[] |
| | | } |
| | | }, |
| | | // æäº¤å¼¹æ¡æ°æ® |
| | | handleEdit () { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | this.loading = true |
| | | const internalMeeting = this.HaveJson(this.form) |
| | | internalMeeting.attendess = internalMeeting.attendess?internalMeeting.attendess.join(','):'' |
| | | if (this.operationType === 'add') { |
| | | this.$axios.post(this.$api.manageReviewReport.addReviewReport, internalMeeting, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeYearDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } else if (this.operationType === 'edit') { |
| | | this.$axios.put(this.$api.manageReviewReport.modifyReviewReport, internalMeeting, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeYearDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | closeYearDia () { |
| | | this.$refs.form.resetFields(); |
| | | this.formDia = false |
| | | this.$emit('closeYearDia') |
| | | }, |
| | | getAuthorizedPerson() { |
| | | this.$axios.get(this.$api.user.getUserMenu).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id |
| | | }) |
| | | }) |
| | | this.personList = data |
| | | }) |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | >>>.el-dialog { |
| | | margin: 4vh auto 50px !important; |
| | | } |
| | | >>>.el-dialog__body { |
| | | max-height: 600px; |
| | | overflow-y: auto; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="main"> |
| | | <el-tabs v-model="activeName" class="tab-panel" type="border-card"> |
| | | <el-tab-pane label="管çè¯å®¡è®¡å" name="yearPlan"> |
| | | <management-review-plan></management-review-plan> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="ä¼è®®è®°å½" name="implementationPlan"> |
| | | <meeting-records></meeting-records> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="è¯å®¡æ¥å" name="meetingSignIn"> |
| | | <review-report></review-report> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ManagementReviewPlan from '../do/a9-management-review/managementReviewPlan.vue'; |
| | | import MeetingRecords from '../do/a9-management-review/meetingRecords.vue'; |
| | | import ReviewReport from '../do/a9-management-review/reviewReport.vue'; |
| | | |
| | | export default { |
| | | name: 'a9-management-review', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { ReviewReport, MeetingRecords, ManagementReviewPlan}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | activeName: 'yearPlan', |
| | | }; |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: {} |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .main { |
| | | padding: 15px 0; |
| | | } |
| | | .tab-panel { |
| | | background: #fff; |
| | | } |
| | | </style> |