Răsfoiți Sursa

1、dk-from,dk-form-bill增加清空数据的功能

zhoux 2 ani în urmă
părinte
comite
e395ec8eef

+ 83 - 8
components/dkbase/dk-form-bill/dk-form-bill.js

@@ -67,7 +67,7 @@ Component({
       value: 'desc'
     },
     // pop底部描述列
-    subCol:{
+    subCol: {
       type: String,
       value: 'desc'
     },
@@ -140,7 +140,7 @@ Component({
     dropName: null,
     itemName: 'goodsList',
     selectGoodsUrl: null,
-    chooseVisible:true,  // 用于联动控制选商品按钮
+    chooseVisible: true,  // 用于联动控制选商品按钮
     // popContent:
     //   [{ code: 'quantity', type: 'step', title: '数量', required: true }, { code: 'pricePromotion', type: 'number', title: '销售价格', required: true }, { code: 'warehouseId', name: 'warehouseName', type: 'drop', required: true, dropType: 'warehouse' , required: true}, { code: 'color', type: 'str', title: '批次号' , required: true}, { code: 'giftFlag', type: 'checkbox', title: '赠品标识' }],
     form: {}
@@ -203,7 +203,7 @@ Component({
                 }
               }
             }
-          }else{
+          } else {
             // 商品明细
             if (it.displayNum && items && items.length > it.displayNum) {
               for (let i = it.displayNum; i < items.length; i++) {
@@ -219,7 +219,7 @@ Component({
         })
         this.setData({
           contentObj: contentObj,
-          form:form
+          form: form
         })
       }
     },
@@ -307,7 +307,7 @@ Component({
         })
       } else if (item.item.type == 'choose') {
         // 跳转链接
-        if (item.item.urlKey) { 
+        if (item.item.urlKey) {
           let url = this.data.routeUrl[this.data.routeObjName][item.item.urlKey].url
           // TODO
           // url = '/package-base-select/pages/select-customers/select-customers'
@@ -319,9 +319,9 @@ Component({
                 bindData: function (data) {
                   that.triggerEvent("chooseData", { code: item.key, data: data })
                   // 如果需要联动控制选商品按钮
-                  if(item.item.controlChooseFlag){
+                  if (item.item.controlChooseFlag) {
                     that.setData({
-                      chooseVisible:false
+                      chooseVisible: false
                     })
                   }
                 }
@@ -569,6 +569,81 @@ Component({
       })
     },
     /**
+     * @desc   : 清空输入框的值
+     * @author : 周兴
+     * @date   : 2024/2/2 11:46
+     */
+    clearField(e) {
+      console.log('eee', e);
+      let ds = e.currentTarget.dataset
+      let key = ds.key
+      let form = this.data.form
+      form[key] = undefined
+      this.setData({
+        value: JSON.stringify(form),
+        form: form
+      })
+      // 如果要清除其他值,需要调用
+      this.triggerEvent("clear", { code: ds.key })
+    },
+    /**
+     * @desc   : 清空地址的值
+     * @author : 周兴
+     * @date   : 2024/2/2 11:46
+     */
+    clearAddress(e) {
+      let form = this.data.form
+      form['address'] = undefined
+      this.setData({
+        value: JSON.stringify(form),
+        form: form
+      })
+      // 如果要清除其他值,需要调用
+      this.triggerEvent("clear", { code: ds.key })
+    },
+    /**
+     * @desc   : 清空日期的值
+     * @author : 周兴
+     * @date   : 2024/2/2 11:46
+     */
+    clearDate(e) {
+      let ds = e.currentTarget.dataset
+      let key = ds.key
+      let form = this.data.form
+      form[key] = undefined
+      form[key + '_time'] = undefined
+      this.setData({
+        value: JSON.stringify(form),
+        form: form
+      })
+    },
+    /**
+     * @desc   : 清空选单的值
+     * @author : 周兴
+     * @date   : 2024/2/2 11:46
+     */
+    clearChoose(e) {
+      let ds = e.currentTarget.dataset
+      let key = ds.key
+      let name = ds.name
+      let item = ds.item
+      let form = this.data.form
+      form[key] = undefined
+      form[name] = undefined
+      this.setData({
+        value: JSON.stringify(form),
+        form: form
+      })
+      // 如果需要联动控制选商品按钮
+      if (item && item.controlChooseFlag) {
+        that.setData({
+          chooseVisible: true
+        })
+      }
+      // 如果要清除其他值,需要调用
+      this.triggerEvent("clear", { code: ds.key })
+    },
+    /**
      * @desc   : 修改数值输入框的值
      * @author : 周兴
      * @date   : 2024/2/2 11:46
@@ -718,7 +793,7 @@ Component({
           value: JSON.stringify(form)
         })
         // 设置是否进行收缩
-        let card = this.data.cardList.filter(it=>it.name == 'items');
+        let card = this.data.cardList.filter(it => it.name == 'items');
         this.handleContentObj(card[0])
       }
     },

+ 16 - 8
components/dkbase/dk-form-bill/dk-form-bill.wxml

@@ -95,16 +95,19 @@
       <view wx:if="{{card.name != 'items'}}">
         <view wx:for="{{contentObj[card.name]}}" wx:for-item="item" data-item="{{item}}" wx:key="index">
           <!--文本框-->
-          <van-field wx:if="{{item.type=='str' && (item.show || item.show == undefined) }}" label-class="{{item.required?'red-label':'nomal-label' }}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" value="{{ form[item.code]}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" autosize border="{{ false }}" readonly="{{!!item.readonly}}" input-class="dk-cell-value-class" maxlength="{{item.maxlength?item.maxlength:50}}" right-icon="{{item.rightIcon}}" bind:change="changeField" errorMessage="{{item.errMsg}}">
+          <van-field wx:if="{{item.type=='str' && (item.show || item.show == undefined) }}" label-class="{{item.required?'red-label':'nomal-label' }}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" value="{{ form[item.code]}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" autosize clearable border="{{ false }}" readonly="{{!!item.readonly}}" input-class="dk-cell-value-class" maxlength="{{item.maxlength?item.maxlength:50}}" right-icon="{{item.rightIcon}}" bind:change="changeField" bind:clear="clearField" errorMessage="{{item.errMsg}}">
           </van-field>
           <!--选单-->
           <van-field wx:if="{{item.type=='choose' && (item.show || item.show == undefined)}}" label-class="{{item.required?'red-label':'nomal-label' }}" data-name="{{item.name}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" value="{{ form[item.name]}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" is-link catchtap="open" autosize border="{{ false }}" readonly="{{true}}" input-class="dk-cell-value-class" data-type='{{item.dropType}}' errorMessage="{{item.errMsg}}">
+            <van-icon wx:if="{{ form[item.code]}}" slot="icon" name="clear" color="#c8c9cc;"  data-item="{{item}}" data-name="{{item.name}}" data-key="{{item.code}}" catchtap="clearChoose"></van-icon>
           </van-field>
           <!--单选下拉-->
-          <van-field wx:if="{{item.type=='drop'  && (item.show || item.show == undefined)}}" label-class="{{item.required?'red-label':'nomal-label' }}" data-name="{{item.name}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" value="{{ form[item.name]}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" is-link catchtap="open" autosize border="{{ false }}" readonly="{{true}}" input-class="dk-cell-value-class" data-type='{{item.dropType}}' errorMessage="{{item.errMsg}}">
+          <van-field wx:if="{{item.type=='drop'  && (item.show || item.show == undefined)}}" label-class="{{item.required?'red-label':'nomal-label' }}" data-name="{{item.name}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" value="{{ form[item.name]}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" catchtap="open" autosize border="{{ false }}" clearable readonly="{{true}}" input-class="dk-cell-value-class" data-type='{{item.dropType}}' errorMessage="{{item.errMsg}}">
+            <van-icon wx:if="{{ form[item.code]}}" slot="icon" name="clear" color="#c8c9cc;"  data-item="{{item}}" data-name="{{item.name}}" data-key="{{item.code}}" catchtap="clearChoose"></van-icon>
           </van-field>
           <!--多选下拉-->
-          <van-field wx:if="{{item.type=='mutidrop'  && (item.show || item.show == undefined)}}" label-class="{{item.required?'red-label':'nomal-label' }}" data-name="{{item.name}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" value="{{ form[item.name + 's']}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" is-link catchtap="open" autosize border="{{ false }}" readonly="{{true}}" input-class="dk-cell-value-class" data-type='{{item.dropType}}' errorMessage="{{item.errMsg}}">
+          <van-field wx:if="{{item.type=='mutidrop'  && (item.show || item.show == undefined)}}" label-class="{{item.required?'red-label':'nomal-label' }}" data-name="{{item.name}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" value="{{ form[item.name + 's']}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" is-link catchtap="open" autosize border="{{ false }}" clearable readonly="{{true}}" input-class="dk-cell-value-class" data-type='{{item.dropType}}' errorMessage="{{item.errMsg}}">
+            <van-icon wx:if="{{ form[item.code]}}" slot="icon" name="clear" color="#c8c9cc;"  data-item="{{item}}" data-name="{{item.name}}" data-key="{{item.code}}" catchtap="clearChoose"></van-icon>
           </van-field>
           <!--选择框-->
           <van-field wx:if="{{item.type=='checkbox'  && (item.show || item.show == undefined)}}" input-width="200rpx" input-class="dk-cell-value-class" label-class="nomal-label" input-align="left" value="{{ form[item.code] ? '  需要' : '  不需要' }}" label="{{item.title?item.title:$t[item.code]}}" autosize border="{{ false }}" readonly="{{true}}" errorMessage="{{item.errMsg}}">
@@ -119,17 +122,22 @@
             </view>
           </van-field>
           <!--客户地址-->
-          <van-field wx:if="{{item.type=='address'  && (item.show || item.show == undefined)}}" input-width="200rpx" input-class="dk-cell-value-class" label-class="{{item.required?'red-label':'nomal-label' }}" input-align="left" data-key="address" type="textarea" value="{{ wxmlUtil.addressToIndexOf(form.address.address) }}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" autosize border="{{ false }}" right-icon="location" data-type='address' catchtap="onClickWxchartAddress" readonly="{{true}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" errorMessage="{{item.errMsg}}">
+          <van-field wx:if="{{item.type=='address'  && (item.show || item.show == undefined)}}" input-width="200rpx" input-class="dk-cell-value-class" label-class="{{item.required?'red-label':'nomal-label' }}" input-align="left" data-key="address" type="textarea" value="{{ wxmlUtil.addressToIndexOf(form.address.address) }}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" autosize border="{{ false }}" data-type='address' catchtap="onClickWxchartAddress" readonly="{{true}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" errorMessage="{{item.errMsg}}">
+            <view style="display: flex;" slot="right-icon">
+              <van-icon wx:if="{{ form.address.address}}" slot="right-icon" name="clear" color="#c8c9cc;" data-key="{{item.code}}" catchtap="clearAddress"></van-icon>
+              <van-icon custom-style="padding-left:10rpx" name="location"></van-icon>
+            </view>
           </van-field>
           <!--联系电话-->
-          <dk-number-phone-input wx:if="{{item.type=='phone'  && (item.show || item.show == undefined)}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" readonly="{{!!readonly || !!item.readonly}}" label-class="{{item.required?'red-label':'nomal-label' }}" rightIcon="phone" model:value="{{ form[item.code]}}" bind:changeField="changePhone" bind:changeFieldblur="changePhoneblur" errorMessage="{{item.errMsg}}" id="{{item.code}}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.code)}}"></dk-number-phone-input>
+          <dk-number-phone-input wx:if="{{item.type=='phone'  && (item.show || item.show == undefined)}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" readonly="{{!!readonly || !!item.readonly}}" label-class="{{item.required?'red-label':'nomal-label' }}" clearable rightIcon="phone" model:value="{{ form[item.code]}}" bind:changeField="changePhone" bind:changeFieldblur="changePhoneblur" bind:clear="clearField" errorMessage="{{item.errMsg}}" id="{{item.code}}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.code)}}"></dk-number-phone-input>
           <!--日期-->
-          <van-field wx:if="{{item.type=='date'  && (item.show || item.show == undefined)}}" label-class="{{item.required?'red-label':'nomal-label' }}" is-link value="{{ form[item.code]}}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" data-item="{{item}}" data-key="{{item.code}}" data-index="{{index}}" data-card="{{card.name}}" errorMessage="{{item.errMsg}}" border="{{ false }}" readonly="{{true}}" input-class="dk-cell-value-class" catchtap="openDatePop">
+          <van-field wx:if="{{item.type=='date'  && (item.show || item.show == undefined)}}" label-class="{{item.required?'red-label':'nomal-label' }}" is-link value="{{ form[item.code]}}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" data-item="{{item}}" data-key="{{item.code}}" data-index="{{index}}" clearable data-card="{{card.name}}" errorMessage="{{item.errMsg}}" border="{{ false }}" readonly="{{true}}" input-class="dk-cell-value-class" catchtap="openDatePop">
+            <van-icon wx:if="{{ form[item.code]}}" slot="icon" name="clear" color="#c8c9cc;" data-key="{{item.code}}" catchtap="clearDate"></van-icon>
           </van-field>
           <!--数字类-->
-          <dk-number-input wx:if="{{item.type=='number'  && (item.show || item.show == undefined)}}" sign="{{(item.sign || item.sign == '')?item.sign:'¥'}}" digits="{{(item.digits || item.digits == 0)?item.digits:2}}" fontSize="14" left="30rpx" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" center="left" readonly="{{!!readonly || !!item.readonly}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" errorMessage="{{item.errMsg}}" titleValue="{{item.title?item.title:$t[item.code]}}" inputColor="#CAA977" titleFontWeight="bold" titleColor="{{item.required?'#E4002B':'#95A8CB'}}" inputValue="{{form[item.code]}}" bind:triggerBindValue="changeNumberField"></dk-number-input>
+          <dk-number-input wx:if="{{item.type=='number'  && (item.show || item.show == undefined)}}" sign="{{(item.sign || item.sign == '')?item.sign:'¥'}}" digits="{{(item.digits || item.digits == 0)?item.digits:2}}" fontSize="14" left="30rpx" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" center="left" readonly="{{!!readonly || !!item.readonly}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" errorMessage="{{item.errMsg}}" titleValue="{{item.title?item.title:$t[item.code]}}" inputColor="#CAA977" titleFontWeight="{{item.required?'bold':'normal'}}" titleColor="{{item.required?'#E4002B':'#95A8CB'}}" inputValue="{{form[item.code]}}" bind:triggerBindValue="changeNumberField"></dk-number-input>
           <!--备注-->
-          <van-field wx:if="{{item.type=='textarea'  && (item.show || item.show == undefined)}}" type="textarea" label-class="{{item.required?'red-label':'nomal-label' }}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" value="{{ form[item.code]}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" autosize border="{{ false }}" readonly="{{!!readonly || !!item.readonly}}" input-class="dk-cell-value-class" maxlength="{{item.maxlength?item.maxlength:500}}" right-icon="{{item.rightIcon}}" bind:change="changeField" errorMessage="{{item.errMsg}}">
+          <van-field wx:if="{{item.type=='textarea'  && (item.show || item.show == undefined)}}" type="textarea" label-class="{{item.required?'red-label':'nomal-label' }}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" value="{{ form[item.code]}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" autosize border="{{ false }}" clearable readonly="{{!!readonly || !!item.readonly}}" input-class="dk-cell-value-class" maxlength="{{item.maxlength?item.maxlength:500}}" right-icon="{{item.rightIcon}}" bind:change="changeField" bind:clear="clearField" errorMessage="{{item.errMsg}}">
           </van-field>
           <!--附件-->
           <view style="display:flex;width:100%;margin: 1vw; padding-top: 20rpx;" wx:if="{{item.type=='uploader'}}">

+ 68 - 0
components/dkbase/dk-form/dk-form.js

@@ -328,6 +328,74 @@ Component({
       })
     },
     /**
+     * @desc   : 清空输入框的值
+     * @author : 周兴
+     * @date   : 2024/2/2 11:46
+     */
+    clearField(e) {
+      console.log('eee', e);
+      let ds = e.currentTarget.dataset
+      let key = ds.key
+      let form = this.data.form
+      form[key] = undefined
+      this.setData({
+        value: JSON.stringify(form),
+        form: form
+      })
+      // 如果要清除其他值,需要调用
+      this.triggerEvent("clear", { code: ds.key })
+    },
+    /**
+     * @desc   : 清空选单的值
+     * @author : 周兴
+     * @date   : 2024/2/2 11:46
+     */
+    clearChoose(e) {
+      let ds = e.currentTarget.dataset
+      let key = ds.key
+      let name = ds.name
+      let form = this.data.form
+      form[key] = undefined
+      form[name] = undefined
+      this.setData({
+        value: JSON.stringify(form),
+        form: form
+      })
+      // 如果要清除其他值,需要调用
+      this.triggerEvent("clear", { code: ds.key })
+    },
+    /**
+     * @desc   : 清空地址的值
+     * @author : 周兴
+     * @date   : 2024/2/2 11:46
+     */
+    clearAddress(e) {
+      let form = this.data.form
+      form['address'] = undefined
+      this.setData({
+        value: JSON.stringify(form),
+        form: form
+      })
+      // 如果要清除其他值,需要调用
+      this.triggerEvent("clear", { code: ds.key })
+    },
+    /**
+     * @desc   : 清空日期的值
+     * @author : 周兴
+     * @date   : 2024/2/2 11:46
+     */
+    clearDate(e) {
+      let ds = e.currentTarget.dataset
+      let key = ds.key
+      let form = this.data.form
+      form[key] = undefined
+      form[key + '_time'] = undefined
+      this.setData({
+        value: JSON.stringify(form),
+        form: form
+      })
+    },
+    /**
      * @desc   : 修改数值输入框的值
      * @author : 周兴
      * @date   : 2024/2/2 11:46

+ 17 - 7
components/dkbase/dk-form/dk-form.wxml

@@ -4,16 +4,19 @@
   <view class="dk-card-class" wx:for="{{cardList}}" wx:for-item="card" data-item="{{card}}">
     <view wx:for="{{contentObj[card]}}" wx:for-item="item" data-item="{{item}}" wx:key="index">
       <!--文本框-->
-      <van-field wx:if="{{item.type=='str' && !item.hide}}" label-class="{{item.required?'red-label':'nomal-label' }}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card}}" value="{{ form[item.code]}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" autosize border="{{ false }}" readonly="{{!!item.readonly}}" input-class="dk-cell-value-class" maxlength="{{item.maxlength?item.maxlength:50}}" right-icon="{{item.rightIcon}}" bind:change="changeField" errorMessage="{{item.errMsg}}">
+      <van-field wx:if="{{item.type=='str' && !item.hide}}" label-class="{{item.required?'red-label':'nomal-label' }}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card}}" value="{{ form[item.code]}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" autosize border="{{ false }}" clearable readonly="{{!!item.readonly}}" input-class="dk-cell-value-class" maxlength="{{item.maxlength?item.maxlength:50}}" right-icon="{{item.rightIcon}}" bind:change="changeField" bind:clear="clearField" errorMessage="{{item.errMsg}}">
       </van-field>
       <!--单选下拉-->
       <van-field wx:if="{{item.type=='drop' && !item.hide}}" label-class="{{item.required?'red-label':'nomal-label' }}" data-name="{{item.name}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card}}" value="{{ form[item.name]}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" is-link catchtap="open" autosize border="{{ false }}" readonly="{{true}}" input-class="dk-cell-value-class" data-type='{{item.dropType}}' errorMessage="{{item.errMsg}}">
+        <van-icon wx:if="{{ form[item.code]}}" slot="icon" name="clear" color="#c8c9cc;"  data-name="{{item.name}}" data-key="{{item.code}}" catchtap="clearChoose"></van-icon>
       </van-field>
       <!--多选下拉-->
       <van-field wx:if="{{item.type=='mutidrop' && !item.hide}}" label-class="{{item.required?'red-label':'nomal-label' }}" data-name="{{item.name}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card}}" value="{{ form[item.name + 's']}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" is-link catchtap="open" autosize border="{{ false }}" readonly="{{true}}" input-class="dk-cell-value-class" data-type='{{item.dropType}}' errorMessage="{{item.errMsg}}">
+        <van-icon wx:if="{{ form[item.code]}}" slot="icon" name="clear" color="#c8c9cc;" data-name="{{item.name}}" data-key="{{item.code}}" catchtap="clearChoose"></van-icon>
       </van-field>
       <!--选单-->
       <van-field wx:if="{{item.type=='choose'}}" label-class="{{item.required?'red-label':'nomal-label' }}" data-name="{{item.name}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card.name}}" value="{{ form[item.name]}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{item.placeholder ? item.placeholder : wxmlUtil.setPlaceholder($t, item.title?item.title:item.code)}}" is-link catchtap="open" autosize border="{{ false }}" readonly="{{true}}" input-class="dk-cell-value-class" data-type='{{item.dropType}}' errorMessage="{{item.errMsg}}">
+        <van-icon wx:if="{{ form[item.code]}}" slot="icon" name="clear" color="#c8c9cc;" data-name="{{item.name}}" data-key="{{item.code}}" catchtap="clearChoose"></van-icon>
       </van-field>
       <!--选择框-->
       <van-field wx:if="{{item.type=='checkbox' && !item.hide}}" input-width="200rpx" input-class="dk-cell-value-class" label-class="nomal-label" input-align="left" label="{{item.title?item.title:$t[item.code]}}" autosize border="{{ false }}" readonly="{{true}}" errorMessage="{{item.errMsg}}">
@@ -28,10 +31,12 @@
         </view>
       </van-field>
       <!--日期-->
-      <van-field wx:if="{{item.type=='date'}}" label-class="{{item.required?'red-label':'nomal-label' }}" is-link value="{{ form[item.code]}}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" data-item="{{item}}" data-key="{{item.code}}" data-index="{{index}}" data-card="{{card.name}}" errorMessage="{{item.errMsg}}" border="{{ false }}" readonly="{{true}}" input-class="dk-cell-value-class" catchtap="openDatePop">
+      <van-field wx:if="{{item.type=='date'}}" label-class="{{item.required?'red-label':'nomal-label' }}" is-link value="{{ form[item.code]}}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" data-item="{{item}}" data-key="{{item.code}}" data-index="{{index}}" data-card="{{card.name}}" errorMessage="{{item.errMsg}}" clearable border="{{ false }}" readonly="{{true}}" input-class="dk-cell-value-class" catchtap="openDatePop">
+        <van-icon wx:if="{{ form[item.code]}}" slot="icon" name="clear" color="#c8c9cc;" data-key="{{item.code}}" catchtap="clearDate"></van-icon>
       </van-field>
-
-      <van-field wx:if="{{item.type=='dateTime'}}" label-class="{{item.required?'red-label':'nomal-label' }}" is-link value="{{ form[item.code]}}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" data-item="{{item}}" data-key="{{item.code}}" data-index="{{index}}" data-card="{{card.name}}" errorMessage="{{item.errMsg}}" border="{{ false }}" readonly="{{true}}" input-class="dk-cell-value-class" catchtap="openDatePopTime">
+      <!--时间-->
+      <van-field wx:if="{{item.type=='dateTime'}}" label-class="{{item.required?'red-label':'nomal-label' }}" is-link value="{{ form[item.code]}}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" data-item="{{item}}" data-key="{{item.code}}" data-index="{{index}}" data-card="{{card.name}}" errorMessage="{{item.errMsg}}" border="{{ false }}" clearable readonly="{{true}}" input-class="dk-cell-value-class" catchtap="openDatePopTime">
+        <van-icon wx:if="{{ form[item.code]}}" slot="icon" name="clear" color="#c8c9cc;" data-key="{{item.code}}" catchtap="clearDate"></van-icon>
       </van-field>
       <!--tab标签-->
       <van-field wx:if="{{item.type=='tabs' && !item.hide}}" input-width="200rpx" input-class="dk-cell-value-class" label-class="nomal-label" input-align="left" label="{{item.title?item.title:$t[item.code]}}" autosize border="{{ false }}" readonly="{{true}}" errorMessage="{{item.errMsg}}">
@@ -41,14 +46,19 @@
       </van-field>
 
       <!--客户地址-->
-      <van-field wx:if="{{item.type=='address' && !item.hide}}" input-width="200rpx" input-class="dk-cell-value-class" label-class="{{item.required?'red-label':'nomal-label' }}" input-align="left" data-key="address" type="textarea" value="{{ wxmlUtil.addressToIndexOf(form.address.address) }}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" autosize border="{{ false }}" right-icon="location" data-type='address' catchtap="onClickWxchartAddress" readonly="{{true}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card}}" errorMessage="{{item.errMsg}}">
+      <van-field wx:if="{{item.type=='address' && !item.hide}}" input-width="200rpx" input-class="dk-cell-value-class" label-class="{{item.required?'red-label':'nomal-label' }}" input-align="left" data-key="address" type="textarea" value="{{ wxmlUtil.addressToIndexOf(form.address.address) }}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" autosize border="{{ false }}" data-type='address' catchtap="onClickWxchartAddress" readonly="{{true}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card}}" errorMessage="{{item.errMsg}}">
+        <view style="display: flex;" slot="right-icon">
+          <van-icon wx:if="{{ form.address.address}}" slot="right-icon" name="clear" color="#c8c9cc;" data-key="{{item.code}}" catchtap="clearAddress"></van-icon>
+          <van-icon custom-style="padding-left:10rpx" name="location"></van-icon>
+        </view>
       </van-field>
       <!--联系电话-->
-      <dk-number-phone-input wx:if="{{item.type=='phone' && !item.hide}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card}}" labelClass="{{item.required?'red-label':'nomal-label' }}" rightIcon="phone" model:value="{{ form[item.code]}}" bind:changeField="changePhone" bind:changeFieldblur="changePhoneblur" errorMessage="{{item.errMsg}}" id="{{item.code}}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.code)}}"></dk-number-phone-input>
+      <dk-number-phone-input wx:if="{{item.type=='phone' && !item.hide}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card}}" labelClass="{{item.required?'red-label':'nomal-label' }}" clearable rightIcon="phone" model:value="{{ form[item.code]}}" bind:changeField="changePhone" bind:clear="clearField" bind:changeFieldblur="changePhoneblur" errorMessage="{{item.errMsg}}" id="{{item.code}}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.code)}}"></dk-number-phone-input>
       <!--数字类-->
       <dk-number-input wx:if="{{item.type=='number' && !item.hide}}" sign="{{(item.sign || item.sign == '')?item.sign:'¥'}}" digits="{{(item.digits || item.digits == 0)?item.digits:2}}" fontSize="14" left="30rpx" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card}}" center="left" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" errorMessage="{{item.errMsg}}" titleValue="{{item.title?item.title:$t[item.code]}}" inputColor="#CAA977" titleFontWeight="{{item.required?'bold':'normal'}}" titleColor="{{item.required?'#E4002B':'#95A8CB'}}" inputValue="{{form[item.code]}}" bind:triggerBindValue="changeNumberField"></dk-number-input>
+
       <!--备注-->
-      <van-field wx:if="{{item.type=='textarea' && !item.hide}}" rows="{{item.rows}}" show-word-limit="{{item.showWordLimit}}"  type="textarea" label-class="{{item.required?'red-label':'nomal-label' }}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card}}" value="{{ form[item.code]}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" autosize border="{{ false }}" readonly="{{!!item.readonly}}" input-class="dk-cell-value-class {{item.rows ?  'input-rows-class' : ''}}" maxlength="{{item.maxlength?item.maxlength:500}}" right-icon="{{item.rightIcon}}" bind:change="changeField" errorMessage="{{item.errMsg}}">
+      <van-field wx:if="{{item.type=='textarea' && !item.hide}}" rows="{{item.rows}}" show-word-limit="{{item.showWordLimit}}" type="textarea" label-class="{{item.required?'red-label':'nomal-label' }}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{index}}" data-card="{{card}}" value="{{ form[item.code]}}" input-align="left" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" autosize border="{{ false }}" readonly="{{!!item.readonly}}" input-class="dk-cell-value-class {{item.rows ?  'input-rows-class' : ''}}" maxlength="{{item.maxlength?item.maxlength:500}}" right-icon="{{item.rightIcon}}" bind:change="changeField" errorMessage="{{item.errMsg}}">
       </van-field>
       <!--附件-->
       <view style="display:flex;width:100%;margin: 1vw; padding-top: 20rpx;" wx:if="{{item.type=='uploader'}}">

+ 21 - 7
components/dkbase/dk-number-input/dk-number-input.js

@@ -187,16 +187,30 @@ Component({
       }, 30)
     },
     /**
+    * @desc : 光标进入输入框
+    * @author : 周兴
+    * @date : 2022/6/30 16:16
+    */
+    bindFocus(e){
+
+      if(isNaN(this.data.inputValue)){
+        console.log('ttt',this.data.inputValue,isNaN(this.data.inputValue));
+        this.setData({
+          inputValue:0
+        })
+      }
+    },
+    /**
     * @desc : 输入时数据的处理
     * @author : 周兴
     * @date : 2022/6/30 16:16
     */
     bindInput(e) {
-      // console.log('ddd1',e,this.data.inputValue,e.detail.value.endsWith('.'));
+      console.log('ddd1',e,this.data.inputValue);
       let flag = true;
-      let values = e.detail.value.split('.')
+      let values = e.detail.split('.')
       // 如果输入的是小数点,那么需要判断是否已经有小数点
-      if (e.detail.value.endsWith('.')) {
+      if (e.detail.endsWith('.')) {
         // 说明有多个小数点
         // console.log('zzz',values,this.data.inputValue,(this.data.inputValue + '').indexOf('.'));
         if (values && values.length > 2) {
@@ -208,7 +222,7 @@ Component({
           }
         }
         // 如果inputValue是空,那么当成0处理
-        if (e.detail.value == '.') {
+        if (e.detail == '.') {
           return '0.';
         }
         flag = false;
@@ -224,13 +238,13 @@ Component({
         let value = 0;
         // 判断是否超过最大值
         if (this.data.maxFlag) {
-          if (e.detail.value > this.data.max) {
+          if (e.detail > this.data.max) {
             value = this.data.max
           } else {
-            value = e.detail.value
+            value = e.detail
           }
         } else {
-          value = e.detail.value
+          value = e.detail
         }
         this.setData({
           clearFlag: false,

+ 9 - 3
components/dkbase/dk-number-input/dk-number-input.wxml

@@ -1,13 +1,19 @@
-<view style="padding-top: 20rpx; padding-bottom: 20rpx;">
-  <view wx:if="{{!focus || disabled}}">
+<view>
+  <view wx:if="{{!focus || disabled}}" style="padding-top: 20rpx; padding-bottom: 20rpx;">
     <dk-cell height="48rpx" left="{{left}}" signSize="{{signSize}}" fontWeight="{{titleFontWeight}}" fontSize="{{fontSize}}" tail="{{percentSignFlag ? '%' : ''}}" percentSignFlag="{{percentSignFlag}}" contentColor="{{inputColor}}" amount="{{sign?true:false }}" contentFontWeight="{{fontWeight}}" contentRight="{{contentRight}}" center="{{center=='right'?'flex-end':center}}" title="{{titleValue}}" content="{{(inputValue || inputValue == 0)?inputValue:null}}" titleWid="{{titleWidth}}" catchtap="handleInput" titleColor="{{titleColor}}" placeholder="{{placeholder}}" errorMessage="{{errorMessage}}">
     </dk-cell>
   </view>
 
-  <view wx:else class="input-class" style="--center--:{{center}}">
+  <!-- <view wx:else class="input-class" style="--center--:{{center}}">
     <view wx:if="{{titleValue}}" class="input-title-class" style="--color--:{{titleColor}};--fontSize--:{{fontSize + 'px'}};--left--:{{left}};--width--:{{titleWidth}};--fontWeight--:{{titleFontWeight}}">{{titleValue}}</view>
     <view class="input_content-class" style="--width--:{{titleWidth}}">
       <input disabled="{{readonly}}" style="text-align: {{center}};color:{{inputColor}};font-size:{{fontSize + 'px'}};font-weight: {{fontWeight}}; height: {{fontSize + 'px'}}" type="digit" value="{{inputValue}}" focus='{{focus}}' selection-start='0' selection-start='{{inputValue.length}}' bindinput="bindInput" bindblur='bindBlur'></input>
+      <van-icon name="clear" color="#c8c9cc;" catchtap="clearChoose"></van-icon>
     </view>
+  </view> -->
+  <!--文本框-->
+  <view wx:else style="padding-top: 2rpx; padding-bottom: 2rpx;">
+    <van-field label-class="input-title-class" style="--color--:{{titleColor}};--fontSize--:{{fontSize + 'px'}};--width--:{{titleWidth}};--fontWeight--:{{titleFontWeight}}" value="{{inputValue?inputValue:undefined}}" input-align="left" label="{{titleValue}}" placeholder="{{placeholder}}" autosize auto-focus clearable border="{{ false }}" input-class="dk-cell-value-class" type="number" bind:focus="bindFocus" bind:change="bindInput" bind:blur="bindBlur">
+    </van-field>
   </view>
 </view>

+ 10 - 1
components/dkbase/dk-number-input/dk-number-input.wxss

@@ -38,6 +38,15 @@
 }
 
 .input_content-class{
-  width:calc(100% - var(--width--) - 70rpx) !important;
+  width:100% !important;
   padding-left:20rpx;
+  display: flex;
+}
+
+/**cell值颜色**/
+.dk-cell-value-class {
+  text-align: left !important;
+  font-size: 13px !important;
+  color: #1B365D !important;
+  font-weight: normal;
 }

+ 42 - 13
components/dkbase/dk-number-phone-input/dk-number-phone-input.js

@@ -71,6 +71,10 @@ Component({
     // 是否只读
     readonly:{
       type:Boolean,
+    },
+    // 是否显示清空
+    clearable:{
+      type:Boolean
     }
   },
 
@@ -81,16 +85,32 @@ Component({
    * 组件的初始数据
    */
   data: {
+    clearFlag:false
   },
 
   /**
    * 组件的方法列表
    */
   methods: {
+    /**
+     * @desc   : 值改变
+     * @author : 周兴
+     * @date   : 2024/1/26 11:46
+     */
     changeField(e) {
       this.triggerEvent('changeField', e)
     },
-
+    /**
+     * @desc   : 值清空
+     * @author : 周兴
+     * @date   : 2024/1/26 11:46
+     */
+    clearField(e){
+      this.setData({
+        clearFlag:true
+      })
+      this.triggerEvent('clear')
+    },
     /**
      * @desc   : 值改变进行校验
      * @author : 周兴
@@ -98,20 +118,29 @@ Component({
      */
     changeFieldblur(e) {
       if (this.data.validTelephoneRule) {
-        let errorMessage = this.data.errorMessage;
-        // 联系电话格式错误
-        if (e.detail.value && e.detail.value != "") {
-          var myreg = Constants.Mobile_Phone_Number_Regular_Expression
-          if (!myreg.test(e.detail.value)) {
+        setTimeout(()=>{
+          // 点击清空进行的
+          if(this.data.clearFlag){
+            this.setData({
+              clearFlag:false
+            })
+            return;
+          }
+          let errorMessage = this.data.errorMessage;
+          // 联系电话格式错误
+          if (e.detail.value && e.detail.value != "") {
+            var myreg = Constants.Mobile_Phone_Number_Regular_Expression
+            if (!myreg.test(e.detail.value)) {
+              errorMessage = this.data.label + '格式错误'
+            }
+          } else {
             errorMessage = this.data.label + '格式错误'
           }
-        } else {
-          errorMessage = this.data.label + '格式错误'
-        }
-        this.setData({
-          errorMessage: errorMessage
-        })
-        e.errMsg = errorMessage
+          this.setData({
+            errorMessage: errorMessage
+          })
+          e.errMsg = errorMessage
+        },200)
       }
       this.triggerEvent('changeFieldblur', e)
     },

+ 1 - 1
components/dkbase/dk-number-phone-input/dk-number-phone-input.wxml

@@ -1,3 +1,3 @@
-<van-field input-width="{{inputWidth + 'rpx'}}" disabled="{{disabled}}" input-class="dk-cell-class" style="--fontWeight--:{{fontWeight}};--color--:{{disabled?'#95A8CB':'#1B365D'}}" label-class="{{labelClass}}" input-align="{{inputAlign}}" data-key="{{dataKey}}" maxlength="{{maxlength}}" type="{{type}}" value="{{ value }}" placeholder="{{placeholder}}" autosize border="{{ false }}" bind:change="changeField" right-icon="{{rightIcon}}" color="#95A8CB" readonly="{{readonly}}" bind:blur="changeFieldblur" data-value="{{value}}" data-icon="{{rightIcon}}" bind:onBindInput="{{disabledInput ? 'clickFieldInput': ''}}" error-message="{{errorMessage}}" bind:click-icon="onClickphone">
+<van-field input-width="{{inputWidth + 'rpx'}}" disabled="{{disabled}}" input-class="dk-cell-class" style="--fontWeight--:{{fontWeight}};--color--:{{disabled?'#95A8CB':'#1B365D'}}" label-class="{{labelClass}}" input-align="{{inputAlign}}" data-key="{{dataKey}}" maxlength="{{maxlength}}" type="{{type}}" clearable="{{clearable}}" value="{{ value }}" placeholder="{{placeholder}}" autosize border="{{ false }}" bind:change="changeField" bind:clear="clearField" right-icon="{{rightIcon}}" color="#95A8CB" readonly="{{readonly}}" bind:blur="changeFieldblur" data-value="{{value}}" data-icon="{{rightIcon}}" bind:onBindInput="{{disabledInput ? 'clickFieldInput': ''}}" error-message="{{errorMessage}}" bind:click-icon="onClickphone">
   <view slot="label" catchtap="copyPhone">{{label}}</view>
 </van-field>

+ 1 - 1
dist/field/index.wxml

@@ -3,7 +3,7 @@
 
 <van-cell size="{{ size }}" icon="{{ leftIcon }}" center="{{ center }}" border="{{ border }}" is-link="{{ isLink }}" required="{{ required }}" clickable="{{ clickable }}" title-width="{{ titleWidth }}" title-style="margin-right: 12px;" custom-style="{{ customStyle }}" arrow-direction="{{ arrowDirection }}" custom-class="van-field" title-class="label-class">
   <slot name="left-icon" slot="icon" />
-  <view wx:if="{{ label }}" class="{{ utils.bem('field__label', { disabled }) }}" catchtap="toCopy" slot="title">
+  <view wx:if="{{ label }}" class="label-class {{ utils.bem('field__label', { disabled }) }}" catchtap="toCopy" slot="title">
     {{ label }}
   </view>
   <slot wx:else name="label" slot="title" />

+ 1 - 1
package-basic-data/pages/test/add/add.js

@@ -18,7 +18,7 @@ Page({
       { code: 'telephone', type: 'phone', title: '客户电话', required: true }, { code: 'address', type: 'address', title: '客户地址', required: true }, { code: 'designStatus', type: 'switch', title: '设计制图' }],
       items:[{ code: 'collectType', name: 'collectName', type: 'drop', required: true, dropType: 'collect' },{ code: 'collectAmount', type: 'number', title: '收款金额', required: true }],
       relation:[{ code: 'invoice', type: 'choose',title:'关联源单'}],
-      other:[{ code: 'deliveryDate', type: 'date', title: '送货日期' },{ code: 'remarks', type: 'textarea', title: '备注',readonly:false }, { code: 'file', type: 'uploader', title: '附件' }]
+      other:[{ code: 'deliveryDate', type: 'date', title: '送货日期' },{ code: 'remarks', type: 'textarea', title: '备注',readonly:false },{ code: 'test1', type: 'str', title: '测试1' },{ code: 'test2', type: 'address', title: '测试2' },{ code: 'test3', type: 'phone', title: '测试3' }, { code: 'test4', type: 'number', title: '测试4' }, { code: 'test5', type: 'switch', title: '测试5' }, { code: 'test6', type: 'checkbox', title: '测试6' },{ code: 'file', type: 'uploader', title: '附件' }]
     },
      // 路由
      routeObjName: 'customer',