This commit is contained in:
2025-09-25 10:36:33 +08:00
4 changed files with 32 additions and 17 deletions

View File

@ -47,7 +47,7 @@ const formList = reactive([
]) ])
const rules = { const rules = {
pxgs: [{ required: true, message: "请输入考试成绩", trigger: "change" }], pxgs: [{ required: true, message: "请选择培训公司", trigger: "change" }],
} }
const open = (row = {}, type = 'updata') => { const open = (row = {}, type = 'updata') => {

View File

@ -27,13 +27,8 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="培训开始时间" prop="kssj" style="width: 100%;"> <el-form-item label="培训时间" prop="kssjJssj" style="width: 100%;">
<el-date-picker v-model="formData.kssj" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请输入培训开始时间" style="width: 100%;" /> <el-date-picker v-model="formData.kssjJssj" type="datetimerange" value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="选择开始时间" end-placeholder="选择结束时间" placeholder="请输入培训开始时间" style="width: 100%;" @change="handleTimeChange" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="培训结束时间" prop="jssj" style="width: 100%;">
<el-date-picker v-model="formData.jssj" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请输入培训结束时间" style="width: 100%;" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -94,7 +89,7 @@
</MyTable> </MyTable>
</div> </div>
<select-personnel-dialog ref="selectPersonnelRef" v-model="visible" @change="handleChange" /> <select-personnel-dialog ref="selectPersonnelRef" v-model="visible" :default-select-keys="defaultSelectKeys" @change="handleChange" />
</div> </div>
</template> </template>
@ -141,12 +136,15 @@ const pageData = reactive({
] ]
}); });
const defaultSelectKeys = computed(() => {
return pageData.tableData?.map(i => i.id)
})
const rules = { const rules = {
xmmc: [{ required: true, message: "请输入培训项目名称", trigger: "change" }], xmmc: [{ required: true, message: "请输入培训项目名称", trigger: "change" }],
pxdz: [{ required: true, message: "请输入培训地址", trigger: "change" }], pxdz: [{ required: true, message: "请输入培训地址", trigger: "change" }],
xxdz: [{ required: true, message: "请输入详细地址", trigger: "change" }], xxdz: [{ required: true, message: "请输入详细地址", trigger: "change" }],
kssj: [{ required: true, message: "请输入培训开始时间", trigger: "change" }], kssjJssj: [{ required: true, message: "请选择开始结束培训时间", trigger: "change" }],
jssj: [{ required: true, message: "请输入培训结束时间", trigger: "change" }],
pxrq: [{ required: true, message: "请输入培训日期", trigger: "change" }], pxrq: [{ required: true, message: "请输入培训日期", trigger: "change" }],
kcmc: [{ required: true, message: "请输入课程名称", trigger: "change" }], kcmc: [{ required: true, message: "请输入课程名称", trigger: "change" }],
zzdw: [{ required: true, message: "请输入组织单位", trigger: "change" }], zzdw: [{ required: true, message: "请输入组织单位", trigger: "change" }],
@ -180,6 +178,7 @@ const init = () => {
const close = () => { const close = () => {
FormRef.value.resetFields() FormRef.value.resetFields()
pageData.tableData = []
showDialog.value = false showDialog.value = false
} }
@ -188,6 +187,12 @@ const handleDelItem = (row) => {
pageData.tableData.splice(index, 1) pageData.tableData.splice(index, 1)
} }
const handleTimeChange = (val) => {
const [start, end] = val
formData.value.kssj = start
formData.value.jssj = end
}
const handleChange = (val) => { const handleChange = (val) => {
pageData.tableData = [...pageData.tableData, ...val]?.filter((i, index, arr) => arr?.findIndex(s => i?.id === s?.id) === index) pageData.tableData = [...pageData.tableData, ...val]?.filter((i, index, arr) => arr?.findIndex(s => i?.id === s?.id) === index)
} }
@ -195,11 +200,14 @@ const handleChange = (val) => {
const save = () => { const save = () => {
if (pageData.tableData.length === 0) return proxy.$message.warning('请选择培训保安人员') if (pageData.tableData.length === 0) return proxy.$message.warning('请选择培训保安人员')
const ryidList = pageData.tableData?.map(i => i?.id) const ryidList = pageData.tableData?.map(i => i?.id)
const { pxkcList, pxxmid } = formData.value const { pxkcList, ...rest } = formData.value
FormRef.value.validate( async (valid) => { FormRef.value.validate( async (valid) => {
if (!valid) return
// 新增项目、修改项目
const url = !formData.value?.id ? `/mosty-base/baxx/pxxm/add` : `/mosty-base/baxx/pxxm/edit` const url = !formData.value?.id ? `/mosty-base/baxx/pxxm/add` : `/mosty-base/baxx/pxxm/edit`
const res = await qcckPost(formData.value, url) const res = await qcckPost({ ...rest }, url)
await qcckPost({ pxkcList, pxxmid: res?.id, ryidList }, !formData.value?.id ? `/mosty-base/baxx/pxkc/saveList` : `/mosty-base/baxx/pxkc/updateList`) // 新增课程、修改课程
await qcckPost({ pxkcList: formData.value.pxkcList, pxxmid: res?.id, ryidList }, !formData.value?.id ? `/mosty-base/baxx/pxkc/saveList` : `/mosty-base/baxx/pxkc/updateList`)
proxy.$message.success('新增培训项目成功') proxy.$message.success('新增培训项目成功')
emits("refresh"); emits("refresh");
close() close()

View File

@ -24,7 +24,7 @@
</template> </template>
<script setup> <script setup>
import { computed, ref, reactive, getCurrentInstance } from 'vue'; import { computed, ref, reactive, getCurrentInstance, watchEffect } from 'vue';
import { qcckPost } from "@/api/qcckApi.js"; import { qcckPost } from "@/api/qcckApi.js";
import MyTable from '@/components/aboutTable/MyTable.vue'; import MyTable from '@/components/aboutTable/MyTable.vue';
@ -58,6 +58,7 @@ const pageData = reactive({
tableData: [{}], tableData: [{}],
keyCount: 0, keyCount: 0,
tableConfiger: { tableConfiger: {
rowKey: "id",
rowHieght: 61, rowHieght: 61,
showIndex: false, showIndex: false,
showSelectType: "checkBox", showSelectType: "checkBox",
@ -79,6 +80,10 @@ const pageData = reactive({
] ]
}); });
watchEffect(() => {
pageData.tableConfiger.defaultSelectKeys = props.defaultSelectKeys
})
const open = async () => { const open = async () => {
pageData.tableConfiger.loading = true; pageData.tableConfiger.loading = true;
@ -92,6 +97,7 @@ const open = async () => {
pageData.total = res.total pageData.total = res.total
visible.value = true visible.value = true
} }
} finally { } finally {
pageData.tableConfiger.loading = false pageData.tableConfiger.loading = false
} }
@ -99,6 +105,7 @@ const open = async () => {
const handleClose = () => { const handleClose = () => {
selectList.value = [] selectList.value = []
pageData.tableData = []
visible.value = false visible.value = false
} }

View File

@ -69,7 +69,7 @@ const searchConfiger = ref([
]); ]);
const pageData = reactive({ const pageData = reactive({
tableData: [{}], tableData: [],
keyCount: 0, keyCount: 0,
tableConfiger: { tableConfiger: {
rowHieght: 61, rowHieght: 61,