Просмотр исходного кода

订单开单外协新增模糊下拉

liuyao 1 год назад
Родитель
Сommit
0b0d945b20

+ 2 - 1
app.json

@@ -363,7 +363,8 @@
         "dk-goos-list": "components/dkbase/dk-goos-list/dk-goos-list",
         "dk-stepper": "components/dkbase/dk-stepper/dk-stepper",
         "dk-navbar": "components/dkbase/dk-navbar/dk-navbar",
-        "dk-swiper": "components/dkbase/dk-swiper/dk-swiper"
+        "dk-swiper": "components/dkbase/dk-swiper/dk-swiper",
+        "dk-select-field": "components/dkbase/dk-select-field/dk-select-field"
     },
     "tabBar": {
         "color": "#95A8CB",

+ 54 - 5
components/dkbase/dk-form-more-items/dk-form-more-items.js

@@ -171,7 +171,8 @@ Component({
     itemName: 'itemList',
     deleteName: 'deleteList',
     itemsContent: [{ code: 'collectType', name: 'collectName', type: 'drop', required: true, dropType: 'collect' }, { code: 'collectAmount', type: 'number', title: '收款金额', required: true }],
-    form: {}
+    form: {},
+    imageUrl: config.image_url + '/static/img/',
   },
   lifetimes: {
     attached: function () {
@@ -564,7 +565,7 @@ Component({
           index: item.index,
           card: item.card
         })
-      } else if (item.item.type == 'choose') {
+      } else if (item.item.type == 'choose' || item.item.type == 'selectIcon') {
         // 跳转链接
         if (item.item.urlKey) {
           this.setData({
@@ -654,9 +655,18 @@ Component({
               // 如果必须输入,就要进行判断
               if (item.required && form[this.data.itemName] && form[this.data.itemName].length > 0) {
                 form[this.data.itemName].forEach(t => {
-                  if (!t[item.code]) {
-                    t[item.code + '_errMsg'] = title + '不为空'
-                    flag = false;
+                  if(!item.validNameFlag){
+                    // 默认校验编码
+                    if (!t[item.code]) {
+                      t[item.code + '_errMsg'] = title + '不为空'
+                      flag = false;
+                    }
+                  }else{
+                    // 校验名称
+                    if (!t[item.name]) {
+                      t[item.code + '_errMsg'] = title + '不为空'
+                      flag = false;
+                    }
                   }
                 })
               }
@@ -1128,6 +1138,27 @@ Component({
       })
     },
     /**
+     * @desc   : SelectField组件输入回调
+     * @author : 刘尧
+     * @date   : 2024/7/2 09:59
+     */
+    inputSelectField(e){
+        const form = this.data.form
+        let item = form[this.data.itemName]
+        const index = e.currentTarget.dataset.index
+        const dataItem = e.currentTarget.dataset.item
+        const itemName = e.currentTarget.dataset.item.name
+        const data = item[index]
+        data[itemName] = e.detail
+        const contentObj = this.data.contentObj
+        // 避免校验code 导致无法添加信息
+        contentObj.items[contentObj.items.findIndex((item) => item.code == dataItem.code)].validNameFlag = true
+        this.setData({
+          form: form,
+          contentObj: contentObj
+        })
+    },
+    /**
      * @desc : 设置明细列展示内容
      * @author : 周兴
      * @date : 2024/1/19
@@ -1136,6 +1167,24 @@ Component({
       moreItemsType
     },
     /**
+     * @desc   : SelectField组件选择回调
+     * @author : 刘尧
+     * @date   : 2024/7/2 14:13
+     */
+    selectCellValue(e){
+      const form = this.data.form
+      let item = form[this.data.itemName]
+      const index = e.currentTarget.dataset.index
+      const itemName = e.currentTarget.dataset.item.name
+      const dataSetItem = e.currentTarget.dataset.item
+      const data = item[index]
+      data[itemName] = e.detail.supName
+      data[dataSetItem.code] = e.detail[dataSetItem.code]
+      this.setData({
+        form: form
+      })
+    },
+    /**
      * @desc : 获取语言的方法
      * @author : 周兴
      * @date : 2024/1/19

+ 6 - 0
components/dkbase/dk-form-more-items/dk-form-more-items.wxml

@@ -71,6 +71,12 @@
             <van-field wx:if="{{item.type=='choose' }}" required="{{item.required?true:false }}" data-name="{{item.name}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{indext}}" data-card="{{card.name}}" value="{{ itemt[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}}" label-class="{{(!!readonly || !!item.readonly)?'readonly-label':'nomal-label'}}" input-class="dk-cell-value-class" data-type='{{item.dropType}}' errorMessage="{{itemt[item.code + '_errMsg']}}">
               <van-icon wx:if="{{!readonly &&  itemt[item.name]}}" slot="icon" name="clear" color="#c8c9cc;" data-item="{{item}}" data-name="{{item.name}}" data-card="{{card.name}}" data-key="{{item.code}}" catchtap="clearChoose"></van-icon>
             </van-field>
+            <!-- 新选单 -->
+            <!-- <van-field wx:if="{{item.type=='selectIcon'}}" required="{{item.required?true:false }}" data-name="{{item.name}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{indext}}" data-card="{{card.name}}" value="{{itemt[item.name]}}" 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}}" label-class="{{(!!readonly || !!item.readonly)?'readonly-label':'nomal-label'}}" input-class="dk-cell-value-class" data-type='{{item.dropType}}' errorMessage="{{itemt[item.code + '_errMsg']}}">
+              <van-icon slot="right-icon" name="{{imageUrl+'/select_cus.png'}}" color="#c8c9cc;" data-name="{{item.name}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{indext}}" data-card="{{card.name}}" size="20px" catchtap="open" data-type='{{item.dropType}}'></van-icon>
+            </van-field> -->
+            <dk-select-field wx:if="{{item.type=='selectIcon'}}" fieldValue="{{itemt[item.name]}}" data-name="{{item.name}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{indext}}" data-card="{{card.name}}" required="{{item.required?true:false }}" labelClass="{{(!!readonly || !!item.readonly)?'readonly-label':'nomal-label'}}" label="{{item.title?item.title:$t[item.code]}}" placeholder="{{wxmlUtil.setPlaceholder($t,item.title?item.title:item.code)}}" border="{{ false }}" inputClass="dk-cell-value-class" readonly="{{!!readonly || !!item.readonly}}" errorMessage="{{itemt[item.code + '_errMsg']}}" iconUrl="{{imageUrl+'/select_cus.png'}}" bind:iconClick="open" valueList="{{item.data}}" bind:inputValue="inputSelectField" bind:selectCellValue="selectCellValue">
+            </dk-select-field>
             <!--选择框-->
             <van-field wx:if="{{item.type=='checkbox'}}" input-width="200rpx" input-class="dk-cell-value-class" label-class="{{(!!readonly || !!item.readonly)?'readonly-label':'nomal-label'}}" input-align="left" value="{{ itemt[item.code] ? '  需要' : '  不需要' }}" label="{{item.title?item.title:$t[item.code]}}" autosize border="{{ false }}" readonly="{{true}}" errorMessage="{{itemt[item.code + '_errMsg']}}">
               <view slot="inputbefor" style="text-align: left;padding-left: 10rpx;" data-item="{{item}}" data-index="{{indext}}" data-card="{{card.name}}" data-value="{{itemt[item.code]}}" data-key="{{item.code}}" catchtap="onItemChange">

+ 112 - 0
components/dkbase/dk-select-field/dk-select-field.js

@@ -0,0 +1,112 @@
+// components/dkbase/dk-select-field/dk-select-field.js
+Component({
+
+    /**
+     * 组件的属性列表
+     */
+    properties: {
+      label:{
+        type: String,
+      },
+      placeholder:{
+        type: String
+      },
+      inputClass:{
+        type:String
+      },
+      readonly:{
+        type: Boolean,
+        value: false
+      },
+      errorMessage:{
+        type: String
+      },
+      border:{
+        type: Boolean,
+        value: false
+      },
+      required: {
+        type: Boolean,
+        value: false
+      },
+      labelClass: {
+        type: String
+      },
+      iconUrl: {
+        type: String
+      },
+      fieldValue: {
+        type: String
+      },
+      valueList: {
+        type: Array
+      }
+    },
+    /**
+     * 组件的初始数据
+     */
+    data: {
+      selectListShow: false,
+      selectList: [],
+      fieldAddress:{}
+    },
+    lifetimes:{
+      attached(){
+        const that = this
+        const query = this.createSelectorQuery();
+        query.select("#vanField").boundingClientRect();
+        query.exec((res) => {
+          that.setData({
+            fieldAddress: res[0]
+          })
+        });
+      }
+    },
+    /**
+     * 组件的方法列表
+     */
+    methods: {
+    /**
+     * @desc   : icon点击事件
+     * @author : 刘尧
+     * @date   : 2024/7/2 11:34
+     */
+      open(e){
+        this.triggerEvent('iconClick')
+      },
+      /**
+       * @desc   : 输入框失去焦点隐藏列表
+       * @author : 刘尧
+       * @date   : 2024/7/2 11:34
+       */
+      blurField(){
+        this.setData({
+          selectListShow: false
+        })
+      },
+      /**
+       * @desc   : 输入监听事件
+       * @author : 刘尧
+       * @date   : 2024/7/2 11:34
+       */
+      inputField(e){
+        const valueList = this.data.valueList
+        if(e.detail && e.detail !== ""){
+          const selectList = valueList.filter((item) => item.supName.includes(e.detail))
+          this.setData({
+            selectListShow: true,
+            selectList: selectList
+          })
+        }else {
+          this.setData({
+            selectListShow: false,
+            selectList: []
+          })
+        }
+        this.triggerEvent('inputValue', e.detail)
+      },
+      clickCell(e){
+        this.triggerEvent('selectCellValue', e.currentTarget.dataset.item)
+      }
+    }
+})

+ 4 - 0
components/dkbase/dk-select-field/dk-select-field.json

@@ -0,0 +1,4 @@
+{
+    "component": true,
+    "usingComponents": {}
+}

+ 29 - 0
components/dkbase/dk-select-field/dk-select-field.wxml

@@ -0,0 +1,29 @@
+<view>
+  <van-field required="{{required}}" autosize border="{{ border }}" readonly="{{ false }}" id="vanField"
+    label="{{label}}" placeholder="{{placeholder}}" input-class="{{inputClass}}" readonly="{{readonly}}" errorMessage="{{errorMessage}}" label-class="{{labelClass}}" value="{{fieldValue}}" extra-event-params="{{true}}" bind:input="inputField" bind:blur="blurField">
+    <view slot="right-icon" catchtap="open">
+      <van-icon slot="right-icon" name="{{iconUrl}}" color="#c8c9cc;" size="20px"></van-icon>
+    </view>
+  </van-field>
+
+  <van-transition
+    show="{{ selectListShow && selectList.length !== 0}}"
+    name="fade-down"
+    duration="{{ { enter: 300, leave: 1000 } }}"
+    enter-class="van-enter-class"
+    enter-active-class="van-enter-active-class"
+    leave-active-class="van-leave-active-class"
+    leave-to-class="van-leave-to-class"
+  >
+  <view style="position: relative;width: 100%;height: auto;top: 5px;">
+    <view class="select-list">
+      <view class="select-list-item">
+        <van-cell-group style="max-height: 400rpx;">
+          <van-cell size="large" wx:for="{{selectList}}" data-key="{{item.code}}" data-item="{{item}}" data-index="{{indext}}" title="{{item.supName}}" bind:tap="clickCell"/>
+        </van-cell-group>
+      </view>
+    </view>
+  </view>
+  </van-transition>
+
+</view>

+ 152 - 0
components/dkbase/dk-select-field/dk-select-field.wxss

@@ -0,0 +1,152 @@
+/* components/dkbase/dk-select-field/dk-select-field.wxss */
+.select-list{
+  width: 67%;
+  padding: 15rpx;
+  background-color: #f8f8f8;
+  border-radius: 10rpx;
+  min-height: 100rpx;
+  position: absolute;
+  top: 0;
+  right: 15rpx;
+  z-index: 500;
+}
+
+.select-list-item{
+  min-height: 0rpx;
+}
+
+.readonly-label{
+  color: #95A8CB !important;
+}
+
+.nomal-label{
+  color: #002340 !important 
+}
+
+/**cell值颜色**/
+.dk-cell-value-class {
+  text-align: left !important;
+  font-size: 13px !important;
+  color: #002340 !important;
+  font-weight: normal;
+}
+
+/**cell值颜色**/
+.dk-cell-nomal-class {
+  text-align: left !important;
+  font-size: 13px !important;
+  color: #95A8CB !important;
+  font-weight: normal;
+}
+
+.cancel-class {
+  text-align: left;
+  padding-left: 10rpx;
+  padding-right: 10rpx;
+  display: flex;
+}
+
+/**cell值颜色**/
+.dk-cell-value-right-class {
+  text-align: right !important;
+  font-size: 13px !important;
+  color: #1B365D !important;
+  font-weight: normal;
+}
+
+/**cell空值颜色**/
+.dk-cell-value-empty-class {
+  text-align: left !important;
+  font-size: 13px !important;
+  color: #95A8CB !important;
+}
+
+.background-amount{
+  background: #FDF2E7;
+  padding: 10rpx 0rpx;
+  margin: 20rpx;
+  border-radius: 10rpx;
+}
+
+.corner-view {
+  position: absolute;
+  /* 扇形弧度 */
+  /* border-radius: 0 0 0 100rpx; */
+  /* 左上弧度 */
+  /* border-top-left-radius: 10rpx; */
+  /* 位置 */
+ 
+  top: 0;
+  right: 15px; 
+  width: 127rpx;
+  height: 90rpx; 
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.corner-view-text { 
+  /* 字体颜色 */
+  color: #95A8CB; 
+  /* font-size: 24rpx; */
+  /* font-weight: 600; */
+  font-size: 24rpx; 
+}
+
+.sign-class {
+  padding-left: 10rpx;
+  padding-right: 5rpx;
+  padding-bottom: 5rpx;
+  font-size: 12px;
+  display: flex;
+  align-items: flex-end;
+}
+
+.amount-class {
+  font-size: 18px;
+}
+
+.item-class {
+  display: flex;
+  font-size: 14px;
+  padding: 20rpx;
+}
+
+.item-title-class {
+  font-size: 16px;
+  color: #1B365D;
+  font-weight: 600;
+  width: 26%;
+}
+
+.item-count-class {
+  color: #95A8CB;
+  font-size: 12px;
+  display: flex;
+  align-items: flex-end;
+  width: 59%;
+}
+
+.grid-item-class {
+  padding: 0 !important;
+}
+
+
+.item-add-btn-class {
+  margin: 20rpx;
+  border: solid 3rpx #606EB2;
+  height: 40rpx;
+  border-radius: 40rpx;
+  background-color: #F8F9FD;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 40rpx;
+}
+
+.item-btn-title-class {
+  display: flex;
+  align-items: center;
+  font-size: 14px !important;
+  color: #1B365D !important;
+}

+ 44 - 6
package-base-select/pages/select-choose-coordination/select-choose-coordination.js

@@ -22,7 +22,8 @@ Page({
           code: 'supId',
           name: 'supName',
           title: mixins.$t("supplier"), //'供应商',
-          type: 'choose',
+          type: 'selectIcon',
+          readonly: false,
           required: true,
           urlKey: 'chooseOutSupplier'
         },
@@ -98,7 +99,6 @@ Page({
    */
   saveButton(e) {
     this.save({})
-   
   },
   /**
    * @desc : 保存数据服务
@@ -129,9 +129,40 @@ Page({
       delta: 1
     })
   },
-
-
-
+  /**
+   * @desc : 获取供应商信息
+   * @date : 2024/7/2 11:02
+   * @author : 刘尧
+   */
+  getSupData(){
+    let params = {}
+    params = this.setSearchParams(params)
+    const supplierService = app.globalData['supplierService']
+    return this.excute(supplierService, supplierService.selectByCond, params);
+  },
+  /**
+   * @desc : 获取数据回调
+   * @date : 2024/7/2 11:02
+   * @author : 刘尧
+   */
+  handleData(data){
+    const contentObj = this.data.contentObj
+    const items = contentObj.items
+    items[items.findIndex((item) => item.code === 'supId')].data = data
+    this.setData({
+      contentObj: contentObj
+    })
+  },
+  /**
+   * @desc : 设置查询参数
+   * @date : 2024/7/2 11:05
+   * @author : 刘尧
+   */
+  setSearchParams(params){
+    params.supType = ""
+    params.flgValid = true
+    return params
+  },
   /**
    * 生命周期函数--监听页面加载
    */
@@ -145,7 +176,14 @@ Page({
     // this.setData({
     //   formData: JSON.stringify(this.data.formData)
     // })
-
+  },
+  /**
+   * 生命周期函数--页面显示
+   */
+  onShow() {
+    this.getSupData().then(res => {
+      this.handleData(res.data.data.list)
+    })
   },
 
 

+ 0 - 1
package-base-select/pages/select-data/select-data.wxml

@@ -14,7 +14,6 @@
     <dk-tabs wx:if="{{tagList && tagList.length > 0}}" active="{{active}}" list="{{tagList}}" bind:onChange="onChangeTabs"> </dk-tabs>
   </view>
 </van-sticky>
-
 <!--简单列表-->
 <!-- <view wx:if="{{simpleFlag}}" style="margin-top:30rpx;">
   <view wx:for="{{tableData}}" data-item="{{item}}" wx:key="index" class="main-class main-item-class" style="{{item.checked? 'border: 1px solid #1B365D;':''}}" data-index="{{index}}" catchtap="choose">

+ 1 - 1
package-base-select/pages/select-data/select-data.wxss

@@ -76,4 +76,4 @@
 	background: linear-gradient(95.33deg, #ADC6FF -2.27%, #F0F5FF 60.66%),
     linear-gradient(0deg, #F4F8FF, #F4F8FF),
     radial-gradient(58.28% 235.72% at 10.78% 50%, rgba(191, 213, 255, 0.6) 0%, rgba(216, 229, 255, 0) 56.69%); 
-}
+}

+ 15 - 5
package-inventory/pages/ivt-sum-report/detail/detail.js

@@ -127,14 +127,24 @@ Page({
    * 跳转对应单据
    */
   toItem(param){
-    const code = this.data.tagList[this.data.active].code;
+    const code = this.data.tagList[this.data.active].code
     const data = param.currentTarget.dataset.value
     const e = {
+      type: "toDetail",
+      touches: undefined,
+      target: {
+        dataset: {},
+        id: ""
+      },
+      mark: {},
+      changedTouches: undefined,
+      mut: false,
       currentTarget:{
-        dataset:{
-          name: code,
-          item: data
-        }
+        dataset:{}
+      },
+      detail: {
+        name: code,
+        item: data
       }
     }
     // 跳转问题待解决