Ver Fonte

input大写转换

yh há 1 mês atrás
pai
commit
92f7073c6c

+ 228 - 209
src/views/BasicData/components/productArchiveModel.vue

@@ -1,148 +1,165 @@
 <template>
-    <a-modal
-      :title="title"
-      width="80%"
-      :visible="visible"
-      :maskClosable="false"
-      switchFullscreen
-      @ok = "handleOk"
-      @cancel="handleCancel">
-        <a-spin :spinning="loading">
-         <!-- 主表单区域 -->
-         <a-form ref="formRef" :model="model" :rules="validatorRules">
-           <a-row :gutter="24">
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="classId" label="分类(class)">
-                <ApiSelect
-                                    :api="classOption"
-                                    :showSearch="true"
-                                    v-model:value="model.classId"
-                                    :filterOption="true"
-                                    resultField="records"
-                                    labelField="name"
-                                    valueField="id"
-                                    optionFilterProp='label'
-                                />
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="code" label="编码(code)">
-                    <a-input placeholder="自动生成" v-model:value="model.code" AutoComplete='off' disabled/>
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chineseName" label="中文名(Chinese name)">
-                  <a-input  placeholder="请输入" v-model:value="model.chineseName" AutoComplete='off' @blur="handleBlur(model.chineseName,'chineseName')"/>
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="englishName" label="英文名(English name)">
-                  <a-input  placeholder="请输入" v-model:value="model.englishName" AutoComplete='off' @blur="handleBlur(model.englishName,'englishName')"/>
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chineseAlias" label="中文别名(Chinese allas)">
-                  <a-input  placeholder="请输入" v-model:value="model.chineseAlias" AutoComplete='off' @blur="handleBlur(model.chineseAlias,'chineseAlias')"/>
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="englishAlias" label="英文别名(englidsh allas)">
-                  <a-input  placeholder="请输入" v-model:value="model.englishAlias" AutoComplete='off' @blur="handleBlur(model.englishAlias,'englishAlias')"/>
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="model" label="型号(model)">
-                <JDictSelectTag v-model:value="model.model" placeholder="请选择" dictCode="model_typer" showSearch/>
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="partno" label="备件号(partno)">
-                  <a-input  placeholder="请输入" v-model:value="model.partno" AutoComplete='off'/>
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderno" label="订货号(orderno)">
-                  <a-input  placeholder="请输入" v-model:value="model.orderno" AutoComplete='off'/>
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="drawingno" label="图号(drawingno)">
-                  <a-input  placeholder="请输入" v-model:value="model.drawingno" AutoComplete='off'/>
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="taxRate" label="税率(tax rate)">
-                  <a-input  placeholder="请输入" v-model:value="model.taxRate" AutoComplete='off' addon-after="%"/>
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="measurementUnit" label="计量单位(measurement unit)">
-                <j-dict-select-tag v-model:value="model.measurementUnit" placeholder="请选择用户名称" dictCode="sys_dict_item,item_text,item_text,dict_id = '1854437181947383809' and STATUS=1"/>  
-                <!-- <JDictSelectTag v-model:value="model.measurementUnit" placeholder="请选择" dictCode="measurement_unit"/> -->
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="harmfulSubstances" label="有害物质(harmful substances)">
-                <JDictSelectTag v-model:value="model.harmfulSubstances" placeholder="请选择" dictCode="yes_or_no" stringToNumber/>
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="virtualProduct" label="虚拟产品(virtual product)">
-                <JDictSelectTag v-model:value="model.virtualProduct" placeholder="请选择" dictCode="yes_or_no" stringToNumber/>
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="commissionRebate" label="返佣(commission rebate)">
-                <JDictSelectTag v-model:value="model.commissionRebate" placeholder="请选择" dictCode="yes_or_no" stringToNumber/>
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="notes" label="备注(notes)">
-                  <a-input  placeholder="请输入" v-model:value="model.notes" AutoComplete='off'/>
-               </a-form-item>
-             </a-col>
-             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="status" label="状态(status)">
-                  <JDictSelectTag v-model:value="model.status" placeholder="请选择" dictCode="valid_status" stringToNumber/>
-               </a-form-item>
-             </a-col>
-           </a-row>
-         </a-form>
-        </a-spin>
-    </a-modal>
+  <a-modal :title="title" width="80%" :visible="visible" :maskClosable="false" switchFullscreen @ok="handleOk" @cancel="handleCancel">
+    <a-spin :spinning="loading">
+      <!-- 主表单区域 -->
+      <a-form ref="formRef" :model="model" :rules="validatorRules">
+        <a-row :gutter="24">
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="classId" label="分类(class)">
+              <ApiSelect
+                :api="classOption"
+                :showSearch="true"
+                v-model:value="model.classId"
+                :filterOption="true"
+                resultField="records"
+                labelField="name"
+                valueField="id"
+                optionFilterProp="label"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="code" label="编码(code)">
+              <a-input placeholder="自动生成" v-model:value="model.code" AutoComplete="off" disabled />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chineseName" label="中文名(Chinese name)">
+              <a-input
+                placeholder="请输入"
+                v-model:value="model.chineseName"
+                AutoComplete="off"
+                @blur="handleBlur(model.chineseName, 'chineseName')"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="englishName" label="英文名(English name)">
+              <a-input
+                placeholder="请输入"
+                v-model:value="model.englishName"
+                AutoComplete="off"
+                @blur="handleBlur(model.englishName, 'englishName')"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chineseAlias" label="中文别名(Chinese allas)">
+              <a-input
+                placeholder="请输入"
+                v-model:value="model.chineseAlias"
+                AutoComplete="off"
+                @blur="handleBlur(model.chineseAlias, 'chineseAlias')"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="englishAlias" label="英文别名(englidsh allas)">
+              <a-input
+                placeholder="请输入"
+                v-model:value="model.englishAlias"
+                AutoComplete="off"
+                @blur="handleBlur(model.englishAlias, 'englishAlias')"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="model" label="型号(model)">
+              <JDictSelectTag v-model:value="model.model" placeholder="请选择" dictCode="model_typer" showSearch />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="partno" label="备件号(partno)">
+              <a-input placeholder="请输入" v-model:value="model.partno" AutoComplete="off" @input="handleUpperCaseInput" />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderno" label="订货号(orderno)">
+              <a-input placeholder="请输入" v-model:value="model.orderno" AutoComplete="off" />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="drawingno" label="图号(drawingno)">
+              <a-input placeholder="请输入" v-model:value="model.drawingno" AutoComplete="off" />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="taxRate" label="税率(tax rate)">
+              <a-input placeholder="请输入" v-model:value="model.taxRate" AutoComplete="off" addon-after="%" />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="measurementUnit" label="计量单位(measurement unit)">
+              <j-dict-select-tag
+                v-model:value="model.measurementUnit"
+                placeholder="请选择用户名称"
+                dictCode="sys_dict_item,item_text,item_text,dict_id = '1854437181947383809' and STATUS=1"
+              />
+              <!-- <JDictSelectTag v-model:value="model.measurementUnit" placeholder="请选择" dictCode="measurement_unit"/> -->
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="harmfulSubstances" label="有害物质(harmful substances)">
+              <JDictSelectTag v-model:value="model.harmfulSubstances" placeholder="请选择" dictCode="yes_or_no" stringToNumber />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="virtualProduct" label="虚拟产品(virtual product)">
+              <JDictSelectTag v-model:value="model.virtualProduct" placeholder="请选择" dictCode="yes_or_no" stringToNumber />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="commissionRebate" label="返佣(commission rebate)">
+              <JDictSelectTag v-model:value="model.commissionRebate" placeholder="请选择" dictCode="yes_or_no" stringToNumber />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="notes" label="备注(notes)">
+              <a-input placeholder="请输入" v-model:value="model.notes" AutoComplete="off" />
+            </a-form-item>
+          </a-col>
+          <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="status" label="状态(status)">
+              <JDictSelectTag v-model:value="model.status" placeholder="请选择" dictCode="valid_status" stringToNumber />
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+    </a-spin>
+  </a-modal>
 </template>
 <script lang="ts" setup>
   import { defHttp } from '/@/utils/http/axios';
   import { message } from 'ant-design-vue';
-  import { JDictSelectTag,JSearchSelect,ApiSelect} from '/@/components/Form';
+  import { JDictSelectTag, JSearchSelect, ApiSelect } from '/@/components/Form';
   import JSelectInput from '/@/components/Form/src/jeecg/components/JSelectInput.vue';
   import { ref, reactive, toRaw, toRefs, watch, nextTick, onMounted, getCurrentInstance } from 'vue';
-  const emit = defineEmits([ 'success']); //定义emit
-  const formRef = ref()
-  var visible = ref(false)
-  let title = ref('')
-  let loading = ref(false)
+  const emit = defineEmits(['success']); //定义emit
+  const formRef = ref();
+  var visible = ref(false);
+  let title = ref('');
+  let loading = ref(false);
   let model = ref({
-    classId:'',
-    code:'',
-    chineseName:'',
-    englishName:'',
-    chineseAlias:'',
-    englishAlias:'',
-    model:'',
-    partno:'',
-    orderno:'',
-    drawingno:'',
-    taxRate:'0',
-    harmfulSubstances:0,
-    virtualProduct:0,
-    commissionRebate:1,
-    notes:'',
-    status:1,
-    measurementUnit:'PCE',
-    id:''
-  })
-  let enforcemmentBasis = ref('')
+    classId: '',
+    code: '',
+    chineseName: '',
+    englishName: '',
+    chineseAlias: '',
+    englishAlias: '',
+    model: '',
+    partno: '',
+    orderno: '',
+    drawingno: '',
+    taxRate: '0',
+    harmfulSubstances: 0,
+    virtualProduct: 0,
+    commissionRebate: 1,
+    notes: '',
+    status: 1,
+    measurementUnit: 'PCE',
+    id: '',
+  });
+  let enforcemmentBasis = ref('');
   const validatorRules = {
     // code: [{ required: true, message: '编码(code)不能为空', trigger: 'blur' }],
     englishName: [{ required: true, message: '英文名(english name)不能为空', trigger: 'blur' }],
@@ -150,101 +167,103 @@
   const labelCol = ref({
     xs: { span: 24 },
     sm: { span: 9 },
-    });
+  });
   const wrapperCol = ref({
     xs: { span: 24 },
     sm: { span: 15 },
   });
   function handleOk() {
     formRef.value
-          .validate()
-          .then(async () => {
-              let url = ''
-              if(enforcemmentBasis.value=='add'){
-                  url = '/baseCode/baseProductArchive/add'
-              }else{
-                  url = '/baseCode/baseProductArchive/edit'
-              }
-              let params = model.value
-              defHttp.post({url,params}, { isTransformResponse: false })
-                  .then((res) => {
-                      if (res.success) {
-                        message.success(res.message);
-                      } else {
-                        message.error(res.message);
-                      }
-                  })
-                  .finally(() => {
-                      handleCancel()
-                  });
-                })
-          .catch(error => {
-            console.log('error', error);
+      .validate()
+      .then(async () => {
+        let url = '';
+        if (enforcemmentBasis.value == 'add') {
+          url = '/baseCode/baseProductArchive/add';
+        } else {
+          url = '/baseCode/baseProductArchive/edit';
+        }
+        let params = model.value;
+        defHttp
+          .post({ url, params }, { isTransformResponse: false })
+          .then((res) => {
+            if (res.success) {
+              message.success(res.message);
+            } else {
+              message.error(res.message);
+            }
+          })
+          .finally(() => {
+            handleCancel();
           });
-    
+      })
+      .catch((error) => {
+        console.log('error', error);
+      });
   }
   function handleCancel() {
-    model.value ={
-      classId:'',
-      code:'',
-      chineseName:'',
-      englishName:'',
-      chineseAlias:'',
-      englishAlias:'',
-      model:'',
-      partno:'',
-      orderno:'',
-      drawingno:'',
-      taxRate:'0',
-      harmfulSubstances:0,
-      virtualProduct:0,
-      commissionRebate:1,
-      notes:'',
-      status:1,
-      measurementUnit:'PCE',
-      id:''
-    }
-    visible.value = false
+    model.value = {
+      classId: '',
+      code: '',
+      chineseName: '',
+      englishName: '',
+      chineseAlias: '',
+      englishAlias: '',
+      model: '',
+      partno: '',
+      orderno: '',
+      drawingno: '',
+      taxRate: '0',
+      harmfulSubstances: 0,
+      virtualProduct: 0,
+      commissionRebate: 1,
+      notes: '',
+      status: 1,
+      measurementUnit: 'PCE',
+      id: '',
+    };
+    visible.value = false;
     emit('success');
   }
-  function getForm(data,record){
-    enforcemmentBasis.value = data
-    visible.value = true
-    if(data=='add'){
-        title.value = '新增档案(add)'
-    }else{
-        title.value = '编辑档案(edit)'
-        model.value = record
+  function getForm(data, record) {
+    enforcemmentBasis.value = data;
+    visible.value = true;
+    if (data == 'add') {
+      title.value = '新增档案(add)';
+    } else {
+      title.value = '编辑档案(edit)';
+      model.value = record;
     }
   }
-  function classOption(){
-      var params = {pageSize:-1}
-      return defHttp.get({ url: 'baseCode/baseProductClass/list',params})
+  function classOption() {
+    var params = { pageSize: -1 };
+    return defHttp.get({ url: 'baseCode/baseProductClass/list', params });
   }
-  function handleBlur(value,data){
-    if(value!==''){
-      var newString = ''
+  function handleBlur(value, data) {
+    if (value !== '') {
+      var newString = '';
       for (let i = 0; i < value.length; i++) {
-          if( (/^[A-Za-z]$/.test(value[i]))&&(/^[a-z]$/.test(value[i]))){
-            newString=newString+value[i].toUpperCase()
-          }else{
-            newString =newString+value[i]
-          }
+        if (/^[A-Za-z]$/.test(value[i]) && /^[a-z]$/.test(value[i])) {
+          newString = newString + value[i].toUpperCase();
+        } else {
+          newString = newString + value[i];
+        }
       }
-        model.value[data] = newString
+      model.value[data] = newString;
     }
   }
+  function handleUpperCaseInput(e) {
+    model.value.partno = e.target.value.toUpperCase();
+  }
   defineExpose({
-    getForm
+    getForm,
   });
 </script>
 <style lang="less" scoped>
-/deep/ .ant-spin-container{
+  /deep/ .ant-spin-container {
     width: 97%;
     margin-top: 1%;
-}
-/deep/.ant-form-item {
+  }
+  /deep/.ant-form-item {
     margin-bottom: 8px !important;
   }
-
-</style>
+</style>

+ 83 - 80
src/views/BasicData/components/productCassificationModel.vue

@@ -5,70 +5,69 @@
   </BasicModal>
 </template>
 <script lang="ts" setup>
-  import { ref, computed, unref,onMounted } from 'vue';
+  import { ref, computed, unref, onMounted } from 'vue';
   //引入依赖
   import { useForm, BasicForm, FormSchema } from '/@/components/Form';
   import { BasicModal, useModalInner } from '/@/components/Modal';
-  import { saveOrUpdateDict,list } from '../api/productCassification.api';
+  import { saveOrUpdateDict, list } from '../api/productCassification.api';
   import { defHttp } from '/@/utils/http/axios';
-  import { useMessage } from "/@/hooks/web/useMessage";
+  import { useMessage } from '/@/hooks/web/useMessage';
   const { createConfirm } = useMessage();
   const emit = defineEmits(['register', 'success']); //定义emit
   const isUpdate = ref(true); //判断编辑还是新增
-  const rowId = ref('');//获取主键
-  let classOption = ref([])
+  const rowId = ref(''); //获取主键
+  let classOption = ref([]);
   //获取表单数据
-  const [registerModal, { closeModal, setModalProps }] = useModalInner(
-    async (data) => {
-      // 重置表单
-      await resetFields();
-      setModalProps({ confirmLoading: false});
-      isUpdate.value = !!data?.isUpdate;     
-      getOptions(isUpdate,data.record)
-      if (unref(isUpdate)) {
+  const [registerModal, { closeModal, setModalProps }] = useModalInner(async (data) => {
+    // 重置表单
+    await resetFields();
+    setModalProps({ confirmLoading: false });
+    isUpdate.value = !!data?.isUpdate;
+    getOptions(isUpdate, data.record);
+    if (unref(isUpdate)) {
       rowId.value = data.record.id;
       //表单赋值
       await setFieldsValue({
         ...data.record,
       });
     }
-    }
-  )
-  function getOptions(isUpdate,data) {
-    var params={pageSize:-1}
+  });
+  function getOptions(isUpdate, data) {
+    var params = { pageSize: -1 };
     defHttp
-        .get({ url: 'baseCode/baseProductClass/list',params}, { isTransformResponse: false })
-        .then((res) => {
-            if (res.success) {
-              var option = []
-              res.result.records.forEach(element => {
-                  var obj = {
-                    label: element.name,
-                    value: element.id
-                  };
-                  option.push(obj)
-              });  
-              classOption.value = [] 
-              if(unref(isUpdate)){  //编辑
-                var row = JSON.parse(JSON.stringify(data))
-                option.map(item=>{
-                  if(item.label!=row.parentId){
-                    classOption.value.push(item)
-                  }
-                })
-              }else{
-                classOption.value = option
+      .get({ url: 'baseCode/baseProductClass/list', params }, { isTransformResponse: false })
+      .then((res) => {
+        if (res.success) {
+          var option = [];
+          res.result.records.forEach((element) => {
+            var obj = {
+              label: element.name,
+              value: element.id,
+            };
+            option.push(obj);
+          });
+          classOption.value = [];
+          if (unref(isUpdate)) {
+            //编辑
+            var row = JSON.parse(JSON.stringify(data));
+            option.map((item) => {
+              if (item.label != row.parentId) {
+                classOption.value.push(item);
               }
-            }
-        })
-        .finally(() => {
-            // loading.value = false;
-        });
+            });
+          } else {
+            classOption.value = option;
+          }
+        }
+      })
+      .finally(() => {
+        // loading.value = false;
+      });
   }
   //获取title
   const getTitle = computed(() => {
-    return (!unref(isUpdate) ? '新增产品分类(add)' : '编辑产品分类(edit)');
-  })
+    return !unref(isUpdate) ? '新增产品分类(add)' : '编辑产品分类(edit)';
+  });
   //自定义表单字段
   const formSchemas: FormSchema[] = [
     {
@@ -76,9 +75,9 @@
       label: '上级分类(parent)',
       //字段
       field: 'parentId',
-       //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
-       component: 'JSearchSelect',
-      componentProps:{
+      //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
+      component: 'JSearchSelect',
+      componentProps: {
         dict: 'base_product_class,name,id,del_flag=0',
         // options: classOption,
         stringToNumber: true,
@@ -88,11 +87,11 @@
       label: '编码(code)',
       field: 'code',
       component: 'Input',
-      dynamicDisabled:true,
+      dynamicDisabled: true,
       // required: true,
-      componentProps:{
-        AutoComplete:'off',
-        placeholder:'自动生成',
+      componentProps: {
+        AutoComplete: 'off',
+        placeholder: '自动生成',
       },
     },
     {
@@ -100,26 +99,31 @@
       field: 'name',
       component: 'Input',
       required: true,
-      componentProps:{
-        AutoComplete:'off'
-      },
+      componentProps: ({ formModel }) => ({
+        AutoComplete: 'off',
+        value: formModel.name,
+        onInput: (e: Event) => {
+          const input = e.target as HTMLInputElement;
+          formModel.name = input.value.toUpperCase();
+        },
+      }),
     },
     {
       label: '毛利率(gross margin)',
       field: 'grossMargin',
       component: 'Input',
-      componentProps:{
-        AutoComplete:'off',
-        addonAfter:"%",
+      componentProps: {
+        AutoComplete: 'off',
+        addonAfter: '%',
       },
     },
     {
       label: '税率(tax rate)',
       field: 'taxRate',
       component: 'Input',
-      componentProps:{
-        AutoComplete:'off',
-        addonAfter:"%",
+      componentProps: {
+        AutoComplete: 'off',
+        addonAfter: '%',
       },
     },
     {
@@ -127,15 +131,15 @@
       field: 'sortNumber',
       component: 'Input',
       // dynamicDisabled:true,
-      componentProps:{
-        AutoComplete:'off',
+      componentProps: {
+        AutoComplete: 'off',
       },
     },
     {
       label: '',
       field: 'id',
       component: 'Input',
-      show: false
+      show: false,
     },
   ];
   /**
@@ -151,9 +155,9 @@
     autoSubmitOnEnter: true,
     //不显示重置按钮
     showResetButton: false,
-    showSubmitButton:false,
-    labelCol: { style: { width: '150px'} },
-    labelAlign:'right'
+    showSubmitButton: false,
+    labelCol: { style: { width: '150px' } },
+    labelAlign: 'right',
     //查询列占比 24代表一行 取值范围 0-24
   });
 
@@ -167,31 +171,30 @@
     try {
       let values = await validate();
       setModalProps({ confirmLoading: true });
-      var obj=await list({pageSize:-1,name:values.name})
-      if(!unref(isUpdate)){
-        if(obj.records.length==undefined||obj.records.length==0){
-          handleOkNext(values, isUpdate.value)
-        }else{
+      var obj = await list({ pageSize: -1, name: values.name });
+      if (!unref(isUpdate)) {
+        if (obj.records.length == undefined || obj.records.length == 0) {
+          handleOkNext(values, isUpdate.value);
+        } else {
           createConfirm({
             iconType: 'warning',
             title: '请确认',
             content: '名称重复,是否继续执行',
             okText: '确认',
             cancelText: '取消',
-            onOk: async() => {
-              handleOkNext(values, isUpdate.value)
-            }
+            onOk: async () => {
+              handleOkNext(values, isUpdate.value);
+            },
           });
-        }  
-      }else{
-        handleOkNext(values, isUpdate.value)
+        }
+      } else {
+        handleOkNext(values, isUpdate.value);
       }
-         
     } finally {
       setModalProps({ confirmLoading: false });
     }
   }
-  async function handleOkNext(values,isUpdate){
+  async function handleOkNext(values, isUpdate) {
     await saveOrUpdateDict(values, isUpdate);
     //关闭弹窗
     closeModal();