| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373 |
- <template>
- <div class="edu-training-edit">
- <DialogCom :title="'新增演练登记'" :close="onHide" :visible.sync="isShow" width="960px">
- <div class="page-body">
- <el-form :model="formData" :rules="formDataRules" size="small" ref="form" label-position="right"
- label-width="120px" label-prefix=":">
- <el-row>
- <!-- 演练主题 -->
- <el-col :span="12">
- <el-form-item prop="title" label="主题">
- <el-input
- v-model="formData.title"
- :maxlength="32"
- placeholder="请输入主题"
- clearable
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item prop="drillSite" label="演练地点">
- <el-input v-model="formData.drillSite" placeholder="请输入演练地点" :length="50"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item prop="drillStartTime" label="培训开始时间">
- <el-date-picker style="width: 100%" required v-model="formData.drillStartTime"
- :picker-options="startDatepickerOptions"
- type="datetime" placeholder="选择日期" @change="startDateChanged" width="180">
- </el-date-picker>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item prop="drillEndTime" label="培训结束时间">
- <el-date-picker style="width: 100%" required v-model="formData.drillEndTime"
- :picker-options="endDatepickerOptions" @change="endDateChanged"
- type="datetime" placeholder="选择日期">
- </el-date-picker>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="演练类型" prop="type">
- <el-select style="width: 100%" v-model="formData.type" placeholder="请选择演练类型">
- <el-option v-for="dict in dict.type.core_drill_type" :key="dict.value" :label="dict.label"
- :value="parseInt(dict.value)">
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item prop="presetCase" label="预设案由">
- <div style="display: flex;justify-content: flex-end; margin-bottom: 10px">
- <el-button type="primary" @click="selectMaterials">参考演练库</el-button>
- </div>
- <k-textarea v-model="formData.presetCase" placeholder="请输入预设案由" :length="2000"/>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item prop="drillSituation" label="演练情况">
- <k-textarea v-model="formData.drillSituation" placeholder="请输入演练情况" :length="2000"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item prop="absenceList" label="参与人员">
- <k-select :multiple="true" v-model="formData.absenceList" url="/user/find/all"
- :params="{ orgId: formData.orgId }" placeholder="请选择缺席人员"
- @select="absenceUserSelectChanged"></k-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item prop="absentList" label="缺席人员">
- <k-select :multiple="true" v-model="formData.absentList" url="/user/find/all"
- :params="{ orgId: formData.orgId }" @select="absentUserSelectChanged"
- placeholder="请选择缺席人员">
- </k-select>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="上传文件" prop="fileList">
- <K-file-upload ref="upload" :defaultValue="formFileListDefualtValue" v-model="formData.fileList"/>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item prop="imageList" label="上传图片">
- <imgUpload ref="uploadimage" type="more" :value="formData.imageList" @input="imageListChanged">
- </imgUpload>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- </div>
- <div slot="footer" class="dialog-footer">
- <el-button @click="onHide">取消</el-button>
- <el-button type="primary" @click="onSave">暂存</el-button>
- <el-button type="primary" @click="onSubmit">提交</el-button>
- </div>
- </DialogCom>
- <dialog-drill-dictionary-select
- ref="DialogDrillDictionarySelect"
- :defaultSelect=defaultSelect
- @select="materialsSelect"
- :orgId="this.$store.getters.orgId">
- </dialog-drill-dictionary-select>
- </div>
- </template>
- <script>
- import {mapState, mapMutations} from "vuex";
- import {getDrillTask, recordDrillTask} from "@/api/core/drill/drillTask";
- import dayjs from "dayjs";
- import KTextarea from "@/components/common/textarea.vue";
- import KSelect from "@/components/common/userselect.vue";
- import imgUpload from "@/components/ImageUpload/index.vue";
- import KFileUpload from "@/components/K-FileUpload/index.vue";
- import DialogDrillDictionarySelect from "@/views/core/drill/task/dialog.select.drillDictionary.vue";
- export default {
- components: {KTextarea, KSelect, imgUpload,KFileUpload,DialogDrillDictionarySelect},
- data() {
- const params = this.$route.params;
- return {
- id: params ? params.id : null,
- isShow: false,
- formData: this.reset(),
- formDataRules: {
- drillStartTime: [{required: true, message: "请选择演练开始时间"}],
- drillEndTime: [{required: true, message: "请选择演练结束时间"}],
- drillSite: [{required: true, message: "请输入演练地点"}],
- type: [{required: true, message: "请选择演练项目"}],
- presetCase: [{required: true, message: "请输入预设案由"}],
- drillSituation: [{required: true, message: "请输入预设案由"}],
- absenceList: [{required: true, type: "array", message: "请选择参与人员", trigger: ['blur', 'change']}],
- imageList: [{required: true, message: "请上传图片"}],
- fileList: [{required: true, message: "请上传文件"}],
- },
- startDatepickerOptions: {
- disabledDate(time) {
- return false;
- },
- },
- endDatepickerOptions: {
- disabledDate: this.endDisabledDate,
- },
- drillTypeOptions: [],
- formFileListDefualtValue: [],
- defaultSelect: [],
- };
- },
- dicts: ["core_drill_type","core_drill_type"],
- props: {},
- watch: {},
- computed: {
- ...mapState(["loginUser", "org"]),
- },
- methods: {
- ...mapMutations([]),
- reset(other = {}) {
- return {
- drillStartTime: null,
- drillEndTime: null,
- content: "",
- drillSite: "",
- type: null,
- title: "",
- eduJobId: null,
- imageList: "",
- absenceList: [],
- absentList: [],
- orgList: [],
- fileList: [],
- ...other,
- };
- },
- async refresh(id, other) {
- if (!id) {
- this.reset(other);
- return;
- }
- getDrillTask(id).then((response) => {
- this.loading = false;
- // _this.formData = response.data;
- if (response.data.taskUserList) {
- let list1 = response.data.taskUserList.filter((element) =>
- element.type === 1
- );
- console.log("list1", list1)
- response.data.absenceList = list1 ? list1.map((a) => {
- return a.userId;
- })
- : [];
- let list2 = response.data.taskUserList.filter((element) =>
- element.type === 2
- );
- console.log("list2", list2)
- response.data.absentList = list2 ? list2.map((a) => {
- return a.userId;
- })
- : [];
- } else {
- response.data.absenceList = [];
- response.data.absentList = [];
- }
- if (response.data.imageList == null) {
- response.data.imageList = "";
- }
- if (response.data.fileList == null) {
- response.data.fileList = [];
- }
- this.formData = response.data;
- });
- console.log("getDrillTask", this.formData);
- },
- async show(id, other = {}) {
- this.isShow = true;
- },
- imageListChanged(list) {
- this.formData.imageList = list;
- console.log("imageListChanged", this.formData.imageList);
- },
- absentUserSelectChanged(list) {
- // 将类型为2的数据删除
- if (this.formData.absentList) {
- this.formData.absentList = this.formData.absentList.filter(
- (x) => x.type == 1
- );
- } else {
- this.formData.absentList = [];
- }
- let tempList = list.map((x) => {
- return {
- userId: x.id,
- userName: x.name,
- type: 2,
- };
- });
- if (!tempList) return;
- this.formData.absentList = this.formData.absentList.concat(tempList);
- console.log("absentUserSelectChanged", list, this.formData.absentList);
- },
- absenceUserSelectChanged(list) {
- // 将类型为1的数据删除
- if (this.formData.absenceList) {
- this.formData.absenceList = this.formData.absenceList.filter(
- (x) => x.type == 2
- );
- } else {
- this.formData.absenceList = [];
- }
- let tempList = list.map((x) => {
- return {
- userId: x.id,
- userName: x.name,
- type: 1,
- };
- });
- if (!tempList) return;
- this.formData.absenceList = this.formData.absenceList.concat(tempList);
- console.log("absenceUserSelectChanged", list, this.formData.absenceList);
- },
- // 事件
- onHide() {
- this.isShow = false;
- this.formData = this.reset();
- this.$refs["uploadimage"].clearFiles();
- this.$refs["upload"].clearFiles();
- },
- async onSave() {
- if (!this.validatePerson()) {
- this.$message.error("参与人员与缺席人员重复,请重新选择!");
- return;
- }
- let request = {submitType: 1, ...this.formData};
- if (request.drillStartTime)
- request.drillStartTime = dayjs(request.drillStartTime).format("YYYY-MM-DD HH:mm:ss");
- if (request.drillEndTime)
- request.drillEndTime = dayjs(request.drillEndTime).format("YYYY-MM-DD HH:mm:ss");
- recordDrillTask(request).then((v) => {
- this.$emit("success", this.formData);
- this.onHide();
- this.$modal.msgSuccess("培训登记暂存成功");
- });
- },
- async onSubmit() {
- await this.$refs.form.validate();
- console.log("onSubmit this.formData", this.formData);
- if (!this.validatePerson()) {
- this.$message.error("参与人员与缺席人员重复,请重新选择!");
- } else {
- let request = {submitType: 2, ...this.formData};
- if (request.drillStartTime)
- request.drillStartTime = dayjs(request.drillStartTime).format("YYYY-MM-DD HH:mm:ss");
- if (request.drillEndTime)
- request.drillEndTime = dayjs(request.drillEndTime).format("YYYY-MM-DD HH:mm:ss");
- recordDrillTask(request).then((v) => {
- this.$emit("success", this.formData);
- this.onHide();
- this.$modal.msgSuccess("演练登记提交成功");
- });
- }
- },
- validatePerson() {
- for (let i = 0; i < this.formData.absenceList.length; i++) {
- let absence = this.formData.absenceList[i];
- if (this.formData.absentList.indexOf(absence) >= 0) {
- return false;
- }
- }
- return true;
- },
- uploadTriggerEvent(value) {
- },
- endDisabledDate(time) {
- //小于开始日期禁止选择
- let startDate = new Date();
- startDate.setTime(startDate.getTime() - 3600 * 1000 * 24);
- if (this.formData.drillStartTime) {
- startDate = new Date(
- dayjs(this.formData.drillStartTime).format("YYYY-MM-DD")
- );
- startDate.setTime(startDate.getTime() - 3600 * 1000 * 24);
- }
- return time.getTime() < new Date(startDate).getTime();
- },
- endDateChanged(time) {
- console.log("startDateChanged", time, this.formData.drillStartTime, this.formData.drillEndTime)
- if (dayjs(this.formData.drillStartTime).isAfter(dayjs(this.formData.drillEndTime))) {
- this.formData.drillStartTime = this.formData.drillEndTime;
- console.log("trainingEndDateTime", this.formData.drillEndTime)
- }
- },
- startDateChanged(time) {
- console.log(
- "startDateChanged",
- time,
- this.formData.drillStartTime,
- this.formData.drillEndTime
- );
- if (
- dayjs(this.formData.drillStartTime).isAfter(
- dayjs(this.formData.drillEndTime)
- )
- ) {
- this.formData.drillEndTime = this.formData.drillStartTime;
- console.log("trainingEndDateTime", this.formData.drillEndTime);
- }
- },
- selectMaterials() {
- this.$refs["DialogDrillDictionarySelect"].show();
- },
- materialsSelect(){
- },
- },
- mounted() {
- },
- };
- </script>
- <!-- <style lang="less">
- .edu-training-edit {
- }
- </style> -->
|