src/views/fysp/scene/CompSceneBaseInfo.vue
@@ -1,19 +1,26 @@
<!-- 场景基本信息编辑 -->
<template>
  <FYForm :form-info="formInfo" :rules="rules" :useReset="true" @submit="submit" @cancel="cancel">
  <FYForm
    :form-info="formInfo"
    :rules="rules"
    :useReset="true"
    @submit="submit"
    @cancel="cancel"
  >
    <template #form-item="{ formObj }">
      <el-form-item label="场景名称" prop="name">
        <el-input clearable show-word-limit v-model="formObj.name" placeholder="场景名称" />
        <el-input
          clearable
          show-word-limit
          v-model="formObj.name"
          placeholder="场景名称"
        />
      </el-form-item>
      <!-- <el-form-item label="场景类型" prop="_scenetype">
        <el-select v-model="formObj._scenetype" placeholder="场景类型">
          <el-option v-for="s in sceneTypes" :key="s.value" :label="s.label" :value="s" />
        </el-select>
      </el-form-item> -->
      <!-- 场景类型 -->
      <FYOptionScene
        :allOption="false"
        :type="2"
        :initValue="false"
        v-model:value="formObj._scenetype"
      ></FYOptionScene>
      <!-- 区县 -->
@@ -25,10 +32,14 @@
        v-model:value="formObj._locations"
      ></FYOptionLocation>
      <el-form-item label="地址" prop="location">
        <el-input show-word-limit clearable v-model="formObj.location" placeholder="地址" />
        <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"
@@ -37,7 +48,6 @@
        />
      </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"
@@ -46,7 +56,12 @@
        />
      </el-form-item>
      <el-form-item label="联系人" prop="contacts">
        <el-input show-word-limit clearable v-model="formObj.contacts" placeholder="联系人" />
        <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="联系电话">
@@ -59,7 +74,9 @@
      </el-form-item>
      <el-form-item label="状态" prop="online">
        <el-switch v-model="formObj.online" />
        <span style="margin-left: 16px">{{ formObj.online ? '在线' : '下线' }}</span>
        <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" />
@@ -69,21 +86,31 @@
</template>
<script setup>
import { defineProps, defineEmits, reactive, ref, unref, watch, computed } from 'vue';
import {
  defineProps,
  defineEmits,
  reactive,
  ref,
  unref,
  watch,
  computed
} from 'vue';
import { enumScene } from '@/enum/scene';
import sceneApi from '@/api/fysp/sceneApi';
const props = defineProps({
  //场景基本信息
  model: {
    type: Object,
    default: () => {
      return {};
    }
    type: Object
    // default: () => {
    //   return {};
    // }
  },
  //是创建或者更新场景
  create: Boolean
});
// const formInfo = ref();
// 场景基本信息,做相应的数据格式化
const formInfo = computed(() => {
@@ -92,7 +119,16 @@
const emit = defineEmits(['onSubmit', 'onCancel']);
const sceneTypes = ref(enumScene(2, false));
// watch(
//   () => props.model,
//   (nV, oV) => {
//     if (nV != oV && nV) {
//       formInfo.value = parseSceneBaseInfo(nV);
//     }
//   }
// );
const rules = reactive({
  name: [
    {
@@ -138,23 +174,25 @@
 */
function parseSceneBaseInfo(param) {
  const s = unref(param);
  s._scenetype = {
    label: s.type,
    value: s.typeid + ''
  };
  if (s) {
    s._scenetype = {
      label: s.type,
      value: s.typeid + ''
    };
  s._locations = {
    pCode: s.provincecode,
    pName: s.provincename,
    cCode: s.citycode,
    cName: s.cityname,
    dCode: s.districtcode,
    dName: s.districtname,
    tCode: s.towncode,
    tName: s.townname
  };
    s._locations = {
      pCode: s.provincecode,
      pName: s.provincename,
      cCode: s.citycode,
      cName: s.cityname,
      dCode: s.districtcode,
      dName: s.districtname,
      tCode: s.towncode,
      tName: s.townname
    };
  s.online = s.extension1 != '0';
    s.online = s.extension1 != '0';
  }
  return s;
}
@@ -187,12 +225,12 @@
  const a = v.value._locations;
  v.value.provincecode = a.pCode;
  v.value.provincename = a.pName;
  v.value.citycode     = a.cCode;
  v.value.cityname     = a.cName;
  v.value.citycode = a.cCode;
  v.value.cityname = a.cName;
  v.value.districtcode = a.dCode;
  v.value.districtname = a.dName;
  v.value.towncode     = a.tCode;
  v.value.townname     = a.tName;
  v.value.towncode = a.tCode;
  v.value.townname = a.tName;
  // 场景类型信息填充
  const b = v.value._scenetype;
@@ -204,7 +242,9 @@
  v.value.updatedate = new Date().toISOString();
  return props.create ? createScene(v.value, success, fail) : updateScene(v.value, success, fail);
  return props.create
    ? createScene(v.value, success, fail)
    : updateScene(v.value, success, fail);
}
function cancel() {
  emit('onCancel');