cuiqian2004
2025-08-01 090819b136cc0903bf2ac25845c9b275ddbcba89
pages/modal/3200.vue
@@ -1,5 +1,5 @@
<template>
   <view class="uni-page-modal-3200">
   <view class="uni-page-modal-3200" :class="largeMode?'large-mode':''">
      <view class="v-content">
         <!-- 表头样式 -->
         <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" @on-focus="ontap"
@@ -25,42 +25,8 @@
                     </div>
                     <div class="dv-panel-input" v-if="!ListHtml_Panel"
                        :style="param.ListPage.CheckBox==true && param.ListPage.Click_View==true?'width:85%;':param.ListPage.CheckBox==false && param.ListPage.Click_View==true?'width:91%;':param.ListPage.CheckBox==true && param.ListPage.Click_View==false?'width:88%;':'width:100%;'">
                        <uni-forms class="v-area dv-panel" label-align="right">
                           <view v-for="(item,index) in style.form.items" :key="index">
                              <!-- 栅格布局 -->
                              <uni-row v-if="item.name == 'Layout'" :gutter="item.setting.gutter">
                                 <uni-col
                                    :span="item.setting.spanList && item.setting.spanList[key]? item.setting.spanList[key] : 24 / item.setting.col"
                                    v-for="(col,key) in item.setting.colList" :key="key">
                                    <uni-forms-item v-if="col != null"
                                       :label="col.labelWidth === 0 ? '' : col.label? col.label+':':''"
                                       :label-width="col.labelWidth || col.labelWidth === 0 ? col.labelWidth : 100+'px'">
                                       <view v-if="col.disabled">{{col.value}}</view>
                                       <input class="uni-input"
                                          v-else-if="col.name=='Input' || col.name=='InputNumber'"
                                          :type="col.name=='InputNumber'?'number':'text'"
                                          v-model="col.value" :placeholder="col.placeholder"
                                          :maxlength="-1" />
                                       <view v-else>{{col.value}}</view>
                        <OIForm class="v-area dv-panel" :form="style.form.items" viewMode></OIForm>
                                    </uni-forms-item>
                                    <uni-forms-item v-else label=""></uni-forms-item>
                                 </uni-col>
                              </uni-row>
                              <uni-forms-item v-else
                                 :label="item.labelWidth === 0 ? '' : item.label? item.label+':':''"
                                 :label-width="item.labelWidth || item.labelWidth === 0 ? item.labelWidth : 100+'px'"
                                 :style="{ textAlign: item.setting.align }">
                                 <view v-if="item.disabled">{{item.value}}</view>
                                 <input v-else-if="item.name=='Input' || item.name=='InputNumber' "
                                    class="uni-input" :type="item.name=='InputNumber'?'number':'text'"
                                    v-model="item.value" :disabled="item.disabled"
                                    :placeholder="item.placeholder" :maxlength="-1" />
                                 <view v-else>{{item.value}}</view>
                              </uni-forms-item>
                           </view>
                        </uni-forms>
                     </div>
                     <div class="dv-panel-button" v-if="param.ListPage.Click_View==true">
                        <a @click="onViewPageClick(style)"><i class="mobox-normal-right-arrow" /></a>
@@ -100,7 +66,7 @@
<script>
   import {
      Base64
   } from  '@/js/Base64.js';
   } from '@/js/Base64.js';
   import classUtils from "@/js/utils.js"
   import {
      appGetInfo,
@@ -142,6 +108,7 @@
      },
      data() {
         return {
            largeMode: getApp().globalData.largeMode || false,
            title: this.translateSys('add2'),
            isFilter: true,
            param: {},
@@ -375,7 +342,8 @@
                              $this.head_styledef.form
                                 .model[ele.fieldId] = itemName;
                           }
                           $this.head_styledef.form.items[index].dict = selections.map((a) => {
                           $this.head_styledef.form.items[index].selections = selections.map((
                              a) => {
                              return {
                                 value: a.value,
                                 text: a.label
@@ -386,6 +354,25 @@
                     }
                  });
                  const app = getApp()
                  if (app.globalData.bindClasses) {
                     $this.head_styledef.form.items.push({
                        name: "Input",
                        label: this.translate("classes"),
                        labelWidth: 100,
                        disabled: true,
                        value: app.globalData.classes,
                        setting: {
                           width: 100,
                           height: 50,
                        },
                        bind: {
                           attr: "",
                        },
                        fieldId: "S_CLASSES",
                     })
                     $this.head_styledef.form.model["S_CLASSES"] = app.globalData.classes
                  }
               }
            } catch (ex) {
@@ -546,35 +533,53 @@
                  } else {
                     var tip = result.info ? typeof result.info == 'string' ? result.info :
                        result.info.join('<br/>') : '';
                     tip = tip || result.err_info
                     if (tip) uni.showModal({
                        title: this.translateSys("tip"),
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys('close')
                     });
                     if ([0, 2, 3, 4, -1].includes(result.result_type)) {
                        if (result.result_type == 2) {
                     if (result.result_type == 0 && result.action) {
                        result.action.forEach(item => {
                           if (item.action_type == "set_query_condition") {
                              var value = item.value;
                              $this.wheres = value.condition;
                              $this.orderby = value.order ? value.order : $this
                                 .orderby;
                              $this.pageindex = 1;
                              $this.query_id = "";
                              $this.detail1StyleDefList = [];
                              $this.loadDataGetList();
                        } else if (typeof result.result == 'string') {
                           if (result.result) {
                              uni.showModal({
                                 title: this.translateSys('tip'),
                                 content: result.result,
                                 showCancel: false,
                                 confirmText: this.translateSys('close')
                              });
                           }
                        }
                        try {
                           var actionList = result.action || []
                           actionList.forEach(item => {
                              if (item.action_type == "set_query_condition") {
                                 var value = item.value;
                                 $this.wheres = value.condition;
                                 $this.orderby = value.order ? value.order : $this
                                    .orderby;
                                 $this.pageindex = 1;
                                 $this.query_id = "";
                                 $this.detail1StyleDefList = [];
                                 $this.loadDataGetList();
                              }
                        });
                     } else {
                        if (result.info) {
                           });
                        } catch (ex) {
                           let actionList = (result.action || []).map(a => a.action_type).join(';')
                           let tip = typeof ex == 'string' ? ex : ex.message
                           tip = `执行脚本返回的${actionList}时出现异常,请检查脚本返回的数据格式是否正确。${tip}`
                           uni.showModal({
                              title: this.translateSys("tip"),
                              content: result.info,
                              title: this.translateSys('tip'),
                              content: tip,
                              showCancel: false,
                              confirmText: this.translateSys('close')
                           });
                           console.log(ex)
                           return
                        }
                     }
                  }
@@ -1089,6 +1094,7 @@
                     result
                     .info :
                     result.info.join('<br/>') : '';
                  tip = tip || result.err_info
                  if (tip) uni.showModal({
                     title: this.translateSys("tip"),
                     content: tip,
@@ -1232,8 +1238,8 @@
            // var $ele = e;
            //console.log(e.target)
            getApp().onScan((result) => {
               console.log(result.decodedata);
               item.value = result.decodedata;
               console.log(result);
               item.value = result;
               uni.hideKeyboard();
               var $this = this;
               console.log(item);
@@ -1386,6 +1392,7 @@
                           .info == 'string' ? result
                           .info :
                           result.info.join('<br/>') : '';
                        tip = tip || result.err_info
                        if (tip) uni.showModal({
                           title: this.translateSys(
                              "tip"),
@@ -1394,51 +1401,69 @@
                           confirmText: this.translateSys(
                              'close')
                        });
                        if ([0, 2, 3, 4, -1].includes(result.result_type)) {
                           if (result.result_type == 2) {
                        if (result.result_type == 0 && result
                           .action) {
                           result.action.forEach(item => {
                              if (item.action_type ==
                                 "set_dlg_attr") {
                                 // value = {"attr":"xxx", "value":"xxx"}
                                 var data = item.value;
                                 $this.$data
                                    .head_styledef.form
                                    .items
                                    .forEach(
                                       async (
                                          ele,
                                          index
                                       ) => {
                                          data.forEach(
                                             async (ele2,
                                                index
                                             ) => {
                                                if (ele
                                                   .fieldId ==
                                                   ele2
                                                   .attr
                                                ) {
                                                   ele.value =
                                                      ele2
                                                      .value;
                                                }
                                             });
                                       });
                           } else if (typeof result.result == 'string') {
                              if (result.result) {
                                 uni.showModal({
                                    title: this.translateSys('tip'),
                                    content: result.result,
                                    showCancel: false,
                                    confirmText: this.translateSys('close')
                                 });
                              }
                           });
                        } else {
                           if (result.info) {
                           }
                           try {
                              var actionlist = result.action || []
                              for (var j = 0; j < actionlist.length; j++) {
                                 var action = actionlist[j];
                                 var action_type = action.action_type;
                                 var value = action.value;
                                 if (action_type == "set_dlg_attr") {
                                    if (value) {
                                       this.setFormValues(value)
                                    }
                                 } else if (action_type == "set_subtable_page_content") {
                                    if (value.clear_confirm != false && value.clear == true &&
                                       $this.detail1StyleDefList.length > 0
                                    ) { //判断是否清空页签内容,正在码盘是否有数据
                                       uni.showModal({
                                          title: this.translateSys('tip'),
                                          content: this.translate(
                                             "are_you_sure_clear_data"),
                                          cancelText: $this.translateSys('ok'),
                                          confirmText: $this.translateSys('cancel'),
                                          success: function(res) {
                                             if (res.cancel) {
                                                $this.detail1StyleDefList = [];
                                                $this.viewAceionContent(value);
                                             } else if (res.confirm) {
                                                $this.detail1StyleDefList = [];
                                                $this.viewAceionContent(value);
                                             }
                                          }
                                       });
                                    } else {
                                       $this.detail1StyleDefList = [];
                                       $this.viewAceionContent(value);
                                    }
                                 }
                              }
                           } catch (ex) {
                              let actionList = (result.action || []).map(a => a.action_type).join(
                                 ';')
                              let tip = typeof ex == 'string' ? ex : ex.message
                              tip = `执行脚本返回的${actionList}时出现异常,请检查脚本返回的数据格式是否正确。${tip}`
                              uni.showModal({
                                 title: this
                                    .translateSys(
                                       "tip"),
                                 content: result.info,
                                 title: this.translateSys('tip'),
                                 content: tip,
                                 showCancel: false,
                                 confirmText: this
                                    .translateSys(
                                       'close')
                                 confirmText: this.translateSys('close')
                              });
                              console.log(ex)
                              return
                           }
                        }
                     }
@@ -1472,6 +1497,159 @@
            }
         },
         setFormValues(attrs) {
            const head_styledef = this.head_styledef
            if (JSON.stringify(attrs) == '{}') {
               return;
            }
            attrs.forEach(async (attr, key) => {
               if (attr.choice_list) {
                  var dictItemList = [];
                  attr.choice_list.forEach(async (val, index) => {
                     dictItemList.push({
                        text: val,
                        value: val
                     });
                  });
                  head_styledef.form.items.forEach(async (attr_item, index) => {
                     if (attr_item.name != "Layout") {
                        if (attr_item.fieldId == attr.attr) {
                           if (attr_item.useDict) {
                              attr_item.dict = dictItemList;
                           } else {
                              attr_item.selections = dictItemList;
                           }
                        }
                     } else if (attr_item.name == "Layout") {
                        attr_item.setting.colList.forEach((col) => {
                           if (col) {
                              if (col.fieldId == attr.attr) {
                                 if (col.useDict) {
                                    col.dict = dictItemList;
                                 } else {
                                    col.selections = dictItemList;
                                 }
                              }
                           }
                        });
                     }
                  });
               }
               if (!head_styledef.form.model[attr.attr]) {
                  head_styledef.form.model[attr.attr] = attr.value;
               }
               head_styledef.form.items.forEach(async (ele) => {
                  if (ele.name != "Layout") {
                     if (ele.fieldId == attr.attr) {
                        ele.value = attr.value;
                        ele.oldvalue = attr.value;
                        if (ele.name == "Input") {
                           if (attr.prompt) ele.placeholder = attr.prompt;
                        }
                        if (attr.enable !== undefined) {
                           if (attr.enable) ele.disabled = false;
                           else ele.disabled = true;
                        }
                     }
                  } else if (ele.name == "Layout") {
                     ele.setting.colList.forEach((col) => {
                        if (col) {
                           if (col.fieldId == attr.attr) {
                              col.value = attr.value;
                              col.oldvalue = attr.value;
                              if (col.name == "Input") {
                                 if (attr.prompt) col.placeholder = attr.prompt;
                              }
                              if (attr.enable !== undefined) {
                                 if (attr.enable) col.disabled = false;
                                 else col.disabled = true;
                              }
                           }
                        }
                     });
                  }
               })
               //判断表单里是否有返回字段,没有就装载到model里,点击确定提交的时候带上这些数据
            })
            console.log(head_styledef)
            this.setData({
               head_styledef: head_styledef
            })
         },
         //加载已码盘内容
         viewAceionContent(data) {
            var $this = this;
            if (JSON.stringify(data.content) == '{}') {
               return;
            }
            var styleStr = JSON.stringify($this.detail1_styledef);
            data.content.forEach(cont => {
               let detailStyle = JSON.parse(styleStr);
               if (detailStyle.form) {
                  detailStyle.SelBut_Checked = data.checkbox ?? true;
                  detailStyle.form.objId = cont.id;
                  detailStyle.form.htmlobjId = cont.id ? cont.id.replace(/-/g,
                        '')
                     .replace('{', '').replace('}',
                        '') : 'null';
                  detailStyle.form.attrs = cont.attrs;
                  cont.attrs.forEach(attr => {
                     detailStyle.form.items.forEach(ele => {
                        if (ele.name != 'Layout') {
                           if (ele.fieldId == attr.attr)
                              ele.value = attr.value;
                        } else if (ele.name == 'Layout') {
                           ele.setting.colList.forEach(
                              col => {
                                 if (col) {
                                    if (col.fieldId ==
                                       attr.attr)
                                       col.value = attr.value;
                                 }
                              });
                        }
                     });
                  });
                  //如果 clear = false 则不需要清除,根据id判断是否存在,不存在插入到页面,如果存在用新的属性覆盖
                  if (data.clear == false) {
                     var isflag = true;
                     $this.detail1StyleDefList.forEach((style, index) => {
                        if (style.form.objId == detailStyle.form.objId) {
                           cont.attrs.forEach(attr => {
                              style.form.items.forEach(ele => {
                                 if (ele.name != 'Layout') {
                                    if (ele.fieldId == attr.attr)
                                       ele.value = attr.value;
                                 } else if (ele.name == 'Layout') {
                                    ele.setting.colList.forEach(
                                       col => {
                                          if (col) {
                                             if (col.fieldId ==
                                                attr
                                                .attr)
                                                col.value =
                                                attr.value;
                                          }
                                       });
                                 }
                              });
                           });
                           isflag = false;
                        }
                     });
                     if (isflag) $this.detail1StyleDefList.push(detailStyle); //待分拣
                  } else {
                     $this.detail1StyleDefList.push(detailStyle); //待分拣
                  }
               }
            });
         },
         onDetail1EnterChange() {},
         //点中表单
         onPanelClick(value) { //点击面板高亮显示
@@ -1530,6 +1708,7 @@
                        .info == 'string' ? result
                        .info : result
                        .info.join('<br/>') : '';
                     tip = tip || result.err_info
                     if (tip) uni.showModal({
                        title: this.translateSys(
                           "tip"),
@@ -1538,99 +1717,113 @@
                        confirmText: this.translateSys(
                           'close')
                     });
                     if ([0, 2, 3, 4, -1].includes(result.result_type)) {
                        if (result.result_type == 2) {
                     if (result.result_type == 0 && result
                        .action) {
                        result.action.forEach(item => {
                           if (item.action_type ==
                              "goback_to_pre_page"
                           ) { //返回上一页
                              var value = item.value;
                              uni.navigateBack({
                                 delta: 1, //返回层数,2则上上页
                              });
                           } else if (item
                              .action_type ==
                              "hidden_button"
                           ) { //隐藏按钮
                              var value = item.value;
                              value.forEach(btn => {
                                 var index =
                                    $this
                                    .param
                                    .ListPage
                                    .Page_Button
                                    .findIndex(
                                       button =>
                                       button
                                       .ShowName ==
                                       btn
                                    )
                                 if (index >
                                    -1)
                                    $this
                                    .param
                                    .ListPage
                                    .Page_Button
                                    .splice(
                                       index,
                                       1)
                              })
                              // } else if(item.action_type == "refresh_cur_row"){ //
                              //    var value = item.value;
                           } else if (item
                              .action_type ==
                              "set_panel_html"
                           ) { //显示Html页面
                              // var value = item.value;
                              $this.ListHtml_Panel =
                                 item.value;
                              // $this.detail1StyleDefList.forEach((ele,index)=>{
                              //    ele.ListHtml_Panel = item.value[index];
                              // });
                           } else {
                        } else if (typeof result.result == 'string') {
                           if (result.result) {
                              uni.showModal({
                                 title: this
                                    .translateSys(
                                       "tip"
                                    ),
                                 content: this
                                    .translateSys(
                                       "quotation_mark_left"
                                    ) +
                                    item
                                    .action_type +
                                    this
                                    .translateSys(
                                       "quotation_mark_right"
                                    ) +
                                    this
                                    .translate(
                                       "tip_action_unprocessed"
                                    ),
                                 title: this.translateSys('tip'),
                                 content: result.result,
                                 showCancel: false,
                                 confirmText: this
                                    .translateSys(
                                       'close'
                                    )
                                 confirmText: this.translateSys('close')
                              });
                           }
                        });
                     } else {
                        if (result.info) {
                           uni.showModal({
                              title: this
                                 .translateSys(
                                    "tip"),
                              content: result.info,
                              showCancel: false,
                              confirmText: this
                                 .translateSys(
                                    'close')
                        }
                        try {
                           var actionList = result.action || []
                           actionList.forEach(item => {
                              if (item.action_type ==
                                 "goback_to_pre_page"
                              ) { //返回上一页
                                 var value = item.value;
                                 uni.navigateBack({
                                    delta: 1, //返回层数,2则上上页
                                 });
                              } else if (item
                                 .action_type ==
                                 "hidden_button"
                              ) { //隐藏按钮
                                 var value = item.value;
                                 value.forEach(btn => {
                                    var index =
                                       $this
                                       .param
                                       .ListPage
                                       .Page_Button
                                       .findIndex(
                                          button =>
                                          button
                                          .ShowName ==
                                          btn
                                       )
                                    if (index >
                                       -1)
                                       $this
                                       .param
                                       .ListPage
                                       .Page_Button
                                       .splice(
                                          index,
                                          1)
                                 })
                                 // } else if(item.action_type == "refresh_cur_row"){ //
                                 //    var value = item.value;
                              } else if (item
                                 .action_type ==
                                 "set_panel_html"
                              ) { //显示Html页面
                                 // var value = item.value;
                                 $this.ListHtml_Panel =
                                    item.value;
                                 // $this.detail1StyleDefList.forEach((ele,index)=>{
                                 //    ele.ListHtml_Panel = item.value[index];
                                 // });
                              } else {
                                 uni.showModal({
                                    title: this
                                       .translateSys(
                                          "tip"
                                       ),
                                    content: this
                                       .translateSys(
                                          "quotation_mark_left"
                                       ) +
                                       item
                                       .action_type +
                                       this
                                       .translateSys(
                                          "quotation_mark_right"
                                       ) +
                                       this
                                       .translate(
                                          "tip_action_unprocessed"
                                       ),
                                    showCancel: false,
                                    confirmText: this
                                       .translateSys(
                                          'close'
                                       )
                                 });
                              }
                           });
                        } catch (ex) {
                           let actionList = (result.action || []).map(a => a.action_type).join(';')
                           let tip = typeof ex == 'string' ? ex : ex.message
                           tip = `执行脚本返回的${actionList}时出现异常,请检查脚本返回的数据格式是否正确。${tip}`
                           uni.showModal({
                              title: this.translateSys('tip'),
                              content: tip,
                              showCancel: false,
                              confirmText: this.translateSys('close')
                           });
                           console.log(ex)
                           return
                        }
                     }
                  }
@@ -1958,37 +2151,9 @@
      .dv-panel {
         background-color: #efefef;
         padding: 20rpx 20rpx 20rpx 0px;
         .uni-forms-item {
            padding-bottom: 5rpx;
            margin-bottom: 0;
            .uni-forms-item__label {
               height: 20px !important;
               padding: 0 10rpx 0 0 !important;
            }
            .uni-input {
               width: calc(100% - 12rpx);
               padding: 5rpx;
               border: 1px solid #d5d5d5;
               color: #2d8cf0;
               height: 20px;
               background: #FFF;
               line-height: 20px;
               border-radius: 6px !important;
               font-size: 14px;
               font-family: inherit;
               box-shadow: none !important;
               transition-duration: 0.1s;
               vertical-align: middle;
            }
            .uni-input:hover {
               border: 1px solid rgb(41, 121, 255);
            }
         }
         border-radius: 12rpx;
         margin-bottom: 20rpx;
         text-align: right;
      }
      .dv-listHtml-Panel,
@@ -1997,6 +2162,16 @@
         width: 91%;
         display: inline-block;
         text-align: left;
         .uni-forms-item {
            padding-bottom: 5rpx;
            margin-bottom: 0;
            .uni-forms-item__label {
               height: 20px !important;
               padding: 0 10rpx 0 0 !important;
            }
         }
      }
      .dv-panel-buticon {