|
|
@ -7,17 +7,17 @@ |
|
|
|
<el-button type="text" round @click="handelClickBack" icon="el-icon-back">返回</el-button> |
|
|
|
</div> |
|
|
|
<el-form :model="form" label-width="120px" :rules="dataRule" ref="dataForm"> |
|
|
|
<el-form-item prop="theme" label="任务主题"> |
|
|
|
<el-input v-model="form.theme" placeholder="请输入内容" clearable class="cell-width-1"></el-input> |
|
|
|
<el-form-item prop="taskTitle" label="任务主题"> |
|
|
|
<el-input v-model="form.taskTitle" placeholder="请输入内容" clearable class="cell-width-1"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="任务类型" prop="type"> |
|
|
|
<el-select v-model.trim="form.type" placeholder="请选择" size="small" clearable class="cell-width-1"> |
|
|
|
<el-form-item label="任务类型" prop="taskType"> |
|
|
|
<el-select v-model.trim="form.taskType" placeholder="请选择" size="small" clearable class="cell-width-1" disabled> |
|
|
|
<el-option v-for="item in typeList" :key="item.value" :label="item.label" :value="item.value"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="任务周期" prop="cycle"> |
|
|
|
<el-radio-group v-model.trim="form.cycle" @change="handleChangeCycle"> |
|
|
|
<el-form-item label="任务周期" prop="taskPeriod"> |
|
|
|
<el-radio-group v-model.trim="form.taskPeriod" @change="handleChangetaskPeriod"> |
|
|
|
<el-radio label="once">一次性</el-radio> |
|
|
|
<el-radio label="week">每周</el-radio> |
|
|
|
<!-- <el-radio label="halfAMonth">每半月</el-radio> |
|
|
@ -26,27 +26,34 @@ |
|
|
|
</el-radio-group> |
|
|
|
<span>(说明:当任务周期选择每周/每月/每半月/每季度时,系统会于每个时间阶段的第一天自动创建阶段性子任务)</span> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="完成时限" prop="timeLimit" v-if="form.cycle"> |
|
|
|
<template v-if="form.cycle === 'once'"> |
|
|
|
<el-date-picker v-model="form.timeLimit" type="datetime" placeholder="选择日期时间"> |
|
|
|
<el-form-item label="完成时限" prop="completeLimitHour" v-if="form.taskPeriod"> |
|
|
|
<template v-if="form.taskPeriod === 'once'"> |
|
|
|
<el-date-picker |
|
|
|
v-model="form.completeLimitDay" |
|
|
|
type="date" |
|
|
|
placeholder="选择日期" value-format="yyyy-MM-dd"> |
|
|
|
</el-date-picker> |
|
|
|
<el-time-picker |
|
|
|
v-model="form.completeLimitHour" |
|
|
|
class="cell-width-1" |
|
|
|
placeholder="任意时间点" style="margin-left: 10px;" value-format="HH:mm:ss"> |
|
|
|
</el-time-picker> |
|
|
|
</template> |
|
|
|
<template v-if="form.cycle === 'week'"> |
|
|
|
<el-select v-model.trim="form.week" placeholder="请选择" size="small" clearable |
|
|
|
<template v-if="form.taskPeriod === 'week'"> |
|
|
|
<el-select v-model.trim="form.completeLimitDay" placeholder="请选择" size="small" clearable |
|
|
|
class="cell-width-1" style="margin-left: 10px;"> |
|
|
|
<el-option v-for="item in weekList" :key="item.value" :label="item.label" |
|
|
|
:value="item.value"> |
|
|
|
<el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
<el-time-picker class="cell-width-1" v-model="form.timeLimit" placeholder="选择时间" style="margin-left: 10px;"> |
|
|
|
<el-time-picker class="cell-width-1" v-model="form.completeLimitHour" placeholder="选择时间" style="margin-left: 10px;" value-format="HH:mm:ss"> |
|
|
|
</el-time-picker> |
|
|
|
</template> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="分发人员" prop="distributionPersonnel"> |
|
|
|
<el-form-item label="分发人员" prop="receiverIds"> |
|
|
|
<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="form.distributionPersonnel" placeholder="请选择" size="small" clearable |
|
|
|
<el-select v-model.trim="form.receiverIds" placeholder="请选择" size="small" clearable |
|
|
|
@remove-tag="removeTag" multiple class="cell-width-1" collapse-tags style="margin-left: 10px;" |
|
|
|
@change="changeTag" c> |
|
|
|
<el-option v-for="item in allStafflist" :key="item.value" :label="item.name" |
|
|
@ -63,9 +70,9 @@ |
|
|
|
</el-tag> |
|
|
|
</div> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="上传模板" prop="templateUrl"> |
|
|
|
<el-form-item label="上传模板" prop="moduleUrl"> |
|
|
|
<el-upload :headers="$getElUploadHeaders()" ref="upload" class="upload-btn" :action="uploadUlr" |
|
|
|
v-if="!form.templateUrl" :limit="1" :accept="'.xlsx'" :with-credentials="true" |
|
|
|
v-if="!form.moduleUrl" :limit="1" :accept="'.xlsx'" :with-credentials="true" |
|
|
|
:show-file-list="false" :auto-upload="true" :on-success="handleExcelSuccess" |
|
|
|
:before-upload="beforeExcelUpload"> |
|
|
|
<template #trigger> |
|
|
@ -78,9 +85,9 @@ |
|
|
|
<el-button type="text" @click="removeFile(file)" style="margin-left: 16px;"> 删除</el-button> |
|
|
|
</section> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="任务要求" prop="taskRequirements" style="display: block"> |
|
|
|
<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="form.taskRequirements"></el-input> |
|
|
|
placeholder="请输入事件内容,不超过500字" v-model.trim="form.taskIntroduction"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
<div class="div-btn"> |
|
|
@ -92,7 +99,7 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div v-if="showTemplate"> |
|
|
|
<ExcelTemplateConfirmation :showTemplate="showTemplate" :fileUrl="form.templateUrl" :fileName="fileName" |
|
|
|
<ExcelTemplateConfirmation :showTemplate="showTemplate" :fileUrl="form.moduleUrl" :fileName="fileName" |
|
|
|
@handelHideTemplate="handelHideTemplate" @saveLuckysheetJson="getSheetJson" /> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -110,7 +117,7 @@ export default { |
|
|
|
fileName: '', |
|
|
|
orgOptions: [], |
|
|
|
orgOptionProps: { |
|
|
|
// multiple: false, |
|
|
|
multiple: false, |
|
|
|
value: 'agencyId', |
|
|
|
label: 'agencyName', |
|
|
|
children: 'subAgencyList', |
|
|
@ -119,21 +126,22 @@ export default { |
|
|
|
"/oss/file/upload", |
|
|
|
showTemplate: false, |
|
|
|
form: { |
|
|
|
theme: '',//任务主题 |
|
|
|
type: '1',//任务类型 |
|
|
|
cycle: 'once',//任务周期 |
|
|
|
timeLimit: '',//完成时限 |
|
|
|
week: '',//周 |
|
|
|
distributionPersonnel: [],//分发人员 |
|
|
|
templateUrl: '',//上传模板 |
|
|
|
taskRequirements: '',//任务要求 |
|
|
|
taskTitle: '',//任务主题 |
|
|
|
taskType: '1',//任务类型 |
|
|
|
taskPeriod: 'once',//任务周期 |
|
|
|
completeLimitDay: '',//完成时限 一次性时传日期,周期性时传天数 |
|
|
|
completeLimitHour: '',//完成时限 周期或者一次性都传小时 |
|
|
|
receiverIds: [],//分发人员 |
|
|
|
moduleUrl: 'https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet-saas/dev/20250109/30b1c877b8a94297b993c34d15e8e501.xlsx',//上传模板 |
|
|
|
taskIntroduction: '',//任务要求 |
|
|
|
wordBookId:''//工作簿id |
|
|
|
}, |
|
|
|
dataRule: { |
|
|
|
theme: [{ required: true, message: "任务主题不能为空", trigger: "blur" },], |
|
|
|
cycle: [{ required: 'true', message: '任务周期不能为空', trigger: 'blur' }], |
|
|
|
distributionPersonnel: [{ required: 'true', message: '分发人员不能为空', trigger: 'blur' }], |
|
|
|
templateUrl: [{ required: 'true', message: '模板不能为空', trigger: 'blur' }], |
|
|
|
timeLimit: [{ required: 'true', message: '完成时限不能为空', trigger: 'blur' }], |
|
|
|
taskTitle: [{ required: true, message: "任务主题不能为空", trigger: "blur" },], |
|
|
|
taskPeriod: [{ required: 'true', message: '任务周期不能为空', trigger: 'blur' }], |
|
|
|
receiverIds: [{ required: 'true', message: '分发人员不能为空', trigger: 'blur' }], |
|
|
|
moduleUrl: [{ required: 'true', message: '模板不能为空', trigger: 'blur' }], |
|
|
|
completeLimitHour: [{ required: 'true', message: '完成时限不能为空', trigger: 'blur' }], |
|
|
|
}, |
|
|
|
typeList: [ |
|
|
|
{ |
|
|
@ -176,7 +184,7 @@ export default { |
|
|
|
selfTag: [], |
|
|
|
sarr: [], |
|
|
|
agencyId: '', |
|
|
|
agencylevel: '' |
|
|
|
agencylevel: '', |
|
|
|
}; |
|
|
|
}, |
|
|
|
created() { }, |
|
|
@ -215,7 +223,6 @@ export default { |
|
|
|
// this.workPersonnelList = resp.data.data.staffList; |
|
|
|
if (resp.data.data.staffList) { |
|
|
|
this.allStafflist = this.allStafflist.concat(resp.data.data.staffList) |
|
|
|
console.log(this.allStafflist); |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
@ -248,7 +255,7 @@ export default { |
|
|
|
handleExcelSuccess(e) { |
|
|
|
if (e.code === 0) { |
|
|
|
this.showTemplate = true; |
|
|
|
this.form.templateUrl = e.data.url |
|
|
|
this.form.moduleUrl = e.data.url |
|
|
|
} |
|
|
|
}, |
|
|
|
beforeExcelUpload(file) { |
|
|
@ -284,25 +291,22 @@ export default { |
|
|
|
}, |
|
|
|
removeTag(val) { |
|
|
|
const valueToRemove = val.staffId || val[0]; |
|
|
|
this.form.distributionPersonnel = this.form.distributionPersonnel.filter(item => item != valueToRemove); |
|
|
|
this.selfTag = this.workPersonnelList.filter(item => this.form.distributionPersonnel.includes(item.staffId)); |
|
|
|
this.form.receiverIds = this.form.receiverIds.filter(item => item != valueToRemove); |
|
|
|
this.selfTag = this.allStafflist.filter(item => this.form.receiverIds.includes(item.staffId)); |
|
|
|
}, |
|
|
|
changeTag() { |
|
|
|
this.selfTag = this.allStafflist.filter(item => this.form.distributionPersonnel.includes(item.staffId)); |
|
|
|
this.selfTag = this.allStafflist.filter(item => this.form.receiverIds.includes(item.staffId)); |
|
|
|
}, |
|
|
|
handleChangeCycle(val){ |
|
|
|
if(val === 'once'){ |
|
|
|
this.form.week = ''; |
|
|
|
this.form.timeLimit = ''; |
|
|
|
}else{ |
|
|
|
this.form.timeLimit = ''; |
|
|
|
} |
|
|
|
handleChangetaskPeriod(val){ |
|
|
|
this.form.completeLimitDay = ''; |
|
|
|
this.form.completeLimitHour = ''; |
|
|
|
}, |
|
|
|
handleClickSave() { |
|
|
|
console.log(this.form, 'addForm'); |
|
|
|
this.$refs['dataForm'].validate(valid => { |
|
|
|
if (valid) { |
|
|
|
this.saveLuckysheet() |
|
|
|
this.saveEvent() |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
@ -312,13 +316,14 @@ export default { |
|
|
|
const { data, code, msg } = await requestPost(`/actual/base/luckySheet/workbook/createByJson?fileName=${this.fileName}`, this.luckysheetJson) |
|
|
|
if (code === 0) { |
|
|
|
console.log(data, '新建成功'); |
|
|
|
|
|
|
|
this.form.wordBookId = data |
|
|
|
} else { |
|
|
|
console.log(msg); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
removeFile() { |
|
|
|
this.form.templateUrl = ''; |
|
|
|
this.form.moduleUrl = ''; |
|
|
|
this.fileName = ''; |
|
|
|
this.luckysheetJson = {} |
|
|
|
}, |
|
|
|