From 356f54467f525f437f41271fb62f6be66f2ab1e5 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期一, 18 十二月 2023 17:36:11 +0800
Subject: [PATCH] 1. 调整飞羽环境用户信息的编辑

---
 src/views/baseinfo/fysp/scene/CompSceneBaseInfo.vue |  232 +++++++++++++++++++++++++++-------------------------------
 1 files changed, 108 insertions(+), 124 deletions(-)

diff --git a/src/views/baseinfo/fysp/scene/CompSceneBaseInfo.vue b/src/views/baseinfo/fysp/scene/CompSceneBaseInfo.vue
index 7e44c39..4695690 100644
--- a/src/views/baseinfo/fysp/scene/CompSceneBaseInfo.vue
+++ b/src/views/baseinfo/fysp/scene/CompSceneBaseInfo.vue
@@ -1,112 +1,101 @@
 <!-- 鍦烘櫙鍩烘湰淇℃伅缂栬緫 -->
 <template>
-  <el-form
-    :inline="false"
-    :model="formObj"
-    ref="formRef"
+  <FYForm
+    :form-info="_formInfo"
     :rules="rules"
-    label-position="right"
-    label-width="150px"
+    :useReset="true"
+    @submit="submit"
+    @cancel="cancel"
   >
-    <el-form-item label="鍦烘櫙鍚嶇О" prop="name">
-      <el-input
-        clearable
-        show-word-limit
-        v-model="formObj.name"
-        placeholder="鍦烘櫙鍚嶇О"
-      />
-    </el-form-item>
-    <el-form-item label="鍦烘櫙绫诲瀷" prop="_typeObj">
-      <el-select v-model="formObj._typeObj" placeholder="鍦烘櫙绫诲瀷">
-        <el-option
-          v-for="s in sceneTypes"
-          :key="s.value"
-          :label="s.label"
-          :value="s"
+    <template #form-item="{ formObj }">
+      <el-form-item label="鍦烘櫙鍚嶇О" prop="name">
+        <el-input
+          clearable
+          show-word-limit
+          v-model="formObj.name"
+          placeholder="鍦烘櫙鍚嶇О"
         />
-      </el-select>
-    </el-form-item>
-    <el-form-item label="鐪�/甯�/鍖�/闀�" prop="_locations">
-      <el-cascader
-        v-model="formObj._locations"
-        :options="locations"
-        placeholder="鐪�/甯�/鍖�/闀�"
-        style="width: 300px"
-        :props="cascaderProps"
-      />
-    </el-form-item>
-    <el-form-item label="鍦板潃" prop="location">
-      <el-input
-        show-word-limit
-        clearable
-        v-model="formObj.location"
-        placeholder="鍦板潃"
-      />
-    </el-form-item>
-    <el-form-item label="缁忓害" prop="longitude">
-      <!-- <el-input type="number" v-model="formObj.longitude" placeholder="缁忓害" /> -->
-      <el-input-number
-        v-model="formObj.longitude"
-        :precision="6"
-        :step="0.1"
-        controls-position="right"
-      />
-    </el-form-item>
-    <el-form-item label="绾害" prop="latitude">
-      <!-- <el-input type="number" v-model="formObj.latitude" placeholder="绾害" /> -->
-      <el-input-number
-        v-model="formObj.latitude"
-        :precision="6"
-        :step="0.1"
-        controls-position="right"
-      />
-    </el-form-item>
-    <el-form-item label="鑱旂郴浜�" prop="contacts">
-      <el-input
-        show-word-limit
-        clearable
-        v-model="formObj.contacts"
-        placeholder="鑱旂郴浜�"
-      />
-    </el-form-item>
-    <el-form-item label="鑱旂郴鐢佃瘽" prop="contactst">
-      <el-input type="tel" v-model="formObj.contactst" placeholder="鑱旂郴鐢佃瘽">
-        <template #prepend>
-          <el-icon>
-            <Iphone />
-          </el-icon>
-        </template>
-      </el-input>
-    </el-form-item>
-    <el-form-item label="鐘舵��" prop="online">
-      <el-switch v-model="formObj.online" />
-      <span style="margin-left: 16px">{{
-        formObj.online ? '鍦ㄧ嚎' : '涓嬬嚎'
-      }}</span>
-    </el-form-item>
-    <el-form-item label="缂栧彿" prop="index">
-      <el-input-number readonly v-model="formObj.index" :step="1" :min="0" />
-    </el-form-item>
-
-    <el-form-item>
-      <el-button
-        :disabled="!edit"
-        type="primary"
-        @click="onSubmit"
-        :loading="loading"
-        >鎻愪氦</el-button
-      >
-      <el-button :disabled="!edit" @click="onReset">閲嶇疆</el-button>
-    </el-form-item>
-  </el-form>
+      </el-form-item>
+      <el-form-item label="鍦烘櫙绫诲瀷" prop="_typeObj">
+        <el-select v-model="formObj._typeObj" placeholder="鍦烘櫙绫诲瀷">
+          <el-option
+            v-for="s in sceneTypes"
+            :key="s.value"
+            :label="s.label"
+            :value="s"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鐪�/甯�/鍖�/闀�" prop="_locations">
+        <el-cascader
+          v-model="formObj._locations"
+          :options="locations"
+          placeholder="鐪�/甯�/鍖�/闀�"
+          style="width: 300px"
+          :props="cascaderProps"
+        />
+      </el-form-item>
+      <el-form-item label="鍦板潃" prop="location">
+        <el-input
+          show-word-limit
+          clearable
+          v-model="formObj.location"
+          placeholder="鍦板潃"
+        />
+      </el-form-item>
+      <el-form-item label="缁忓害" prop="longitude">
+        <!-- <el-input type="number" v-model="formObj.longitude" placeholder="缁忓害" /> -->
+        <el-input-number
+          v-model="formObj.longitude"
+          :precision="6"
+          :step="0.1"
+          controls-position="right"
+        />
+      </el-form-item>
+      <el-form-item label="绾害" prop="latitude">
+        <!-- <el-input type="number" v-model="formObj.latitude" placeholder="绾害" /> -->
+        <el-input-number
+          v-model="formObj.latitude"
+          :precision="6"
+          :step="0.1"
+          controls-position="right"
+        />
+      </el-form-item>
+      <el-form-item label="鑱旂郴浜�" prop="contacts">
+        <el-input
+          show-word-limit
+          clearable
+          v-model="formObj.contacts"
+          placeholder="鑱旂郴浜�"
+        />
+      </el-form-item>
+      <el-form-item label="鑱旂郴鐢佃瘽" prop="contactst">
+        <el-input type="tel" v-model="formObj.contactst" placeholder="鑱旂郴鐢佃瘽">
+          <template #prepend>
+            <el-icon>
+              <Iphone />
+            </el-icon>
+          </template>
+        </el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="online">
+        <el-switch v-model="formObj.online" />
+        <span style="margin-left: 16px">{{
+          formObj.online ? '鍦ㄧ嚎' : '涓嬬嚎'
+        }}</span>
+      </el-form-item>
+      <el-form-item label="缂栧彿" prop="index">
+        <el-input-number readonly v-model="formObj.index" :step="1" :min="0" />
+      </el-form-item>
+    </template>
+  </FYForm>
 </template>
 
 <script setup>
 import { defineProps, defineEmits, reactive, ref, watch } from 'vue';
-import { enumScene_2NA } from '@/enum/scene';
-import { enumLocationNA } from '@/enum/location';
+import { enumScene } from '@/enum/scene';
+import { enumLocation } from '@/enum/location';
 import sceneApi from '@/api/fysp/sceneApi';
-import { useFormConfirm } from '@/composables/formConfirm';
 
 const props = defineProps({
   //鍦烘櫙鍩烘湰淇℃伅
@@ -117,17 +106,9 @@
 
 const emit = defineEmits(['onSubmit', 'onCancel']);
 
-const { formObj, formRef, edit, onSubmit, onReset } = useFormConfirm({
-  submit: {
-    do: submit,
-  },
-  cancel: {
-    do: cancel,
-  },
-});
-const loading = ref(false);
-const sceneTypes = reactive(enumScene_2NA());
-const locations = reactive(enumLocationNA());
+const _formInfo = ref({});
+const sceneTypes = reactive(enumScene(2, false));
+const locations = reactive(enumLocation(false));
 const cascaderProps = reactive({
   checkStrictly: true,
 });
@@ -169,7 +150,11 @@
   ],
 });
 
-// 鍦烘櫙鍩烘湰淇℃伅鏍煎紡鍖�
+/**
+ * 鍦烘櫙鍩烘湰淇℃伅鏍煎紡鍖�
+ * 瀵瑰満鏅被鍨嬨�佸満鏅鏀垮尯鍒掑拰鍦烘櫙鍙敤鐘舵�佽繘琛屾牸寮忓寲
+ * @param {*} s 鍦烘櫙淇℃伅
+ */
 function parseSceneBaseInfo(s) {
   s._typeObj = {
     label: s.type,
@@ -191,30 +176,28 @@
   return s;
 }
 // 鍒涘缓鏂板満鏅�
-function createScene() {
-  loading.value = true;
+function createScene(formObj, func) {
   return sceneApi
     .createScene(formObj.value)
-    .then((res) => {
-      console.log(res);
+    .then(() => {
+      emit('onSubmit', formObj);
     })
     .finally(() => {
-      loading.value = false;
+      func();
     });
 }
 // 鏇存柊鍦烘櫙
-function updateScene() {
-  loading.value = true;
+function updateScene(formObj, func) {
   return sceneApi
     .updateScene(formObj.value)
-    .then((res) => {
-      console.log(res);
+    .then(() => {
+      emit('onSubmit', formObj);
     })
     .finally(() => {
-      loading.value = false;
+      func();
     });
 }
-function submit() {
+function submit(formObj, func) {
   // 琛屾斂鍖哄垝淇℃伅濉厖
   const a = formObj.value._locations;
   if (a[0]) {
@@ -248,16 +231,17 @@
 
   emit('onSubmit', formObj);
 
-  return props.create ? createScene() : updateScene();
+  return props.create ? createScene(formObj, func) : updateScene(formObj, func);
 }
 function cancel() {
   emit('onCancel');
 }
 
+// 鐩戝惉浼犲叆鐨勫満鏅熀鏈俊鎭紝鍋氱浉搴旂殑鏁版嵁鏍煎紡鍖�
 watch(
   () => props.formInfo,
   (nValue) => {
-    formObj.value = parseSceneBaseInfo(nValue);
+    _formInfo.value = parseSceneBaseInfo(nValue);
   }
 );
 </script>

--
Gitblit v1.9.3