From beca65f4d01ca07c358102a35b949c2a4f277afe Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期三, 24 五月 2023 10:36:27 +0800
Subject: [PATCH] 增加车间监控界面

---
 src/views/demo/form/index.vue | 1218 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 609 insertions(+), 609 deletions(-)

diff --git a/src/views/demo/form/index.vue b/src/views/demo/form/index.vue
index 1ee30be..22719f0 100644
--- a/src/views/demo/form/index.vue
+++ b/src/views/demo/form/index.vue
@@ -1,621 +1,621 @@
 <template>
-  <PageWrapper title="琛ㄥ崟鍩虹绀轰緥" contentFullHeight>
-    <CollapseContainer title="鍩虹绀轰緥">
-      <BasicForm
-        autoFocusFirstItem
-        :labelWidth="200"
-        :schemas="schemas"
-        :actionColOptions="{ span: 24 }"
-        :labelCol="{ span: 8 }"
-        @submit="handleSubmit"
-        @reset="handleReset"
-      >
-        <template #jAreaLinkage="{ model, field }">
-          <JAreaLinkage v-model:value="model[field]" :showArea="true" :showAll="false" />
-        </template>
-        <template #localSearch="{ model, field }">
-          <ApiSelect
-            :api="optionsListApi"
-            showSearch
-            v-model:value="model[field]"
-            optionFilterProp="label"
-            resultField="list"
-            labelField="name"
-            valueField="id"
-          />
-        </template>
-        <template #selectA="{ model, field }">
-          <a-select :options="optionsA" mode="multiple" v-model:value="model[field]" @change="valueSelectA = model[field]" allowClear />
-        </template>
-        <template #selectB="{ model, field }">
-          <a-select :options="optionsB" mode="multiple" v-model:value="model[field]" @change="valueSelectB = model[field]" allowClear />
-        </template>
-        <template #remoteSearch="{ model, field }">
-          <ApiSelect
-            :api="optionsListApi"
-            showSearch
-            v-model:value="model[field]"
-            :filterOption="false"
-            resultField="list"
-            labelField="name"
-            valueField="id"
-            @search="onSearch"
-          />
-        </template>
-      </BasicForm>
-    </CollapseContainer>
-  </PageWrapper>
+	<PageWrapper title="琛ㄥ崟鍩虹绀轰緥" contentFullHeight>
+		<CollapseContainer title="鍩虹绀轰緥">
+			<BasicForm
+				autoFocusFirstItem
+				:labelWidth="200"
+				:schemas="schemas"
+				:actionColOptions="{ span: 24 }"
+				:labelCol="{ span: 8 }"
+				@submit="handleSubmit"
+				@reset="handleReset"
+			>
+				<template #jAreaLinkage="{ model, field }">
+					<JAreaLinkage v-model:value="model[field]" :showArea="true" :showAll="false" />
+				</template>
+				<template #localSearch="{ model, field }">
+					<ApiSelect
+						:api="optionsListApi"
+						showSearch
+						v-model:value="model[field]"
+						optionFilterProp="label"
+						resultField="list"
+						labelField="name"
+						valueField="id"
+					/>
+				</template>
+				<template #selectA="{ model, field }">
+					<a-select :options="optionsA" mode="multiple" v-model:value="model[field]" @change="valueSelectA = model[field]" allowClear />
+				</template>
+				<template #selectB="{ model, field }">
+					<a-select :options="optionsB" mode="multiple" v-model:value="model[field]" @change="valueSelectB = model[field]" allowClear />
+				</template>
+				<template #remoteSearch="{ model, field }">
+					<ApiSelect
+						:api="optionsListApi"
+						showSearch
+						v-model:value="model[field]"
+						:filterOption="false"
+						resultField="list"
+						labelField="name"
+						valueField="id"
+						@search="onSearch"
+					/>
+				</template>
+			</BasicForm>
+		</CollapseContainer>
+	</PageWrapper>
 </template>
 <script lang="ts">
-  import { computed, defineComponent, unref, ref } from 'vue';
-  import { BasicForm, FormSchema, ApiSelect, JAreaLinkage } from '/@/components/Form/index';
-  import { CollapseContainer } from '/@/components/Container';
-  import { useMessage } from '/@/hooks/web/useMessage';
-  import { PageWrapper } from '/@/components/Page';
+	import { computed, defineComponent, unref, ref } from 'vue'
+	import { BasicForm, FormSchema, ApiSelect, JAreaLinkage } from '/@/components/Form/index'
+	import { CollapseContainer } from '/@/components/Container'
+	import { useMessage } from '/@/hooks/web/useMessage'
+	import { PageWrapper } from '/@/components/Page'
 
-  import { optionsListApi } from '/@/api/demo/select';
-  import { useDebounceFn } from '@vueuse/core';
-  import { treeOptionsListApi } from '/@/api/demo/tree';
-  import { Select } from 'ant-design-vue';
-  import { cloneDeep } from 'lodash-es';
+	import { optionsListApi } from '/@/api/demo/select'
+	import { useDebounceFn } from '@vueuse/core'
+	import { treeOptionsListApi } from '/@/api/demo/tree'
+	import { Select } from 'ant-design-vue'
+	import { cloneDeep } from 'lodash-es'
 
-  const valueSelectA = ref<string[]>([]);
-  const valueSelectB = ref<string[]>([]);
-  const options = ref<Recordable[]>([]);
-  for (let i = 1; i < 10; i++) options.value.push({ label: '閫夐」' + i, value: `${i}` });
+	const valueSelectA = ref<string[]>([])
+	const valueSelectB = ref<string[]>([])
+	const options = ref<Recordable[]>([])
+	for (let i = 1; i < 10; i++) options.value.push({ label: '閫夐」' + i, value: `${i}` })
 
-  const optionsA = computed(() => {
-    return cloneDeep(unref(options)).map((op) => {
-      op.disabled = unref(valueSelectB).indexOf(op.value) !== -1;
-      return op;
-    });
-  });
-  const optionsB = computed(() => {
-    return cloneDeep(unref(options)).map((op) => {
-      op.disabled = unref(valueSelectA).indexOf(op.value) !== -1;
-      return op;
-    });
-  });
-  const provincesOptions = [
-    {
-      id: 'guangdong',
-      label: '骞夸笢鐪�',
-      value: '1',
-      key: '1',
-    },
-    {
-      id: 'jiangsu',
-      label: '姹熻嫃鐪�',
-      value: '2',
-      key: '2',
-    },
-  ];
-  const citiesOptionsData = {
-    guangdong: [
-      {
-        label: '鐝犳捣甯�',
-        value: '1',
-        key: '1',
-      },
-      {
-        label: '娣卞湷甯�',
-        value: '2',
-        key: '2',
-      },
-      {
-        label: '骞垮窞甯�',
-        value: '3',
-        key: '3',
-      },
-    ],
-    jiangsu: [
-      {
-        label: '鍗椾含甯�',
-        value: '1',
-        key: '1',
-      },
-      {
-        label: '鏃犻敗甯�',
-        value: '2',
-        key: '2',
-      },
-      {
-        label: '鑻忓窞甯�',
-        value: '3',
-        key: '3',
-      },
-    ],
-  };
+	const optionsA = computed(() => {
+		return cloneDeep(unref(options)).map((op) => {
+			op.disabled = unref(valueSelectB).indexOf(op.value) !== -1
+			return op
+		})
+	})
+	const optionsB = computed(() => {
+		return cloneDeep(unref(options)).map((op) => {
+			op.disabled = unref(valueSelectA).indexOf(op.value) !== -1
+			return op
+		})
+	})
+	const provincesOptions = [
+		{
+			id: 'guangdong',
+			label: '骞夸笢鐪�',
+			value: '1',
+			key: '1',
+		},
+		{
+			id: 'jiangsu',
+			label: '姹熻嫃鐪�',
+			value: '2',
+			key: '2',
+		},
+	]
+	const citiesOptionsData = {
+		guangdong: [
+			{
+				label: '鐝犳捣甯�',
+				value: '1',
+				key: '1',
+			},
+			{
+				label: '娣卞湷甯�',
+				value: '2',
+				key: '2',
+			},
+			{
+				label: '骞垮窞甯�',
+				value: '3',
+				key: '3',
+			},
+		],
+		jiangsu: [
+			{
+				label: '鍗椾含甯�',
+				value: '1',
+				key: '1',
+			},
+			{
+				label: '鏃犻敗甯�',
+				value: '2',
+				key: '2',
+			},
+			{
+				label: '鑻忓窞甯�',
+				value: '3',
+				key: '3',
+			},
+		],
+	}
 
-  const schemas: FormSchema[] = [
-    {
-      field: 'divider-basic',
-      component: 'Divider',
-      label: '鍩虹瀛楁',
-    },
-    {
-      field: 'field1',
-      component: 'Input',
-      label: '瀛楁1',
+	const schemas: FormSchema[] = [
+		{
+			field: 'divider-basic',
+			component: 'Divider',
+			label: '鍩虹瀛楁',
+		},
+		{
+			field: 'field1',
+			component: 'Input',
+			label: '瀛楁1',
 
-      colProps: {
-        span: 8,
-      },
-      // componentProps:{},
-      // can func
-      componentProps: ({ schema, formModel }) => {
-        console.log('form:', schema);
-        console.log('formModel:', formModel);
-        return {
-          placeholder: '鑷畾涔塸laceholder',
-          onChange: (e: any) => {
-            console.log(e);
-          },
-        };
-      },
-      renderComponentContent: () => {
-        return {
-          prefix: () => 'pSlot',
-          suffix: () => 'sSlot',
-        };
-      },
-    },
-    {
-      field: 'field2',
-      component: 'Input',
-      label: '瀛楁2',
-      defaultValue: '111',
-      colProps: {
-        span: 8,
-      },
-      componentProps: {
-        onChange: (e: any) => {
-          console.log(e);
-        },
-      },
-      suffix: '澶�',
-    },
-    {
-      field: 'field3',
-      component: 'DatePicker',
-      label: '瀛楁3',
-      colProps: {
-        span: 8,
-      },
-    },
-    {
-      field: 'field4',
-      component: 'Select',
-      label: '瀛楁4',
-      colProps: {
-        span: 8,
-      },
-      componentProps: {
-        options: [
-          {
-            label: '閫夐」1',
-            value: '1',
-            key: '1',
-          },
-          {
-            label: '閫夐」2',
-            value: '2',
-            key: '2',
-          },
-        ],
-      },
-    },
-    {
-      field: 'field5',
-      component: 'CheckboxGroup',
-      label: '瀛楁5',
-      colProps: {
-        span: 8,
-      },
-      componentProps: {
-        options: [
-          {
-            label: '閫夐」1',
-            value: '1',
-          },
-          {
-            label: '閫夐」2',
-            value: '2',
-          },
-        ],
-      },
-    },
-    {
-      field: 'field7',
-      component: 'RadioGroup',
-      label: '瀛楁7',
-      colProps: {
-        span: 8,
-      },
-      componentProps: {
-        options: [
-          {
-            label: '閫夐」1',
-            value: '1',
-          },
-          {
-            label: '閫夐」2',
-            value: '2',
-          },
-        ],
-      },
-    },
-    {
-      field: 'field8',
-      component: 'Checkbox',
-      label: '瀛楁8',
-      colProps: {
-        span: 8,
-      },
-      renderComponentContent: 'Check',
-    },
-    {
-      field: 'field9',
-      component: 'Switch',
-      label: '瀛楁9',
-      colProps: {
-        span: 8,
-      },
-    },
-    {
-      field: 'field10',
-      component: 'RadioButtonGroup',
-      label: '瀛楁10',
-      colProps: {
-        span: 8,
-      },
-      componentProps: {
-        options: [
-          {
-            label: '閫夐」1',
-            value: '1',
-          },
-          {
-            label: '閫夐」2',
-            value: '2',
-          },
-        ],
-      },
-    },
-    {
-      field: 'field11',
-      component: 'Cascader',
-      label: '瀛楁11',
-      colProps: {
-        span: 8,
-      },
-      componentProps: {
-        options: [
-          {
-            value: 'zhejiang',
-            label: 'Zhejiang',
-            children: [
-              {
-                value: 'hangzhou',
-                label: 'Hangzhou',
-                children: [
-                  {
-                    value: 'xihu',
-                    label: 'West Lake',
-                  },
-                ],
-              },
-            ],
-          },
-          {
-            value: 'jiangsu',
-            label: 'Jiangsu',
-            children: [
-              {
-                value: 'nanjing',
-                label: 'Nanjing',
-                children: [
-                  {
-                    value: 'zhonghuamen',
-                    label: 'Zhong Hua Men',
-                  },
-                ],
-              },
-            ],
-          },
-        ],
-      },
-    },
-    {
-      field: 'divider-api-select',
-      component: 'Divider',
-      label: '杩滅▼涓嬫媺婕旂ず',
-    },
-    {
-      field: 'field30',
-      component: 'ApiSelect',
-      label: '鎳掑姞杞借繙绋嬩笅鎷�',
-      required: true,
-      componentProps: {
-        // more details see /src/components/Form/src/components/ApiSelect.vue
-        api: optionsListApi,
-        params: {
-          id: 1,
-        },
-        resultField: 'list',
-        // use name as label
-        labelField: 'name',
-        // use id as value
-        valueField: 'id',
-        // not request untill to select
-        immediate: false,
-        onChange: (e) => {
-          console.log('selected:', e);
-        },
-        // atfer request callback
-        onOptionsChange: (options) => {
-          console.log('get options', options.length, options);
-        },
-      },
-      colProps: {
-        span: 8,
-      },
-      defaultValue: '0',
-    },
-    {
-      field: 'field311',
-      component: 'JAreaLinkage',
-      label: '鐪佸競鍖洪�夋嫨',
-      helpMessage: ['JAreaLinkage缁勪欢', '鐪佸競鍖洪�夋嫨'],
-      required: true,
-      slot: 'jAreaLinkage',
-      colProps: {
-        span: 8,
-      },
-      defaultValue: ['130000', '130200'],
-    },
-    {
-      field: 'field31',
-      component: 'Input',
-      label: '涓嬫媺鏈湴鎼滅储',
-      helpMessage: ['ApiSelect缁勪欢', '杩滅▼鏁版嵁婧愭湰鍦版悳绱�', '鍙彂璧蜂竴娆¤姹傝幏鍙栨墍鏈夐�夐」'],
-      required: true,
-      slot: 'localSearch',
-      colProps: {
-        span: 8,
-      },
-      defaultValue: '0',
-    },
-    {
-      field: 'field32',
-      component: 'Input',
-      label: '涓嬫媺杩滅▼鎼滅储',
-      helpMessage: ['ApiSelect缁勪欢', '灏嗗叧閿瘝鍙戦�佸埌鎺ュ彛杩涜杩滅▼鎼滅储'],
-      required: true,
-      slot: 'remoteSearch',
-      colProps: {
-        span: 8,
-      },
-      defaultValue: '0',
-    },
-    {
-      field: 'field33',
-      component: 'ApiTreeSelect',
-      label: '杩滅▼涓嬫媺鏍�',
-      helpMessage: ['ApiTreeSelect缁勪欢', '浣跨敤鎺ュ彛鎻愪緵鐨勬暟鎹敓鎴愰�夐」'],
-      required: true,
-      componentProps: {
-        api: treeOptionsListApi,
-        resultField: 'list',
-      },
-      colProps: {
-        span: 8,
-      },
-    },
-    {
-      field: 'field34',
-      component: 'ApiRadioGroup',
-      label: '杩滅▼Radio',
-      helpMessage: ['ApiRadioGroup缁勪欢', '浣跨敤鎺ュ彛鎻愪緵鐨勬暟鎹敓鎴愰�夐」'],
-      required: true,
-      componentProps: {
-        api: optionsListApi,
-        params: {
-          count: 2,
-        },
-        resultField: 'list',
-        // use name as label
-        labelField: 'name',
-        // use id as value
-        valueField: 'id',
-      },
-      defaultValue: '1',
-      colProps: {
-        span: 8,
-      },
-    },
-    {
-      field: 'field35',
-      component: 'ApiRadioGroup',
-      label: '杩滅▼Radio',
-      helpMessage: ['ApiRadioGroup缁勪欢', '浣跨敤鎺ュ彛鎻愪緵鐨勬暟鎹敓鎴愰�夐」'],
-      required: true,
-      componentProps: {
-        api: optionsListApi,
-        params: {
-          count: 2,
-        },
-        resultField: 'list',
-        // use name as label
-        labelField: 'name',
-        // use id as value
-        valueField: 'id',
-        isBtn: true,
-      },
-      colProps: {
-        span: 8,
-      },
-    },
-    {
-      field: 'divider-linked',
-      component: 'Divider',
-      label: '瀛楁鑱斿姩',
-    },
-    {
-      field: 'province',
-      component: 'Select',
-      label: '鐪佷唤',
-      colProps: {
-        span: 8,
-      },
-      componentProps: ({ formModel, formActionType }) => {
-        return {
-          options: provincesOptions,
-          placeholder: '鐪佷唤涓庡煄甯傝仈鍔�',
-          onChange: (e: any) => {
-            // console.log(e)
-            let citiesOptions = e == 1 ? citiesOptionsData[provincesOptions[0].id] : citiesOptionsData[provincesOptions[1].id];
-            // console.log(citiesOptions)
-            if (e === undefined) {
-              citiesOptions = [];
-            }
-            formModel.city = undefined; //  reset city value
-            const { updateSchema } = formActionType;
-            updateSchema({
-              field: 'city',
-              componentProps: {
-                options: citiesOptions,
-              },
-            });
-          },
-        };
-      },
-    },
-    {
-      field: 'city',
-      component: 'Select',
-      label: '鍩庡競',
-      colProps: {
-        span: 8,
-      },
-      componentProps: {
-        options: [], // defalut []
-        placeholder: '鐪佷唤涓庡煄甯傝仈鍔�',
-      },
-    },
-    {
-      field: 'divider-selects',
-      component: 'Divider',
-      label: '浜掓枼澶氶��',
-      helpMessage: ['涓や釜Select鍏辩敤鏁版嵁婧�', '浣嗕笉鍙�夋嫨瀵规柟宸查�変腑鐨勯」鐩�'],
-    },
-    {
-      field: 'selectA',
-      component: 'Select',
-      label: '浜掓枼SelectA',
-      slot: 'selectA',
-      defaultValue: [],
-      colProps: {
-        span: 8,
-      },
-    },
-    {
-      field: 'selectB',
-      component: 'Select',
-      label: '浜掓枼SelectB',
-      slot: 'selectB',
-      defaultValue: [],
-      colProps: {
-        span: 8,
-      },
-    },
-    {
-      field: 'divider-others',
-      component: 'Divider',
-      label: '鍏跺畠',
-    },
-    {
-      field: 'field20',
-      component: 'InputNumber',
-      label: '瀛楁20',
-      required: true,
-      colProps: {
-        span: 8,
-      },
-    },
-    {
-      field: 'field21',
-      component: 'Slider',
-      label: '瀛楁21',
-      componentProps: {
-        min: 0,
-        max: 100,
-        range: true,
-        marks: {
-          20: '20掳C',
-          60: '60掳C',
-        },
-      },
-      colProps: {
-        span: 8,
-      },
-    },
-    {
-      field: 'field22',
-      component: 'Rate',
-      label: '瀛楁22',
-      defaultValue: 3,
-      colProps: {
-        span: 8,
-      },
-      componentProps: {
-        disabled: false,
-        allowHalf: true,
-      },
-    },
-  ];
+			colProps: {
+				span: 8,
+			},
+			// componentProps:{},
+			// can func
+			componentProps: ({ schema, formModel }) => {
+				console.log('form:', schema)
+				console.log('formModel:', formModel)
+				return {
+					placeholder: '鑷畾涔塸laceholder',
+					onChange: (e: any) => {
+						console.log(e)
+					},
+				}
+			},
+			renderComponentContent: () => {
+				return {
+					prefix: () => 'pSlot',
+					suffix: () => 'sSlot',
+				}
+			},
+		},
+		{
+			field: 'field2',
+			component: 'Input',
+			label: '瀛楁2',
+			defaultValue: '111',
+			colProps: {
+				span: 8,
+			},
+			componentProps: {
+				onChange: (e: any) => {
+					console.log(e)
+				},
+			},
+			suffix: '澶�',
+		},
+		{
+			field: 'field3',
+			component: 'DatePicker',
+			label: '瀛楁3',
+			colProps: {
+				span: 8,
+			},
+		},
+		{
+			field: 'field4',
+			component: 'Select',
+			label: '瀛楁4',
+			colProps: {
+				span: 8,
+			},
+			componentProps: {
+				options: [
+					{
+						label: '閫夐」1',
+						value: '1',
+						key: '1',
+					},
+					{
+						label: '閫夐」2',
+						value: '2',
+						key: '2',
+					},
+				],
+			},
+		},
+		{
+			field: 'field5',
+			component: 'CheckboxGroup',
+			label: '瀛楁5',
+			colProps: {
+				span: 8,
+			},
+			componentProps: {
+				options: [
+					{
+						label: '閫夐」1',
+						value: '1',
+					},
+					{
+						label: '閫夐」2',
+						value: '2',
+					},
+				],
+			},
+		},
+		{
+			field: 'field7',
+			component: 'RadioGroup',
+			label: '瀛楁7',
+			colProps: {
+				span: 8,
+			},
+			componentProps: {
+				options: [
+					{
+						label: '閫夐」1',
+						value: '1',
+					},
+					{
+						label: '閫夐」2',
+						value: '2',
+					},
+				],
+			},
+		},
+		{
+			field: 'field8',
+			component: 'Checkbox',
+			label: '瀛楁8',
+			colProps: {
+				span: 8,
+			},
+			renderComponentContent: 'Check',
+		},
+		{
+			field: 'field9',
+			component: 'Switch',
+			label: '瀛楁9',
+			colProps: {
+				span: 8,
+			},
+		},
+		{
+			field: 'field10',
+			component: 'RadioButtonGroup',
+			label: '瀛楁10',
+			colProps: {
+				span: 8,
+			},
+			componentProps: {
+				options: [
+					{
+						label: '閫夐」1',
+						value: '1',
+					},
+					{
+						label: '閫夐」2',
+						value: '2',
+					},
+				],
+			},
+		},
+		{
+			field: 'field11',
+			component: 'Cascader',
+			label: '瀛楁11',
+			colProps: {
+				span: 8,
+			},
+			componentProps: {
+				options: [
+					{
+						value: 'zhejiang',
+						label: 'Zhejiang',
+						children: [
+							{
+								value: 'hangzhou',
+								label: 'Hangzhou',
+								children: [
+									{
+										value: 'xihu',
+										label: 'West Lake',
+									},
+								],
+							},
+						],
+					},
+					{
+						value: 'jiangsu',
+						label: 'Jiangsu',
+						children: [
+							{
+								value: 'nanjing',
+								label: 'Nanjing',
+								children: [
+									{
+										value: 'zhonghuamen',
+										label: 'Zhong Hua Men',
+									},
+								],
+							},
+						],
+					},
+				],
+			},
+		},
+		{
+			field: 'divider-api-select',
+			component: 'Divider',
+			label: '杩滅▼涓嬫媺婕旂ず',
+		},
+		{
+			field: 'field30',
+			component: 'ApiSelect',
+			label: '鎳掑姞杞借繙绋嬩笅鎷�',
+			required: true,
+			componentProps: {
+				// more details see /src/components/Form/src/components/ApiSelect.vue
+				api: optionsListApi,
+				params: {
+					id: 1,
+				},
+				resultField: 'list',
+				// use name as label
+				labelField: 'name',
+				// use id as value
+				valueField: 'id',
+				// not request untill to select
+				immediate: false,
+				onChange: (e) => {
+					console.log('selected:', e)
+				},
+				// atfer request callback
+				onOptionsChange: (options) => {
+					console.log('get options', options.length, options)
+				},
+			},
+			colProps: {
+				span: 8,
+			},
+			defaultValue: '0',
+		},
+		{
+			field: 'field311',
+			component: 'JAreaLinkage',
+			label: '鐪佸競鍖洪�夋嫨',
+			helpMessage: ['JAreaLinkage缁勪欢', '鐪佸競鍖洪�夋嫨'],
+			required: true,
+			slot: 'jAreaLinkage',
+			colProps: {
+				span: 8,
+			},
+			defaultValue: ['130000', '130200'],
+		},
+		{
+			field: 'field31',
+			component: 'Input',
+			label: '涓嬫媺鏈湴鎼滅储',
+			helpMessage: ['ApiSelect缁勪欢', '杩滅▼鏁版嵁婧愭湰鍦版悳绱�', '鍙彂璧蜂竴娆¤姹傝幏鍙栨墍鏈夐�夐」'],
+			required: true,
+			slot: 'localSearch',
+			colProps: {
+				span: 8,
+			},
+			defaultValue: '0',
+		},
+		{
+			field: 'field32',
+			component: 'Input',
+			label: '涓嬫媺杩滅▼鎼滅储',
+			helpMessage: ['ApiSelect缁勪欢', '灏嗗叧閿瘝鍙戦�佸埌鎺ュ彛杩涜杩滅▼鎼滅储'],
+			required: true,
+			slot: 'remoteSearch',
+			colProps: {
+				span: 8,
+			},
+			defaultValue: '0',
+		},
+		{
+			field: 'field33',
+			component: 'ApiTreeSelect',
+			label: '杩滅▼涓嬫媺鏍�',
+			helpMessage: ['ApiTreeSelect缁勪欢', '浣跨敤鎺ュ彛鎻愪緵鐨勬暟鎹敓鎴愰�夐」'],
+			required: true,
+			componentProps: {
+				api: treeOptionsListApi,
+				resultField: 'list',
+			},
+			colProps: {
+				span: 8,
+			},
+		},
+		{
+			field: 'field34',
+			component: 'ApiRadioGroup',
+			label: '杩滅▼Radio',
+			helpMessage: ['ApiRadioGroup缁勪欢', '浣跨敤鎺ュ彛鎻愪緵鐨勬暟鎹敓鎴愰�夐」'],
+			required: true,
+			componentProps: {
+				api: optionsListApi,
+				params: {
+					count: 2,
+				},
+				resultField: 'list',
+				// use name as label
+				labelField: 'name',
+				// use id as value
+				valueField: 'id',
+			},
+			defaultValue: '1',
+			colProps: {
+				span: 8,
+			},
+		},
+		{
+			field: 'field35',
+			component: 'ApiRadioGroup',
+			label: '杩滅▼Radio',
+			helpMessage: ['ApiRadioGroup缁勪欢', '浣跨敤鎺ュ彛鎻愪緵鐨勬暟鎹敓鎴愰�夐」'],
+			required: true,
+			componentProps: {
+				api: optionsListApi,
+				params: {
+					count: 2,
+				},
+				resultField: 'list',
+				// use name as label
+				labelField: 'name',
+				// use id as value
+				valueField: 'id',
+				isBtn: true,
+			},
+			colProps: {
+				span: 8,
+			},
+		},
+		{
+			field: 'divider-linked',
+			component: 'Divider',
+			label: '瀛楁鑱斿姩',
+		},
+		{
+			field: 'province',
+			component: 'Select',
+			label: '鐪佷唤',
+			colProps: {
+				span: 8,
+			},
+			componentProps: ({ formModel, formActionType }) => {
+				return {
+					options: provincesOptions,
+					placeholder: '鐪佷唤涓庡煄甯傝仈鍔�',
+					onChange: (e: any) => {
+						// console.log(e)
+						let citiesOptions = e == 1 ? citiesOptionsData[provincesOptions[0].id] : citiesOptionsData[provincesOptions[1].id]
+						// console.log(citiesOptions)
+						if (e === undefined) {
+							citiesOptions = []
+						}
+						formModel.city = undefined //  reset city value
+						const { updateSchema } = formActionType
+						updateSchema({
+							field: 'city',
+							componentProps: {
+								options: citiesOptions,
+							},
+						})
+					},
+				}
+			},
+		},
+		{
+			field: 'city',
+			component: 'Select',
+			label: '鍩庡競',
+			colProps: {
+				span: 8,
+			},
+			componentProps: {
+				options: [], // defalut []
+				placeholder: '鐪佷唤涓庡煄甯傝仈鍔�',
+			},
+		},
+		{
+			field: 'divider-selects',
+			component: 'Divider',
+			label: '浜掓枼澶氶��',
+			helpMessage: ['涓や釜Select鍏辩敤鏁版嵁婧�', '浣嗕笉鍙�夋嫨瀵规柟宸查�変腑鐨勯」鐩�'],
+		},
+		{
+			field: 'selectA',
+			component: 'Select',
+			label: '浜掓枼SelectA',
+			slot: 'selectA',
+			defaultValue: [],
+			colProps: {
+				span: 8,
+			},
+		},
+		{
+			field: 'selectB',
+			component: 'Select',
+			label: '浜掓枼SelectB',
+			slot: 'selectB',
+			defaultValue: [],
+			colProps: {
+				span: 8,
+			},
+		},
+		{
+			field: 'divider-others',
+			component: 'Divider',
+			label: '鍏跺畠',
+		},
+		{
+			field: 'field20',
+			component: 'InputNumber',
+			label: '瀛楁20',
+			required: true,
+			colProps: {
+				span: 8,
+			},
+		},
+		{
+			field: 'field21',
+			component: 'Slider',
+			label: '瀛楁21',
+			componentProps: {
+				min: 0,
+				max: 100,
+				range: true,
+				marks: {
+					20: '20掳C',
+					60: '60掳C',
+				},
+			},
+			colProps: {
+				span: 8,
+			},
+		},
+		{
+			field: 'field22',
+			component: 'Rate',
+			label: '瀛楁22',
+			defaultValue: 3,
+			colProps: {
+				span: 8,
+			},
+			componentProps: {
+				disabled: false,
+				allowHalf: true,
+			},
+		},
+	]
 
-  export default defineComponent({
-    components: {
-      BasicForm,
-      CollapseContainer,
-      PageWrapper,
-      ApiSelect,
-      JAreaLinkage,
-      ASelect: Select,
-    },
-    setup() {
-      const check = ref(null);
-      const { createMessage } = useMessage();
-      const keyword = ref<string>('');
-      const searchParams = computed<Recordable>(() => {
-        return { keyword: unref(keyword) };
-      });
+	export default defineComponent({
+		components: {
+			BasicForm,
+			CollapseContainer,
+			PageWrapper,
+			ApiSelect,
+			JAreaLinkage,
+			ASelect: Select,
+		},
+		setup() {
+			const check = ref(null)
+			const { createMessage } = useMessage()
+			const keyword = ref<string>('')
+			const searchParams = computed<Recordable>(() => {
+				return { keyword: unref(keyword) }
+			})
 
-      function onSearch(value: string) {
-        keyword.value = value;
-      }
-      function areaChange(value) {
-        alert(value);
-      }
+			function onSearch(value: string) {
+				keyword.value = value
+			}
+			function areaChange(value) {
+				alert(value)
+			}
 
-      return {
-        schemas,
-        optionsListApi,
-        optionsA,
-        optionsB,
-        valueSelectA,
-        valueSelectB,
-        onSearch: useDebounceFn(onSearch, 300),
-        searchParams,
-        handleReset: () => {
-          keyword.value = '';
-        },
-        handleSubmit: (values: any) => {
-          createMessage.success('click search,values:' + JSON.stringify(values));
-        },
-        check,
-      };
-    },
-  });
+			return {
+				schemas,
+				optionsListApi,
+				optionsA,
+				optionsB,
+				valueSelectA,
+				valueSelectB,
+				onSearch: useDebounceFn(onSearch, 300),
+				searchParams,
+				handleReset: () => {
+					keyword.value = ''
+				},
+				handleSubmit: (values: any) => {
+					createMessage.success('click search,values:' + JSON.stringify(values))
+				},
+				check,
+			}
+		},
+	})
 </script>

--
Gitblit v1.9.3