From 440522ea896377c45ffd80f4b70927d27e701c64 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期一, 25 十二月 2023 17:30:30 +0800
Subject: [PATCH] 编写评估任务模块逻辑,未完成
---
src/components/form/FYForm.vue | 103 +++++++++++++++++++++++++++++++++++++++------------
1 files changed, 79 insertions(+), 24 deletions(-)
diff --git a/src/components/form/FYForm.vue b/src/components/form/FYForm.vue
index 0d68089..a305bde 100644
--- a/src/components/form/FYForm.vue
+++ b/src/components/form/FYForm.vue
@@ -3,21 +3,17 @@
:inline="false"
:model="formObj"
ref="formRef"
- :rules="rules"
+ :rules="allRules"
label-position="right"
label-width="150px"
>
<slot name="form-item" :formObj="formObj"></slot>
- <el-form-item>
- <el-button
- :disabled="!edit"
- type="primary"
- @click="onSubmit"
- :loading="loading"
+ <el-form-item v-if="showButtons">
+ <el-button :disabled="!edit" type="primary" @click="onSubmit" :loading="loading"
>鎻愪氦</el-button
>
- <el-button :disabled="!edit" @click="onReset">閲嶇疆</el-button>
- <el-button v-if="enableCancelBtn" @click="onCancel">鍙栨秷</el-button>
+ <el-button v-if="useReset" :disabled="!edit" @click="onReset">閲嶇疆</el-button>
+ <el-button v-if="useCancel" @click="onCancel">鍙栨秷</el-button>
</el-form-item>
</el-form>
</template>
@@ -30,7 +26,7 @@
* 鍙紶鍏ュ垵濮嬭〃鍗曟暟鎹甪ormInfo锛岃〃鍗曟牎楠岃鍒檙ules
* 瀹炵幇submit鍜宑ancel瑙﹀彂鍑芥暟
*/
-import { defineProps, defineEmits, reactive, ref, watch } from 'vue';
+import { defineProps, defineEmits, reactive, ref, watch, computed, defineExpose } from 'vue';
import { useFormConfirm } from '@/composables/formConfirm';
const props = defineProps({
@@ -38,25 +34,69 @@
formInfo: Object,
//琛ㄥ崟妫�楠岃鍒�
rules: Object,
+ showButtons: {
+ type: Boolean,
+ default: true
+ },
//鍙栨秷鎸夐挳鏄惁鍙敤
- enableCancelBtn: Boolean,
+ useCancel: Boolean,
+ //閲嶇疆鎸夐挳鏄惁鍙敤
+ useReset: Boolean,
//瑙﹀彂閲嶇疆
- reset: Boolean,
+ doClear: Boolean,
//閫氱煡缂栬緫鐘舵��
- isEdit: Boolean,
+ isEdit: Boolean
});
//瑙﹀彂鍑芥暟锛屾彁浜ゅ拰鍙栨秷
const emit = defineEmits(['submit', 'cancel', 'update:isEdit']);
+const baseRules = reactive({
+ _usertype: [
+ {
+ required: true,
+ message: '鐢ㄦ埛绫诲瀷涓嶈兘涓虹┖',
+ trigger: 'change'
+ }
+ ],
+ _locations: [
+ {
+ required: true,
+ message: '琛屾斂鍖哄垝涓嶈兘涓虹┖',
+ trigger: 'change',
+ // validator: (rule, value, callback) => {
+ // if (!value) {
+ // callback(new Error('Please input the age'));
+ // } else {
+ // callback()
+ // }
+ // }
+ }
+ ],
+ _scenetype: [
+ {
+ required: true,
+ message: '鍦烘櫙绫诲瀷涓嶈兘涓虹┖',
+ trigger: 'change',
+ // validator: (rule, value, callback) => {
+ // if (!value) {
+ // callback(new Error('Please input the age'));
+ // } else {
+ // callback()
+ // }
+ // }
+ }
+ ]
+});
+
//琛ㄥ崟鎿嶄綔鍑芥暟
-const { formObj, formRef, edit, onSubmit, onCancel, onReset } = useFormConfirm({
+const { formObj, formRef, edit, onSubmit, onCancel, onReset, clear } = useFormConfirm({
submit: {
- do: submit,
+ do: submit
},
cancel: {
- do: cancel,
- },
+ do: cancel
+ }
});
//鍔犺浇鐘舵��
@@ -66,10 +106,18 @@
function submit() {
loading.value = true;
return new Promise((resolve, reject) => {
- emit('submit', formObj, () => {
- loading.value = false;
- resolve();
- });
+ emit(
+ 'submit',
+ formObj,
+ () => {
+ loading.value = false;
+ resolve();
+ },
+ (err) => {
+ loading.value = false;
+ reject(err);
+ }
+ );
});
}
@@ -78,20 +126,25 @@
emit('cancel');
}
+const allRules = computed(() => {
+ return { ...baseRules, ...props.rules };
+});
+
//鐩戝惉琛ㄥ崟鍒濆鏁版嵁浼犲叆
watch(
() => props.formInfo,
(nValue) => {
formObj.value = nValue;
- }
+ },
+ { deep: true, immediate: true }
);
//鐩戝惉琛ㄥ崟閲嶇疆鍔熻兘瑙﹀彂
watch(
- () => props.reset,
+ () => props.doClear,
(nValue) => {
if (nValue) {
- onReset();
+ clear();
}
}
);
@@ -100,6 +153,8 @@
watch(edit, (nValue) => {
emit('update:isEdit', nValue);
});
+
+defineExpose({ formObj, onSubmit, onCancel, onReset });
</script>
<style scoped></style>
--
Gitblit v1.9.3