106 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Vue
		
	
	
| <docs>
 | ||
| ---
 | ||
| order: 4
 | ||
| title:
 | ||
|   zh-CN: 表单禁用
 | ||
|   en-US: Form disabled
 | ||
| ---
 | ||
| 
 | ||
| ## zh-CN
 | ||
| 
 | ||
| 设置表单组件禁用,仅对 antd 组件有效。
 | ||
| 
 | ||
| ## en-US
 | ||
| 
 | ||
| Set component disabled, only works for antd components.
 | ||
| </docs>
 | ||
| 
 | ||
| <template>
 | ||
|   <a-checkbox :checked="componentDisabled" @change="e => (componentDisabled = e.target.checked)">
 | ||
|     Form disabled
 | ||
|   </a-checkbox>
 | ||
|   <a-form
 | ||
|     :label-col="labelCol"
 | ||
|     :wrapper-col="wrapperCol"
 | ||
|     layout="horizontal"
 | ||
|     :disabled="componentDisabled"
 | ||
|     style="max-width: 600px"
 | ||
|   >
 | ||
|     <a-form-item label="Checkbox">
 | ||
|       <a-checkbox>checkbox</a-checkbox>
 | ||
|     </a-form-item>
 | ||
|     <a-form-item label="Radio">
 | ||
|       <a-radio-group v-model:value="radioValue">
 | ||
|         <a-radio value="apple">Apple</a-radio>
 | ||
|         <a-radio value="pear">Pear</a-radio>
 | ||
|       </a-radio-group>
 | ||
|     </a-form-item>
 | ||
|     <a-form-item label="Input">
 | ||
|       <a-input />
 | ||
|     </a-form-item>
 | ||
|     <a-form-item label="Select">
 | ||
|       <a-select>
 | ||
|         <a-select-option value="demo">Demo</a-select-option>
 | ||
|       </a-select>
 | ||
|     </a-form-item>
 | ||
|     <a-form-item label="TreeSelect">
 | ||
|       <a-tree-select :tree-data="treeData" />
 | ||
|     </a-form-item>
 | ||
|     <a-form-item label="Cascader">
 | ||
|       <a-cascader :options="options" />
 | ||
|     </a-form-item>
 | ||
|     <a-form-item label="DatePicker">
 | ||
|       <a-date-picker />
 | ||
|     </a-form-item>
 | ||
|     <a-form-item label="RangePicker">
 | ||
|       <a-range-picker />
 | ||
|     </a-form-item>
 | ||
|     <a-form-item label="InputNumber">
 | ||
|       <a-input-number />
 | ||
|     </a-form-item>
 | ||
|     <a-form-item label="TextArea">
 | ||
|       <a-textarea :rows="4" />
 | ||
|     </a-form-item>
 | ||
|     <a-form-item label="Switch">
 | ||
|       <a-switch v-model:checked="checked" />
 | ||
|     </a-form-item>
 | ||
|     <a-form-item label="Upload">
 | ||
|       <a-upload action="/upload.do" list-type="picture-card">
 | ||
|         <div>
 | ||
|           <PlusOutlined />
 | ||
|           <div style="margin-top: 8px">Upload</div>
 | ||
|         </div>
 | ||
|       </a-upload>
 | ||
|     </a-form-item>
 | ||
|     <a-form-item label="Button">
 | ||
|       <a-button>Button</a-button>
 | ||
|     </a-form-item>
 | ||
|   </a-form>
 | ||
| </template>
 | ||
| <script lang="ts" setup>
 | ||
| import { ref, reactive } from 'vue';
 | ||
| import { PlusOutlined } from '@ant-design/icons-vue';
 | ||
| import type { TreeSelectProps, CascaderProps } from 'ant-design-vue';
 | ||
| 
 | ||
| const componentDisabled = ref(true);
 | ||
| const labelCol = { style: { width: '150px' } };
 | ||
| const wrapperCol = { span: 14 };
 | ||
| const radioValue = ref('apple');
 | ||
| const treeData = reactive<TreeSelectProps['treeData']>([
 | ||
|   { title: 'Light', value: 'light', children: [{ title: 'Bamboo', value: 'bamboo' }] },
 | ||
| ]);
 | ||
| const options = reactive<CascaderProps['options']>([
 | ||
|   {
 | ||
|     value: 'zhejiang',
 | ||
|     label: 'Zhejiang',
 | ||
|     children: [
 | ||
|       {
 | ||
|         value: 'hangzhou',
 | ||
|         label: 'Hangzhou',
 | ||
|       },
 | ||
|     ],
 | ||
|   },
 | ||
| ]);
 | ||
| const checked = ref(false);
 | ||
| </script>
 |