cuiqian2004
2025-03-14 00814401bba75825126baa6675e542ea3c82a5bb
pages/modal/3018_2.vue
@@ -12,7 +12,7 @@
                  <uni-data-select id="dv_select" v-if="item.name=='Select'"
                     :style="'width: calc(100% - '+item.labelWidth-10+'px);'"
                     :class="item.disabled?'input-disabled':''" v-model="item.value" :localdata="item.dict"
                     @change="onChange(item)" :disabled="item.disabled" :clear="false"></uni-data-select>
                     @change="onEnterChange(item)" :disabled="item.disabled" :clear="false"></uni-data-select>
                  <!-- 文本框/数字框 -->
                  <view class="input-wrapper" v-if="(item.name=='Input' || item.name=='InputNumber')">
                     <text v-if="item.setting.prefix" class="uni-icon" :class="[item.setting.prefix]"
@@ -22,22 +22,22 @@
                        v-model="item.value" :disabled="item.disabled" :placeholder="item.placeholder"
                        :style="{'padding-left':item.setting.prefix?0 : '8rpx','right':item.setting.suffix?0 : '8rpx'}"
                        :focus="focusFieldId == item.fieldId" @focus="ontap(item)" @click="onClick(item)"
                        @keyup.enter="onModelValue(item)" @blur="onModelValue(item)" :maxlength="-1" />
                        @keyup.enter="onEnterChange(item)" @blur="onEnterChange(item)" :maxlength="-1" />
                     <text v-if="item.setting.suffix" class="uni-icon" :class="[item.setting.suffix]"
                        @click="classAttr_extButton(item)">&#xe568;</text>
                  </view>
                  <!-- 多行文本 -->
                  <view class="input-wrapper" v-if="item.name=='Textarea' ">
                     <textarea class="uni-input" :class="item.disabled?'input-disabled':''" :value="item.value"
                     <textarea class="uni-input" :class="item.disabled?'input-disabled':''" v-model="item.value"
                        :focus="focusFieldId == item.fieldId" :placeholder="item.placeholder"
                        @blur="onModelValue(item)" @click="onClick(item)" :data-index="index"
                        @blur="onEnterChange(item)" @click="onClick(item)" :data-index="index"
                        style="height:60px;" :style="{'width':'96%'}" :disabled="item.disabled"></textarea>
                  </view>
                  <!-- 复选框 -->
                  <checkbox-group class="check_rememberPwd" v-if="item.name=='Checkbox'"
                     :class="item.disabled?'input-disabled':''" :disabled="item.disabled"
                     @change="onCheckBoxValue" :data-attr="item.fieldId">
                     @change="onCheckBoxValue" :data-attr="item.fieldId" :data-index="index">
                     <label v-for="(item2) in item.selections" :key="item2.value">
                        <checkbox :value="item2.value" :checked="item.value.includes(item2.value)" />
                        <text>{{item2.label}}</text>
@@ -46,7 +46,7 @@
                  <!-- 单选框 -->
                  <radio-group class="check_rememberPwd" v-if="item.name=='Radio'"
                     :class="item.disabled?'input-disabled':''" :disabled="item.disabled"
                     @change="onRadioBoxValue" :data-attr="item.fieldId">
                     @change="onRadioBoxValue" :data-attr="item.fieldId" :data-index="index">
                     <label v-for="(item2) in item.selections" :key="item2.value">
                        <radio :value="item2.value" :checked="item2.value === item.value" />
                        <text>{{item2.label}}</text>
@@ -57,12 +57,23 @@
                     :class="item.disabled?'input-disabled':''" :disabled="item.disabled" v-model="item.value"
                     @change="onModelValue(item)" />
                  <!-- 日期时间 -->
                  <view class="input-wrapper" v-if="(item.name=='TimePicker' || item.name=='DatePicker')">
                  <!-- <view class="input-wrapper" v-if="(item.name=='TimePicker' || item.name=='DatePicker')">
                     <picker mode="date" class="date_iput" :class="item.disabled?'input-disabled':''"
                        :disabled="item.disabled" :value="item.value" @change="onModelValue(item)">
                        <view class="picker">{{item.value}}</view>
                     </picker>
                  </view>
                  </view> -->
                  <OIDatePicker v-if="item.name=='DatePicker'" :class="item.disabled?'input-disabled':''"
                     :disabled="item.disabled" v-model="item.value" :placeholder="item.placeholder"
                     :defaultToday="item.setting.defaultToday" :format="item.setting.format"
                     @change="onModelValue(item)" />
                  <OIDatePickerRange v-if="item.name=='DatePickerRange'" :rangeSeparator="item.setting.separator"
                     :format="item.setting.format" :class="item.disabled?'input-disabled':''"
                     :disabled="item.disabled" v-model="item.value" :placeholder="item.placeholder"
                     @change="onModelValue(item)" />
                  <OITimePicker v-if="item.name=='TimePicker'" :class="item.disabled?'input-disabled':''"
                     :disabled="item.disabled" v-model="item.value" :placeholder="item.placeholder"
                     @change="onModelValue(item)" />
               </uni-forms-item>
               <!-- 栅格布局 -->
               <uni-row class="demo-uni-row" v-if="item.name=='Layout'">
@@ -78,27 +89,29 @@
                              v-model="cols.value" :disabled="cols.disabled" :placeholder="cols.placeholder"
                              :style="{'padding-left':cols.setting.prefix?0 : '8px','right':cols.setting.suffix?0 : '8px'}"
                              :focus="focusFieldId == cols.fieldId" @focus="ontap(cols)"
                              @click="onClick(cols)" @blur="onevent(cols)" :maxlength="-1" />
                              @click="onClick(cols)" @keyup.enter="onEnterChange(cols)"
                              @blur="onEnterChange(cols)" :maxlength="-1" />
                           <text v-if="cols.setting.suffix" class="uni-icon" :class="[cols.setting.suffix]"
                              @click="classAttr_extButton(cols)">&#xe568;</text>
                        </view>
                        <!-- 下拉框-单选 cols.useDict?cols.dict:cols.selections-->
                        <uni-data-select id="dv_select" v-if="cols.name=='Select' "
                           :class="cols.disabled?'input-disabled':''" v-model="cols.value"
                           :localdata="cols.dict" @change="onChange(cols)" :disabled="cols.disabled"
                           :localdata="cols.dict" @change="onEnterChange(cols)" :disabled="cols.disabled"
                           :clear="false"></uni-data-select>
                        <!-- 多行文本 -->
                        <view class="input-wrapper" v-if="cols.name=='Textarea' ">
                           <textarea class="uni-input" :value="cols.value"
                           <textarea class="uni-input" v-model="cols.value"
                              :class="cols.disabled?'input-disabled':''" :placeholder="cols.placeholder"
                              :focus="focusFieldId == cols.fieldId" @blur="onModelValue(cols)"
                              :focus="focusFieldId == cols.fieldId" @blur="onEnterChange(cols)"
                              @click="onClick(cols)" style="height:60px;" :style="{'width':'96%'}"
                              :disabled="cols.disabled"></textarea>
                        </view>
                        <!-- 复选框 -->
                        <checkbox-group class="check_rememberPwd" v-if="cols.name=='Checkbox'"
                           :class="cols.disabled?'input-disabled':''" :disabled="cols.disabled"
                           @change="onCheckBoxValue" :data-attr="cols.fieldId">
                           @change="onCheckBoxValue" :data-attr="cols.fieldId" :data-index="index"
                           :data-iindex="key">
                           <label v-for="(cols2) in cols.selections" :key="cols2.value">
                              <checkbox :value="cols2.value" :checked="cols.value.includes(cols2.value)" />
                              <text>{{cols2.label}}</text>
@@ -107,7 +120,8 @@
                        <!-- 单选框 -->
                        <radio-group class="check_rememberPwd" v-if="cols.name=='Radio'"
                           :class="cols.disabled?'input-disabled':''" :disabled="cols.disabled"
                           @change="onRadioBoxValue" :data-attr="cols.fieldId">
                           @change="onRadioBoxValue" :data-attr="cols.fieldId" :data-index="index"
                           :data-iindex="key">
                           <label v-for="(cols2) in cols.selections" :key="cols2.value">
                              <radio :value="cols2.value" :checked="cols2.value === cols.value" />
                              <text>{{cols2.label}}</text>
@@ -118,15 +132,27 @@
                           :disabled="cols.disabled" v-model="cols.value" @change="onModelValue(cols)"
                           :style="{'margin-left':'10rpx'}" />
                        <!-- 日期时间 -->
                        <view class="input-wrapper"
                        <!-- <view class="input-wrapper"
                           v-if="(cols.name=='TimePicker' || cols.name=='DatePicker') && !cols.disabled">
                           <picker mode="date" class="date_iput" :class="cols.disabled?'input-disabled':''"
                              :disabled="cols.disabled" :value="cols.value" @change="onModelValue(cols)">
                              <view class="picker">{{cols.value}}</view>
                           </picker>
                        </view>
                        </view> -->
                        <OIDatePicker v-if="cols.name=='DatePicker'" :class="cols.disabled?'input-disabled':''"
                           :disabled="cols.disabled" v-model="cols.value" :placeholder="cols.placeholder"
                           :defaultToday="cols.setting.defaultToday" :format="cols.setting.format"
                           @change="onModelValue(cols)" />
                        <OIDatePickerRange v-if="cols.name=='DatePickerRange'"
                           :rangeSeparator="cols.setting.separator" :format="cols.setting.format"
                           :class="cols.disabled?'input-disabled':''" :disabled="cols.disabled"
                           v-model="cols.value" :placeholder="cols.placeholder" @change="onModelValue(cols)" />
                        <OITimePicker v-if="cols.name=='TimePicker'" :class="cols.disabled?'input-disabled':''"
                           :disabled="cols.disabled" v-model="cols.value" :placeholder="cols.placeholder"
                           @change="onModelValue(cols)" />
                     </uni-forms-item>
                     <uni-forms-item v-else label=""></uni-forms-item>
                  </uni-col>
               </uni-row>
            </view>
@@ -178,6 +204,11 @@
<script>
   import Base64 from '../../components/js-base64/base64.js'
   import utils from "@/js/utils.js"
   import dayjs from "dayjs";
   import OIDatePicker from '@/components/oi-date-time-picker/oi-date-picker.vue'
   import OIDatePickerRange from '@/components/oi-date-time-picker/oi-date-picker-range.vue'
   import OITimePicker from '@/components/oi-date-time-picker/oi-time-picker.vue'
   import {
      appGetInfo,
      dictGetInfo
@@ -191,6 +222,11 @@
   export default {
      modules: {
         Base64,
      },
      components: {
         OIDatePicker,
         OIDatePickerRange,
         OITimePicker
      },
      data() {
         return {
@@ -394,8 +430,7 @@
                              //有默认值,显示默认值
                              let itemName = ele.value || "";
                              if (itemName) {
                                 styledefHead.form
                                    .model[ele.fieldId] = itemName;
                                 styledefHead.form.model[ele.fieldId] = itemName;
                              }
                              ele.dict = selections.map((a) => {
                                 return {
@@ -403,9 +438,7 @@
                                    text: a.label
                                 }
                              })
                           }
                        }
                        if ($this.focusFieldId == "") {
                           if (ele.name == 'Input' || ele.name ==
@@ -441,10 +474,7 @@
                                          text: a.label
                                       }
                                    })
                                 }
                              }
                              if ($this.focusFieldId == "") {
                                 if (col.name == 'Input' || col
@@ -798,73 +828,9 @@
            // console.log("onClick",item);
            this.focusFieldId = item.fieldId
         },
         onevent(item) {
            // console.log("onevent",item);
            if (item.oldvalue != item.value && item.value.trim() != "") {
               item.oldvalue = item.value;
               var attr = item.fieldId;
               this.head_styledef.form.model[attr] = item.value;
               //子数据类扫码区事件脚本
               var eventid = item.bind.onChangeEvent.id; //内容变化后事件
               if (eventid) {
                  var obj_attr = this.head_styledef.form.model;
                  // console.log(obj_attr);
                  var req = Object.keys(obj_attr).map((a) => ({
                     attr: a,
                     value: obj_attr[a] || "",
                  }));
                  var info = {
                     eventid: eventid,
                     edtype: "0",
                     projectid: '',
                     rclsid: '',
                     robjid: '',
                     userlogin: '',
                     clsid: this.$data.param.DataCls.id,
                     objid: "",
                     attr: req,
                     dataJson: [],
                  }
                  this.DataObjRunCustomEvent(info, "");
               }
            }
         },
         onChange(item) {
            console.log("onChange", item);
            if (item.oldvalue != item.value && item.value.trim() != "") {
               item.oldvalue = item.value;
               var attr = item.fieldId;
               this.head_styledef.form.model[attr] = item.value;
               var eventid = item.bind.onChangeEvent.id; //内容变化后事件
               if (eventid) {
                  // self.event_no_sub = 1;
                  var obj_attr = this.head_styledef.form.model;
                  // console.log(obj_attr);
                  var req = Object.keys(obj_attr).map((a) => ({
                     attr: a,
                     value: obj_attr[a] || "",
                  }));
                  var info = {
                     eventid: eventid,
                     edtype: "0",
                     projectid: '',
                     rclsid: '',
                     robjid: '',
                     userlogin: '',
                     clsid: this.$data.param.DataCls.id,
                     objid: "",
                     attr: req,
                     dataJson: []
                  }
                  this.DataObjRunCustomEvent(info);
               }
            }
         },
         onModelValue(item) { //绑定Model值
            var attr = item.fieldId;
            if (item.oldvalue != item.value && item.value.trim() != "") {
         onEnterChange(item) {
            console.log("onEnterChange", item);
            if (item.oldvalue != item.value) {
               item.oldvalue = item.value;
               var attr = item.fieldId;
               this.head_styledef.form.model[attr] = item.value;
@@ -872,21 +838,99 @@
               if (onChangeEvent?.id) { //内容变化后事件
                  this.onChange(onChangeEvent);
               }
            }
         },
         // 内容变化后事件
         async onChange(event) {
            var eventid = event?.id; //内容变化后事件
            if (eventid) {
               // self.event_no_sub = 1;
               var obj_attr = this.head_styledef.form.model;
               // console.log(obj_attr);
               var req = Object.keys(obj_attr).map((a) => ({
                  attr: a,
                  value: obj_attr[a] || "",
               }));
               var info = {
                  eventid: eventid,
                  edtype: "0",
                  projectid: '',
                  rclsid: '',
                  robjid: '',
                  userlogin: '',
                  clsid: this.$data.param.DataCls.id,
                  objid: "",
                  attr: req,
                  dataJson: []
               }
               this.DataObjRunCustomEvent(info);
            }
         },
         onCheckBoxValue(e) { //绑定Model值
            let values = e.detail.value || []
            let attr = e.currentTarget?.dataset?.attr || ""
            this.head_styledef.form.model[attr] = values;
            const item = this.head_styledef.form.items[e.currentTarget?.dataset?.index || 0]
            if (item?.setting?.colList) {
               const col = item.setting.colList[e.currentTarget?.dataset?.iindex || 0]
               if (col) {
                  col.value = values
                  let attr = col.fieldId;
                  this.head_styledef.form.model[attr] = col.value;
                  var onChangeEvent = col.bind.onChangeEvent; //内容变化后事件
                  if (onChangeEvent?.id) { //内容变化后事件
                     this.onChange(onChangeEvent);
                  }
                  return
               }
            } else {
               if (item) {
                  item.value = values
                  let attr = item.fieldId;
                  this.head_styledef.form.model[attr] = item.value;
                  var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
                  if (onChangeEvent?.id) { //内容变化后事件
                     this.onChange(onChangeEvent);
                  }
               }
            }
         },
         onRadioBoxValue(e) { //绑定Model值
            let value = e.detail.value || ""
            let attr = e.currentTarget?.dataset?.attr || ""
            this.head_styledef.form.model[attr] = value;
            let values = e.detail.value || ""
            const item = this.head_styledef.form.items[e.currentTarget?.dataset?.index || 0]
            if (item?.setting?.colList) {
               const col = item.setting.colList[e.currentTarget?.dataset?.iindex || 0]
               if (col) {
                  col.value = values
                  let attr = col.fieldId;
                  this.head_styledef.form.model[attr] = col.value;
                  var onChangeEvent = col.bind.onChangeEvent; //内容变化后事件
                  if (onChangeEvent?.id) { //内容变化后事件
                     this.onChange(onChangeEvent);
                  }
                  return
               }
            } else {
               if (item) {
                  item.value = values
                  let attr = item.fieldId;
                  this.head_styledef.form.model[attr] = item.value;
                  var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
                  if (onChangeEvent?.id) { //内容变化后事件
                     this.onChange(onChangeEvent);
                  }
               }
            }
         },
         onModelValue(item) {
            var attr = item.fieldId;
            this.head_styledef.form.model[attr] = item.value;
         },
         classAttr_extButton(item) {
            console.log("classAttr_extButton", item)
            var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //后图标点击事件
            var onSuffixClickEvent = item.bind.onSuffixClickEvent; //后图标点击回调
@@ -1108,22 +1152,18 @@
                        } else if (action.action_type ==
                           "set_dlg_current_edit_attr"
                        ) {
                           if ($this
                              .focusOldFieldId ==
                              action.value) {
                           if ($this.focusOldFieldId == action.value) {
                              $this.setData({
                                 focusFieldId: ""
                              })
                           } else {
                              $this.setData({
                                 focusFieldId: $this
                                    .focusOldFieldId
                                 focusFieldId: $this.focusOldFieldId
                              })
                           }
                           $this.$nextTick(() => {
                              $this.setData({
                                 focusFieldId: action
                                    .value
                                 focusFieldId: action.value
                              })
                           });
                        } else {
@@ -1345,13 +1385,10 @@
                              var d = dialog({
                                 title: '<i class="ace-icon fa fa-info-circle"></i> ' +
                                    $this.translateSys("tip"),
                                 content: $this.translateSys(
                                       "quotation_mark_left") +
                                    action
                                    .action_type + $this.translateSys(
                                       "quotation_mark_right") + $this
                                    .translate(
                                       "tip_action_unprocessed")
                                 content: $this.translateSys("quotation_mark_left") +
                                    action.action_type + $this.translateSys(
                                       "quotation_mark_right") +
                                    $this.translate("tip_action_unprocessed")
                              });
                              d.show();
                           } else if (action.action_type == 'open_select_userdlg') {
@@ -2274,7 +2311,7 @@
         }
         .uni-icon {
            padding: 8rpx;
            padding: 10rpx 5rpx;
            font-size: 32rpx;
            color: rgb(192, 196, 204);
         }
@@ -2295,7 +2332,7 @@
      .uni-icon {
         /* border: 1px solid red; */
         width: 8%;
         width: 30rpx;
         font-family: uniicons;
         font-size: 40rpx;
         font-weight: 400;