From cd6c6eb78739cb3d43f0b05018159c5c1018559b Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Fri, 18 Aug 2023 14:19:49 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/task_template/edit.vue | 502 +++++++++++++++---------------- 1 file changed, 241 insertions(+), 261 deletions(-) diff --git a/src/views/task_template/edit.vue b/src/views/task_template/edit.vue index 920b74a..117dd93 100644 --- a/src/views/task_template/edit.vue +++ b/src/views/task_template/edit.vue @@ -1,301 +1,281 @@ <template> - <div class="edit-popup"> - <popup - ref="popupRef" - :title="popupTitle" - :async="true" - width="550px" - @confirm="handleSubmit" - @close="handleClose" - > - <el-form - ref="formRef" - :model="formData" - label-width="90px" - :rules="formRules" - > - <el-form-item label="任务名称" prop="title"> - <el-input - v-model="formData.title" - clearable - placeholder="请输入任务名称" - /> - </el-form-item> - <el-form-item label="阶段类型" prop="types"> - <el-select - v-model="formData.types" - clearable - placeholder="请输入阶段类型" - > - <el-option - v-for="item in [ - { label: 1, name: '循环' }, - { label: 2, name: '长期' }, - { label: 3, name: '单次' }, - ]" - :key="item.label" - :value="item.label" - :label="item.name" - /> - </el-select> - </el-form-item> - <el-form-item label="一阶段天数"> - <el-input - v-model="formData.stage_day_one" - clearable - placeholder="请输入天数" - type="number" - > - <template #append>天</template> - </el-input> - </el-form-item> - <el-form-item label="一阶段金额"> - <el-input - v-model="formData.money" - clearable - placeholder="请输入金额" - type="number" - > - <template #append>元</template> - </el-input> - </el-form-item> - <el-form-item label="二阶段天数"> - <el-input - v-model="formData.stage_day_two" - clearable - placeholder="请输入天数" - type="number" - > - <template #append>天</template> - </el-input> - </el-form-item> + <div class="edit-popup"> + <popup + ref="popupRef" + :title="popupTitle" + :async="true" + width="550px" + @confirm="handleSubmit" + @close="handleClose" + > + <el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules"> + <el-form-item label="任务名称" prop="title"> + <el-input v-model="formData.title" clearable placeholder="请输入任务名称" /> + </el-form-item> + <el-form-item label="阶段类型" prop="types"> + <el-select v-model="formData.types" clearable placeholder="请输入阶段类型"> + <el-option + v-for="item in [ + { label: 1, name: '循环' }, + { label: 2, name: '长期' }, + { label: 3, name: '单次' } + ]" + :key="item.label" + :value="item.label" + :label="item.name" + /> + </el-select> + </el-form-item> + <el-form-item label="一阶段天数"> + <el-input + v-model="formData.stage_day_one" + clearable + placeholder="请输入天数" + type="number" + > + <template #append>天</template> + </el-input> + </el-form-item> + <el-form-item label="一阶段金额"> + <el-input + v-model="formData.money" + clearable + placeholder="请输入金额" + type="number" + > + <template #append>元</template> + </el-input> + </el-form-item> + <el-form-item label="二阶段天数"> + <el-input + v-model="formData.stage_day_two" + clearable + placeholder="请输入天数" + type="number" + > + <template #append>天</template> + </el-input> + </el-form-item> - <el-form-item label="二阶段金额"> - <el-input - v-model="formData.money_two" - clearable - placeholder="请输入金额" - type="number" - > - <template #append>元</template> - </el-input> - </el-form-item> - <el-form-item label="长期金额" v-if="+formData.types == 2"> - <el-input - v-model="formData.money_three" - clearable - placeholder="请输入金额" - type="number" - > - <template #append>元</template> - </el-input> - </el-form-item> - <el-form-item label="任务类型" prop="type"> - <el-select - v-model="formData.type" - clearable - placeholder="请输入任务类型" - @change="changeTaskType" - > - <el-option - v-for="item in datalist" - :key="item.label" - :value="item.id" - :label="item.name" - /> - </el-select> - </el-form-item> - <el-form-item v-if="formData.type == 32" label="起点"> - <el-input - placeholder="请点击上方地图选择地点" - readonly - :value="formData.extend[0]?.address" - /> - </el-form-item> - <el-form-item v-if="formData.type == 32" label="中转点"> - <el-input - placeholder="请点击上方地图选择地点" - readonly - :value="formData.extend[1]?.address" - /> - </el-form-item> - <el-form-item v-if="formData.type == 32" label="终点"> - <el-input - placeholder="请点击上方地图选择地点" - readonly - :value="formData.extend[2]?.address" - /> - </el-form-item> - <el-form-item label="状态" prop="status"> - <el-radio-group v-model="formData.status"> - <el-radio :label="1">显示</el-radio> - <el-radio :label="0">隐藏</el-radio> - </el-radio-group> - </el-form-item> - <el-form-item label="任务描述" prop="content"> - <el-input - v-model="formData.content" - clearable - placeholder="请输入任务描述" - /> - </el-form-item> - </el-form> - <taskMap - v-if="mapShow" - ref="mapRef" - @success="setMap" - @close="mapShow = false" - ></taskMap> - </popup> - </div> + <el-form-item label="二阶段金额"> + <el-input + v-model="formData.money_two" + clearable + placeholder="请输入金额" + type="number" + > + <template #append>元</template> + </el-input> + </el-form-item> + <el-form-item label="长期金额" v-if="+formData.types == 2"> + <el-input + v-model="formData.money_three" + clearable + placeholder="请输入金额" + type="number" + > + <template #append>元</template> + </el-input> + </el-form-item> + <el-form-item label="任务类型" prop="type"> + <el-select + v-model="formData.type" + clearable + placeholder="请输入任务类型" + @change="changeTaskType" + > + <el-option + v-for="item in datalist" + :key="item.label" + :value="item.id" + :label="item.name" + /> + </el-select> + </el-form-item> + <el-form-item v-if="formData.type == 32" label="起点"> + <el-input + placeholder="请点击上方地图选择地点" + readonly + :value="formData.extend[0]?.address" + /> + </el-form-item> + <el-form-item v-if="formData.type == 32" label="中转点"> + <el-input + placeholder="请点击上方地图选择地点" + readonly + :value="formData.extend[1]?.address" + /> + </el-form-item> + <el-form-item v-if="formData.type == 32" label="终点"> + <el-input + placeholder="请点击上方地图选择地点" + readonly + :value="formData.extend[2]?.address" + /> + </el-form-item> + <el-form-item label="状态" prop="status"> + <el-radio-group v-model="formData.status"> + <el-radio :label="1">显示</el-radio> + <el-radio :label="0">隐藏</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="任务描述" prop="content"> + <el-input v-model="formData.content" clearable placeholder="请输入任务描述" /> + </el-form-item> + </el-form> + <taskMap + v-if="mapShow" + ref="mapRef" + @success="setMap" + @close="mapShow = false" + ></taskMap> + </popup> + </div> </template> <script lang="ts" setup name="taskTemplateEdit"> -import type { FormInstance } from "element-plus"; -import Popup from "@/components/popup/index.vue"; -import { - apiTaskTemplateAdd, - apiTaskTemplateEdit, - apiTaskTemplateDetail, -} from "@/api/task_template"; -import { timeFormat } from "@/utils/util"; -import type { PropType } from "vue"; -import { dictDataLists } from "@/api/setting/dict"; -import taskMap from "./map.vue"; +import type { FormInstance } from 'element-plus' +import Popup from '@/components/popup/index.vue' +import { apiTaskTemplateAdd, apiTaskTemplateEdit, apiTaskTemplateDetail } from '@/api/task_template' +import { timeFormat } from '@/utils/util' +import type { PropType } from 'vue' +import { dictDataLists } from '@/api/setting/dict' +import taskMap from './map.vue' defineProps({ - dictData: { - type: Object as PropType<Record<string, any[]>>, - default: () => ({}), - }, -}); -const emit = defineEmits(["success", "close"]); -const formRef = shallowRef<FormInstance>(); -const popupRef = shallowRef<InstanceType<typeof Popup>>(); -const mode = ref("add"); -const datalist = ref([]); - + dictData: { + type: Object as PropType<Record<string, any[]>>, + default: () => ({}) + } +}) +const emit = defineEmits(['success', 'close']) +const formRef = shallowRef<FormInstance>() +const popupRef = shallowRef<InstanceType<typeof Popup>>() +const mode = ref('add') +const datalist = ref([]) +const route = useRoute() // 弹窗标题 const popupTitle = computed(() => { - return mode.value == "edit" ? "编辑任务模板" : "新增任务模板"; -}); + return mode.value == 'edit' ? '编辑任务模板' : '新增任务模板' +}) // 表单数据 const formData = reactive({ - id: "", - company_id: "", - title: "", - admin_id: "", - type: "", - status: "", - content: "", - stage_day_one: 0, - money: 0, // 一阶段金额 - stage_day_two: 0, - money_two: 0, // 二阶段金额 - money_three: 0, // 长期金额 - types: "", //阶段类型 - extend: {}, -}); - + id: '', + company_id: '', + title: '', + admin_id: '', + type: '', + status: '', + content: '', + stage_day_one: 0, + money: 0, // 一阶段金额 + stage_day_two: 0, + money_two: 0, // 二阶段金额 + money_three: 0, // 长期金额 + types: '', //阶段类型 + extend: {}, + task_scheduling: 0 +}) +if (route.query.id) { + formData.task_scheduling = route.query.id +} //任务类型接口 dictDataLists({ type_id: 10 }).then((res) => { - datalist.value = res.lists; -}); + datalist.value = res.lists +}) // 表单验证 const formRules = reactive<any>({ - title: [ - { - required: true, - message: "请输入任务名称", - trigger: ["blur"], - }, - ], - admin_id: [ - { - required: true, - message: "请输入创建人", - trigger: ["blur"], - }, - ], - type: [ - { - required: true, - message: "请输入任务类型", - trigger: ["blur"], - }, - ], - status: [ - { - required: true, - message: "请选择状态", - trigger: ["blur"], - }, - ], -}); + title: [ + { + required: true, + message: '请输入任务名称', + trigger: ['blur'] + } + ], + admin_id: [ + { + required: true, + message: '请输入创建人', + trigger: ['blur'] + } + ], + type: [ + { + required: true, + message: '请输入任务类型', + trigger: ['blur'] + } + ], + status: [ + { + required: true, + message: '请选择状态', + trigger: ['blur'] + } + ] +}) // 获取详情 const setFormData = async (data: Record<any, any>) => { - for (const key in formData) { - if (data[key] != null && data[key] != undefined) { - //@ts-ignore - formData[key] = data[key]; + for (const key in formData) { + if (data[key] != null && data[key] != undefined) { + //@ts-ignore + formData[key] = data[key] + } } - } -}; +} const getDetail = async (row: Record<string, any>) => { - const data = await apiTaskTemplateDetail({ - id: row.id, - }); - setFormData(data); -}; + const data = await apiTaskTemplateDetail({ + id: row.id + }) + setFormData(data) +} // 地图控件 -const mapShow = ref(false); -const mapRef = shallowRef<InstanceType<typeof taskMap>>(); +const mapShow = ref(false) +const mapRef = shallowRef<InstanceType<typeof taskMap>>() // 选择任务类型 const changeTaskType = async (e: any) => { - if (e == 32) { - mapShow.value = true; //为三轮车时 - await nextTick(); - console.log(mapRef.value); - mapRef.value?.open(); - } -}; + if (e == 32) { + mapShow.value = true //为三轮车时 + await nextTick() + console.log(mapRef.value) + mapRef.value?.open() + } +} const setMap = (e: any) => { - formData.extend = e; - console.log("选择了地区", formData.extend); -}; + formData.extend = e + console.log('选择了地区', formData.extend) +} // 提交按钮 const handleSubmit = async () => { - await formRef.value?.validate(); - if (formData.extend.length < 3) return ElMessage.error("请先选择三个地点"); - const data = { ...formData }; - mode.value == "edit" - ? await apiTaskTemplateEdit(data) - : await apiTaskTemplateAdd(data); - popupRef.value?.close(); - emit("success"); -}; + await formRef.value?.validate() + if (formData.extend.length < 3) return ElMessage.error('请先选择三个地点') + const data = { ...formData } + mode.value == 'edit' ? await apiTaskTemplateEdit(data) : await apiTaskTemplateAdd(data) + popupRef.value?.close() + emit('success') +} //打开弹窗 -const open = (type = "add") => { - mode.value = type; - popupRef.value?.open(); -}; +const open = (type = 'add') => { + mode.value = type + popupRef.value?.open() +} // 关闭回调 const handleClose = () => { - emit("close"); -}; + emit('close') +} defineExpose({ - open, - setFormData, - getDetail, -}); + open, + setFormData, + getDetail +}) </script> From 9e0a4daf8874d5706aa611aee632d5bc8f6ba878 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Fri, 18 Aug 2023 14:21:54 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/task_template/edit.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/views/task_template/edit.vue b/src/views/task_template/edit.vue index 10b2bea..75a3e5c 100644 --- a/src/views/task_template/edit.vue +++ b/src/views/task_template/edit.vue @@ -156,6 +156,7 @@ const popupTitle = computed(() => { // 表单数据 const formData = reactive({ id: '', + task_scheduling: 0, company_id: '', title: '', admin_id: '', @@ -174,7 +175,9 @@ const formData = reactive({ terminus: {} //终点 } }) - +if (route.query.id) { + formData.task_scheduling = route.query.id +} //任务类型接口 dictDataLists({ type_id: 10 }).then((res) => { datalist.value = res.lists