|
@@ -120,25 +120,24 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
-import { ref, watch, defineProps, defineEmits, onMounted, computed } from 'vue';
|
|
|
+import { ref, watch, defineProps, defineEmits, onMounted, computed,inject,Ref, } from 'vue';
|
|
|
import SelectDeviceDialog from '../SpecialBorrow/SelectDeviceDialog/index.vue';
|
|
|
import timetablemanage from '../../../timetablemanage/index.vue';
|
|
|
import * as apis from '../../../timetablemanage/api';
|
|
|
import { provide } from 'vue';
|
|
|
import dayjs from 'dayjs';
|
|
|
import { ElMessage } from 'element-plus';
|
|
|
-
|
|
|
+import { cloneDeep } from 'lodash-es';
|
|
|
|
|
|
provide('isEmbedded', true);
|
|
|
provide('onCourseSelected', handleCourseSelected);
|
|
|
|
|
|
-const props = defineProps<{ visible: boolean; modelValue?: any }>();
|
|
|
-const emit = defineEmits(['update:visible', 'update:modelValue', 'submit']);
|
|
|
+const props = defineProps<{ visible: boolean; modelValue?: any ; lastFormSnapshot: Record<string, any>;}>();
|
|
|
+const emit = defineEmits(['update:visible', 'update:modelValue', 'submit','update:lastFormSnapshot']);
|
|
|
const visible = ref(props.visible);
|
|
|
const formRef = ref();
|
|
|
|
|
|
|
|
|
-const lastFormSnapshot = ref<any>(null);
|
|
|
|
|
|
function handleUploadSuccess(response, file, fileList) {
|
|
|
// eslint-disable-next-line no-console
|
|
@@ -153,7 +152,7 @@ function handleUploadError(err, file, fileList) {
|
|
|
|
|
|
function handleCourseSelected({ course_id, course_Name,expected_start_time }) {
|
|
|
// eslint-disable-next-line no-console
|
|
|
- // console.log("course_name:::",course_Name)
|
|
|
+ console.log("kebiao=form.value.expected_start_time:::",form.value.expected_start_time)
|
|
|
form.value.purpose = course_Name;
|
|
|
form.value.expected_start_time = expected_start_time;
|
|
|
}
|
|
@@ -191,15 +190,16 @@ function onCourseChange(selectedName: string) {
|
|
|
form.value.teacher_name = selectedCourse.teacher_name;
|
|
|
form.value.classroom = selectedCourse.classroom;
|
|
|
}
|
|
|
+ console.log("form.value.expected_start_time ::",form.value.expected_start_time );
|
|
|
}
|
|
|
|
|
|
function getStartTime(time: number): string {
|
|
|
const timeMap = {
|
|
|
- 1: '09:00',
|
|
|
- 2: '14:00',
|
|
|
- 3: '19:00'
|
|
|
+ 1: '09:00:00',
|
|
|
+ 2: '14:00:00',
|
|
|
+ 3: '19:00:00'
|
|
|
};
|
|
|
- return timeMap[time] || '09:00';
|
|
|
+ return timeMap[time] || '09:00:00';
|
|
|
}
|
|
|
|
|
|
|
|
@@ -213,7 +213,7 @@ const form = ref({
|
|
|
app_user_borrower: 1,
|
|
|
borrower_dept: '',
|
|
|
team_type: 1,
|
|
|
- team_members_count: 1,
|
|
|
+ team_members_count: 2,
|
|
|
team_members: '',
|
|
|
expected_start_time:'',
|
|
|
expected_end_time: "",
|
|
@@ -227,6 +227,49 @@ const showSelectDeviceDialog = ref(false);
|
|
|
const isViewMode = computed(() => props.modelValue?.mode === 'view');
|
|
|
|
|
|
|
|
|
+const rules = {
|
|
|
+ emergency_contact: [
|
|
|
+ { required: true, message: '请输入借用人', trigger: 'change' },
|
|
|
+ ],
|
|
|
+ app_user_borrower: [
|
|
|
+ { required: true, message: '请输入学号或工号', trigger: 'change' },
|
|
|
+ ],
|
|
|
+ emergency_phone: [
|
|
|
+ { required: true, message: '请输入联系电话', trigger: 'change' },
|
|
|
+ ],
|
|
|
+ team_members_count: [
|
|
|
+ { required: true, message: '请输入团队人数', trigger: 'change' },
|
|
|
+ {
|
|
|
+ validator: (_rule, value, callback) => {
|
|
|
+ if (value <= 1) {
|
|
|
+ callback(new Error('团队人数必须大于 1'));
|
|
|
+ } else {
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ trigger: 'change'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ borrower_dept: [
|
|
|
+ { required: true, message: '请输入借用部门', trigger: 'change' },
|
|
|
+ ],
|
|
|
+ expected_end_time: [
|
|
|
+ { required: true, message: '请输选择归还时间', trigger: 'change' },
|
|
|
+ ],
|
|
|
+ team_members:[
|
|
|
+ { required: true, message: '请输入团队其他人员名单', trigger: 'change' },
|
|
|
+ ],
|
|
|
+ team_type: [
|
|
|
+ { required: true, message: '请选择个人或者团队', trigger: 'change' },
|
|
|
+ ],
|
|
|
+ purpose: [
|
|
|
+ { required: true, message: '请输入借用原因', trigger: 'change' },
|
|
|
+ ],
|
|
|
+ applicant_remark: [
|
|
|
+ { required: true, message: '请输入备注', trigger: 'change' },
|
|
|
+ ],
|
|
|
+};
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
try {
|
|
|
const userInfo = JSON.parse(sessionStorage.getItem('userInfo') || '{}');
|
|
@@ -267,14 +310,17 @@ function resetForm() {
|
|
|
|
|
|
watch(() => props.visible, (v) => {
|
|
|
visible.value = v;
|
|
|
+// console.log("快照visible.value::",visible.value)
|
|
|
if (v) {
|
|
|
- if (lastFormSnapshot.value) {
|
|
|
- form.value = { ...lastFormSnapshot.value };
|
|
|
+ if (props.lastFormSnapshot) {
|
|
|
+ console.log("快照lastFormSnapshot.value::",props.lastFormSnapshot )
|
|
|
+ form.value = { ...props.lastFormSnapshot };
|
|
|
} else {
|
|
|
+ // console.log("没有快照lastFormSnapshot.value::",props.lastFormSnapshot )
|
|
|
resetForm(); // 如果没有快照,初始化表单
|
|
|
}
|
|
|
}
|
|
|
-});
|
|
|
+}, { immediate: true });
|
|
|
|
|
|
|
|
|
watch(
|
|
@@ -314,15 +360,17 @@ function onSave() {
|
|
|
}));
|
|
|
const firstLocation = form.value.items[0]?.location || '';
|
|
|
form.value.return_location = firstLocation;
|
|
|
- form.value.expected_start_time = now;
|
|
|
+ // form.value.expected_start_time = now;
|
|
|
+ form.value.expected_start_time = form.value.expected_start_time ? form.value.expected_start_time : now;
|
|
|
form.value.expected_end_time = dayjs(form.value.expected_end_time).format('YYYY-MM-DD HH:mm:ss')|| now;
|
|
|
- form.value.team_members_count=Number(form.value.team_members_count)||1;
|
|
|
+ form.value.team_members_count=Number(form.value.team_members_count)||2;
|
|
|
emit('submit', { ...form.value });
|
|
|
emit('update:visible', false);
|
|
|
- // ElMessage.success("添加成功!");
|
|
|
- lastFormSnapshot.value = { ...form.value }; //用于记忆上次记录
|
|
|
+ // ElMessage.success("添加成功!");
|
|
|
+ emit('update:lastFormSnapshot', cloneDeep(form.value));
|
|
|
+
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
-const rules = {};
|
|
|
+
|
|
|
</script>
|