Files
cdTestPlant3/cdTMP/src/views/project/opeSets/components/CaseTable/ReplaceExetime.vue

74 lines
2.2 KiB
Vue
Raw Normal View History

2025-05-10 19:21:50 +08:00
<template>
<!-- 注意该组件强制绑定caseTable页面不要使用在其他地方了 -->
<div class="replace-person-container">
<a-modal
v-model:visible="visible"
width="40%"
unmount-on-close
ok-text="替换执行时间"
cancel-text="关闭"
draggable
:on-before-ok="submitReplace"
>
<template #title>替换执行时间</template>
<div class="content-container">
<a-form ref="exeTime" :model="formData" scroll-to-first-error>
<a-form-item field="designPerson" label="执行时间">
<a-date-picker v-model="exetime" style="width: 200px" />
</a-form-item>
</a-form>
</div>
</a-modal>
</div>
</template>
<script setup lang="ts">
import { ref } from "vue"
import { Message } from "@arco-design/web-vue"
import caseApi from "@/api/project/case"
const visible = ref(false)
const formData = ref({})
const exetime = ref("")
2025-05-28 18:44:58 +08:00
const getSelectedsFunc = ref<any>(() => [])
2025-05-10 19:21:50 +08:00
// props
2025-05-28 18:44:58 +08:00
const { selectRows } = defineProps<{ selectRows?: any }>()
// emits
const emit = defineEmits(["modifySuccess"])
2025-05-10 19:21:50 +08:00
// 2.异步执行替换操作返回boolean-true则关闭弹窗
const submitReplace = async () => {
// 不再非受控验证,手动验证
if (exetime.value === "") {
Message.error("请选择时间后,进行替换操作")
return false
}
2025-05-28 18:44:58 +08:00
const selecteds = selectRows || getSelectedsFunc.value() || []
if (selecteds.length && selecteds.length > 0) {
2025-05-10 19:21:50 +08:00
// 判断是否选择了行
// 请求后台执行
await caseApi.exetimeReplace({
2025-05-28 18:44:58 +08:00
selectRows: selecteds,
2025-05-10 19:21:50 +08:00
exetime: exetime.value
})
2025-05-28 18:44:58 +08:00
emit("modifySuccess")
2025-05-10 19:21:50 +08:00
Message.success("批量替换成功...")
return true
}
Message.error("请在表格中选择行...")
return false
}
// 其他打开modal
2025-05-28 18:44:58 +08:00
const open = (getFunc: (() => number[]) | undefined) => {
if (getFunc) getSelectedsFunc.value = getFunc
2025-05-10 19:21:50 +08:00
exetime.value = ""
visible.value = true
}
defineExpose({ open })
</script>
<style lang="less" scoped></style>