5 changed files with 248 additions and 82 deletions
			
			
		@ -1,69 +0,0 @@ | 
				
			|||||
<template> | 
					 | 
				
			||||
    <!-- 确认模板 --> | 
					 | 
				
			||||
    <div class=''> | 
					 | 
				
			||||
        <el-dialog title="模板确认" :visible.sync="showTemplate" width="50%" :close-on-click-modal="false"> | 
					 | 
				
			||||
            <div id="luckysheet"></div> | 
					 | 
				
			||||
            <span slot="footer" class="dialog-footer"> | 
					 | 
				
			||||
                <el-button @click="handleCancel">取 消</el-button> | 
					 | 
				
			||||
                <el-button type="primary" @click="handleConfirm">确 定</el-button> | 
					 | 
				
			||||
            </span> | 
					 | 
				
			||||
        </el-dialog> | 
					 | 
				
			||||
    </div> | 
					 | 
				
			||||
</template> | 
					 | 
				
			||||
 | 
					 | 
				
			||||
<script> | 
					 | 
				
			||||
import options from "@/utils/luckysheetConfig.js"; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
export default { | 
					 | 
				
			||||
    data() { | 
					 | 
				
			||||
        return {}; | 
					 | 
				
			||||
    }, | 
					 | 
				
			||||
    created() { }, | 
					 | 
				
			||||
    methods: { | 
					 | 
				
			||||
        handleCancel(){ | 
					 | 
				
			||||
            this.$emit('handelHideTemplate') | 
					 | 
				
			||||
        }, | 
					 | 
				
			||||
        handleConfirm(){ | 
					 | 
				
			||||
            this.$emit('saveLuckysheetJson',this.exportJson) | 
					 | 
				
			||||
        } | 
					 | 
				
			||||
    }, | 
					 | 
				
			||||
    mounted() { | 
					 | 
				
			||||
        console.log(this.fileUrl, 'fileUrl==='); | 
					 | 
				
			||||
        this.urlToFile('http://localhost:9001/epmet-work-pc/test1.xlsx',this.fileName) | 
					 | 
				
			||||
        this.$nextTick(() => { | 
					 | 
				
			||||
            window.luckysheet.destroy(); | 
					 | 
				
			||||
            options.title = '模板确认' | 
					 | 
				
			||||
            window.luckysheet.create({ | 
					 | 
				
			||||
                ...options, | 
					 | 
				
			||||
                hook: { | 
					 | 
				
			||||
                    cellEditBefore: this.handleCellEditBefore, | 
					 | 
				
			||||
                }, | 
					 | 
				
			||||
            }); | 
					 | 
				
			||||
        }) | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    }, | 
					 | 
				
			||||
    props: { | 
					 | 
				
			||||
        showTemplate: { | 
					 | 
				
			||||
            type: Boolean, | 
					 | 
				
			||||
            default: false | 
					 | 
				
			||||
        }, | 
					 | 
				
			||||
        fileUrl: { | 
					 | 
				
			||||
            type: String, | 
					 | 
				
			||||
            default: '' | 
					 | 
				
			||||
        }, | 
					 | 
				
			||||
        fileName: { | 
					 | 
				
			||||
            type: String, | 
					 | 
				
			||||
            default: '' | 
					 | 
				
			||||
        }, | 
					 | 
				
			||||
    }, | 
					 | 
				
			||||
    components: {}, | 
					 | 
				
			||||
    computed: {}, | 
					 | 
				
			||||
    watch: {}, | 
					 | 
				
			||||
} | 
					 | 
				
			||||
</script> | 
					 | 
				
			||||
 | 
					 | 
				
			||||
<style lang='scss' scoped> | 
					 | 
				
			||||
#luckysheet { | 
					 | 
				
			||||
    height: 500px; | 
					 | 
				
			||||
} | 
					 | 
				
			||||
</style> | 
					 | 
				
			||||
@ -0,0 +1,208 @@ | 
				
			|||||
 | 
					<template> | 
				
			||||
 | 
					    <div style="position:relative;"> | 
				
			||||
 | 
					        <el-form v-if="showType=='adjust'" ref="form" label-position="left" :model="formData" label-width="150px" | 
				
			||||
 | 
					            style="margin-left: 3%; margin-top: 10px;"> | 
				
			||||
 | 
					            <el-row> | 
				
			||||
 | 
					                <el-col :span="24"> | 
				
			||||
 | 
					                    <el-form-item label="选择接受人员"> | 
				
			||||
 | 
					                        <el-cascader class="u-item-width-normal" size="small" ref="myCascader" v-model="cascaderAgencyId" | 
				
			||||
 | 
					                        @change="handleChangeAgency" :options="orgOptions" :props="orgOptionProps" | 
				
			||||
 | 
					                        :show-all-levels="false" clearable></el-cascader> | 
				
			||||
 | 
					                        <el-select v-model.trim="formData.receiverIds" placeholder="请选择" size="small" clearable | 
				
			||||
 | 
					                        class="cell-width-1" collapse-tags style="margin-left: 10px;" | 
				
			||||
 | 
					                        @change="changeTag" c> | 
				
			||||
 | 
					                        <el-option v-for="item in workPersonnelList" :key="item.value" :label="item.name" | 
				
			||||
 | 
					                            :value="item.staffId"> | 
				
			||||
 | 
					                        </el-option> | 
				
			||||
 | 
					                    </el-select> | 
				
			||||
 | 
					                    </el-form-item> | 
				
			||||
 | 
					                </el-col> | 
				
			||||
 | 
					                <el-col :span="24"> | 
				
			||||
 | 
					                    <el-form-item :label="`已选(${selfTag.length})人`"> | 
				
			||||
 | 
					                        <div> | 
				
			||||
 | 
					                            <el-tag v-for="tag in selfTag" :key="tag.staffId" closable @close="removeTag(tag)" | 
				
			||||
 | 
					                                style="margin-right: 10px;"> | 
				
			||||
 | 
					                                <span> {{ tag.name }}</span> | 
				
			||||
 | 
					                            </el-tag> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					                    </el-form-item> | 
				
			||||
 | 
					                </el-col> | 
				
			||||
 | 
					            </el-row> | 
				
			||||
 | 
					        </el-form> | 
				
			||||
 | 
					        <el-table v-if="showType=='info'" :data="tableData" border class="m-table-item" style="width: 80%;" :height="maxTableHeight"  > | 
				
			||||
 | 
					          <el-table-column label="序号" fixed="left" type="index" align="center" width="80" /> | 
				
			||||
 | 
					          <el-table-column prop="renwu" align="center" :show-overflow-tooltip="true" label="第一接收人"> | 
				
			||||
 | 
					          </el-table-column> | 
				
			||||
 | 
					          <el-table-column prop="renwu" align="center" :show-overflow-tooltip="true" label="转派给"> | 
				
			||||
 | 
					        </el-table-column> | 
				
			||||
 | 
					        </el-table> | 
				
			||||
 | 
					        <el-form v-if="showType=='edit'" ref="formData " label-position="left" :model="formData" label-width="150px" | 
				
			||||
 | 
					            style="margin-left: 3%; margin-top: 10px;"> | 
				
			||||
 | 
					            <el-row> | 
				
			||||
 | 
					                <el-form-item prop="taskTitle" label="任务主题"> | 
				
			||||
 | 
					                    <el-input v-model="formData.taskTitle" placeholder="请输入内容" clearable class="cell-width-1"></el-input> | 
				
			||||
 | 
					                </el-form-item> | 
				
			||||
 | 
					                <el-form-item label="任务要求" prop="taskIntroduction" style="display: block"> | 
				
			||||
 | 
					                    <el-input class="cell-width-2" type="textarea" maxlength="500" show-word-limit :rows="5" | 
				
			||||
 | 
					                        placeholder="请输入事件内容,不超过500字" v-model.trim="formData.taskIntroduction"></el-input> | 
				
			||||
 | 
					                </el-form-item> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            </el-row> | 
				
			||||
 | 
					        </el-form> | 
				
			||||
 | 
					        <span v-if="showType=='adjust'||showType=='edit'" slot="footer" class="dialog-footer" style="margin-left: 40%;"> | 
				
			||||
 | 
					            <el-button @click="handleCancel">取 消</el-button> | 
				
			||||
 | 
					            <el-button type="primary" @click="handleConfirm">确 定</el-button> | 
				
			||||
 | 
					        </span> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					</template> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<script> | 
				
			||||
 | 
					import options from "@/utils/luckysheetConfig.js"; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default { | 
				
			||||
 | 
					    data() { | 
				
			||||
 | 
					        return { | 
				
			||||
 | 
					            tableData:[], | 
				
			||||
 | 
					            formData:{ | 
				
			||||
 | 
					                taskTitle: '',//任务主题 | 
				
			||||
 | 
					                taskType: '1',//任务类型 | 
				
			||||
 | 
					                taskPeriod: 'once',//任务周期 | 
				
			||||
 | 
					                completeLimitDay: '',//完成时限 一次性时传日期,周期性时传天数 | 
				
			||||
 | 
					                completeLimitHour: '',//完成时限 周期或者一次性都传小时 | 
				
			||||
 | 
					                receiverIds: '',//分发人员 | 
				
			||||
 | 
					                moduleUrl: '',//上传模板 | 
				
			||||
 | 
					                taskIntroduction: '',//任务要求 | 
				
			||||
 | 
					                wordBookId:''//工作簿id | 
				
			||||
 | 
					            }, | 
				
			||||
 | 
					            workPersonnelList: [], | 
				
			||||
 | 
					            cascaderAgencyId:"", | 
				
			||||
 | 
					            orgOptions: [], | 
				
			||||
 | 
					            orgOptionProps: { | 
				
			||||
 | 
					                multiple: false, | 
				
			||||
 | 
					                value: 'agencyId', | 
				
			||||
 | 
					                label: 'agencyName', | 
				
			||||
 | 
					                children: 'subAgencyList', | 
				
			||||
 | 
					                checkStrictly: true | 
				
			||||
 | 
					            }, | 
				
			||||
 | 
					            selfTag: [], | 
				
			||||
 | 
					            sarr:[], | 
				
			||||
 | 
					            agencyId: '', | 
				
			||||
 | 
					            agencylevel: '', | 
				
			||||
 | 
					            showType:"", | 
				
			||||
 | 
					        }; | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    created() { }, | 
				
			||||
 | 
					    methods: { | 
				
			||||
 | 
					        getLastItem(list, vals, key) { | 
				
			||||
 | 
					            let LIST = list || []; | 
				
			||||
 | 
					            for (let item of LIST) { | 
				
			||||
 | 
					                for (let i of vals) { | 
				
			||||
 | 
					                    if (item[key] === i) { | 
				
			||||
 | 
					                        this.sarr.push(item); | 
				
			||||
 | 
					                    } else { | 
				
			||||
 | 
					                        this.getLastItem(item.subAgencyList, vals, key); | 
				
			||||
 | 
					                    } | 
				
			||||
 | 
					                } | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					        removeTag(val) { | 
				
			||||
 | 
					            this.selfTag = this.selfTag.filter(item => item.staffId!=val.staffId); | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					        changeTag(val) { | 
				
			||||
 | 
					            let obj = this.workPersonnelList.find(item => item.staffId === val); | 
				
			||||
 | 
					            obj.agencyId = this.agencyId | 
				
			||||
 | 
					            if (obj) { | 
				
			||||
 | 
					                let exists = this.selfTag.some(tag => tag.agencyId === obj.agencyId); | 
				
			||||
 | 
					                    this.selfTag.push(obj); | 
				
			||||
 | 
					               | 
				
			||||
 | 
					            } else { | 
				
			||||
 | 
					                console.error('未找到对应的人员信息'); | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					        getStafflist() { | 
				
			||||
 | 
					            let parms = { | 
				
			||||
 | 
					                orgId: this.agencyId, | 
				
			||||
 | 
					                orgType: 'agency', | 
				
			||||
 | 
					                pageNo: 1, | 
				
			||||
 | 
					                pageSize: 100, | 
				
			||||
 | 
					            }; | 
				
			||||
 | 
					            this.$http.post("data/aggregator/org/stafflist", parms).then((resp) => { | 
				
			||||
 | 
					                this.workPersonnelList = resp.data.data.staffList; | 
				
			||||
 | 
					            }); | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					        async handleChangeAgency(val) { | 
				
			||||
 | 
					            this.sarr = [] | 
				
			||||
 | 
					            this.getLastItem( | 
				
			||||
 | 
					                this.orgOptions, | 
				
			||||
 | 
					                val, | 
				
			||||
 | 
					                "agencyId" | 
				
			||||
 | 
					            ); | 
				
			||||
 | 
					            this.agencylevel = this.sarr[this.sarr.length - 1].level; | 
				
			||||
 | 
					            this.agencyId = this.sarr[this.sarr.length - 1].agencyId; | 
				
			||||
 | 
					            this.formData.receiverIds = '' | 
				
			||||
 | 
					            this.getStafflist() | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					        getOrgTreeList() { | 
				
			||||
 | 
					            this.$http | 
				
			||||
 | 
					                .post('/gov/org/customeragency/agencygridtree', {}) | 
				
			||||
 | 
					                .then(({ data: res }) => { | 
				
			||||
 | 
					                    if (res.code !== 0) { | 
				
			||||
 | 
					                        return this.$message.error(res.msg) | 
				
			||||
 | 
					                    } else { | 
				
			||||
 | 
					                        this.orgOptions = [] | 
				
			||||
 | 
					                        this.orgOptions.push(res.data) | 
				
			||||
 | 
					                    } | 
				
			||||
 | 
					                }) | 
				
			||||
 | 
					                .catch(() => { | 
				
			||||
 | 
					                    return this.$message.error('网络错误') | 
				
			||||
 | 
					                }) | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					        handleCancel(){ | 
				
			||||
 | 
					            this.$emit('handelPersonel') | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					        handleConfirm(){ | 
				
			||||
 | 
					            this.$http | 
				
			||||
 | 
					                .post('/gov/org/customeragency/agencygridtree', {}) | 
				
			||||
 | 
					                .then(({ data: res }) => { | 
				
			||||
 | 
					                    if (res.code !== 0) { | 
				
			||||
 | 
					                        return this.$message.error(res.msg) | 
				
			||||
 | 
					                    } else { | 
				
			||||
 | 
					                         this.$message.success("调整成功") | 
				
			||||
 | 
					                         return    this.$emit('handelPersonel') | 
				
			||||
 | 
					                    } | 
				
			||||
 | 
					                }) | 
				
			||||
 | 
					                .catch(() => { | 
				
			||||
 | 
					                    return this.$message.error('网络错误') | 
				
			||||
 | 
					                }) | 
				
			||||
 | 
					            return this.$success.error("调整成功") | 
				
			||||
 | 
					          | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    mounted() { | 
				
			||||
 | 
					        console.log(this.showType,"sdlfkl;sdf"); | 
				
			||||
 | 
					        this.getOrgTreeList() | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    props: { | 
				
			||||
 | 
					        acceptingId: { | 
				
			||||
 | 
					            type: String, | 
				
			||||
 | 
					            default: '' | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					        showType:{ | 
				
			||||
 | 
					            type: String, | 
				
			||||
 | 
					            default: ''  | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    components: {}, | 
				
			||||
 | 
					    computed: { | 
				
			||||
 | 
					    | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    watch: {}, | 
				
			||||
 | 
					} | 
				
			||||
 | 
					</script> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<style lang='scss' scoped> | 
				
			||||
 | 
					.dialog-footer{ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					} | 
				
			||||
 | 
					</style> | 
				
			||||
					Loading…
					
					
				
		Reference in new issue