cuiqian2004
2024-08-27 d84283821bb08d81d887f20a7118caf25b8b2714
pages/modal/3200.vue
@@ -22,12 +22,13 @@
            </view>
         </view>
         <scroll-view :scroll-top="scrollTop" :scroll-y="true" class="scroll-Y" @scrolltolower="scrolltolower"
         <view class="v-scroll-view">
            <scroll-view :scroll-top="scrollTop" :scroll-y="true" class="scroll-y" @scrolltolower="scrolltolower"
            @scroll="scroll">
            <view class="view-content" id="tabpanel">
               <view class="dv-panel dv-panel-bkcolor" v-for="(style,ii) in detail1StyleDefList"
                  <view class="dv-panel dv-panel-bkcolor" v-for="(style,ii) in detail1StyleDefList" :key="ii"
                  @click="onPanelClick(ii)" :id="'panel'+style.form.htmlobjId"
                  :class="activelist[ii].active==true?'bk-active':''">
                     :class="activeItem == style?'bk-active':''">
                  <div class="dv-panel-button" v-if="param.ListPage.CheckBox==true">
                     <checkbox-group>
                        <label>
@@ -53,16 +54,16 @@
                           <!-- 文本框/数字框 -->
                           <view class="dv_input"
                              v-if="(item.name=='Input' || item.name=='InputNumber') && !item.disabled">
                              <text v-if="item.setting.prefix" class="uni-icon" :class="[item.setting.prefix]"
                                 @change="onChange(item)">&#xe568;</text>
                                 <text v-if="item.setting.prefix" class="uni-icon"
                                    :class="[item.setting.prefix]" @change="onChange(item)">&#xe568;</text>
                              <input class="uni-input" :class="item.disabled?'input-disabled':''"
                                 :type="item.name=='Input'?'text':item.name=='InputNumber'?'number':'text'"
                                 v-model="item.value" :disabled="item.disabled"
                                 :placeholder="item.placeholder"
                                 :style="{'width':item.setting.prefix && item.setting.suffix?'78%':item.setting.prefix || item.setting.suffix?'87%':'96%'}"
                                 :focus="focusMateria" @focus="ontap(item)" @blur="onevent(item)" />
                              <text v-if="item.setting.suffix" class="uni-icon" :class="[item.setting.suffix]"
                                 @click="onChange(item)">&#xe568;</text>
                                 <text v-if="item.setting.suffix" class="uni-icon"
                                    :class="[item.setting.suffix]" @click="onChange(item)">&#xe568;</text>
                           </view>
                           <!-- 下拉框-单选 item.useDict?item.dict:item.selections-->
                           <uni-data-select id="dv_select" v-if="item.name=='Select' && !item.disabled"
@@ -72,8 +73,9 @@
                           <!-- 多行文本 -->
                           <view class="input-wrapper" v-if="item.name=='Textarea' && !item.disabled">
                              <textarea class="uni-input" :value="item.value"
                                 :class="item.disabled?'input-disabled':''" :placeholder="item.placeholder"
                                 @blur="onModelValue(item)" style="height:60px;" :style="{'width':'96%'}"
                                    :class="item.disabled?'input-disabled':''"
                                    :placeholder="item.placeholder" @blur="onModelValue(item)"
                                    style="height:60px;" :style="{'width':'96%'}"
                                 :disabled="item.disabled"></textarea>
                           </view>
                           <!-- 复选框 -->
@@ -93,8 +95,9 @@
                           <!-- 日期时间 -->
                           <view class="input-wrapper"
                              v-if="(item.name=='TimePicker' || item.name=='DatePicker') && !item.disabled">
                              <picker mode="date" class="date_iput" :class="item.disabled?'input-disabled':''"
                                 :disabled="item.disabled" :value="item.value" @change="onModelValue(item)">
                                 <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>
@@ -117,18 +120,21 @@
                                       v-model="cols.value" :disabled="cols.disabled"
                                       :placeholder="cols.placeholder"
                                       :style="{'width':cols.setting.prefix && cols.setting.suffix?'78%':cols.setting.prefix || cols.setting.suffix?'87%':'96%'}"
                                       :focus="focusMateria" @focus="ontap(cols)" @blur="onevent(cols)" />
                                          :focus="focusMateria" @focus="ontap(cols)"
                                          @blur="onevent(cols)" />
                                    <text v-if="cols.setting.suffix" class="uni-icon"
                                       :class="[cols.setting.suffix]"
                                       @click="onChange(cols)">&#xe568;</text>
                                 </view>
                                 <!-- 下拉框-单选 cols.useDict?cols.dict:cols.selections-->
                                 <uni-data-select id="dv_select" v-if="cols.name=='Select' && !cols.disabled"
                                    <uni-data-select id="dv_select"
                                       v-if="cols.name=='Select' && !cols.disabled"
                                    :class="cols.disabled?'input-disabled':''" v-model="cols.value"
                                    :localdata="cols.dict" @change="onChange(cols)"
                                    :disabled="cols.disabled" :clear="false"></uni-data-select>
                                 <!-- 多行文本 -->
                                 <view class="input-wrapper" v-if="cols.name=='Textarea' && !cols.disabled">
                                    <view class="input-wrapper"
                                       v-if="cols.name=='Textarea' && !cols.disabled">
                                    <textarea class="uni-input" :value="cols.value"
                                       :class="cols.disabled?'input-disabled':''"
                                       :placeholder="cols.placeholder" @blur="onModelValue(cols)"
@@ -154,8 +160,9 @@
                                 <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="item.disabled"
                                       :value="cols.value" @change="onModelValue(cols)">
                                          :class="cols.disabled?'input-disabled':''"
                                          :disabled="item.disabled" :value="cols.value"
                                          @change="onModelValue(cols)">
                                       <view class="picker">{{cols.value}}</view>
                                    </picker>
                                 </view>
@@ -180,6 +187,7 @@
               </view>
            </view>
         </scroll-view>
         </view>
      </view>
      <view class="view-floor">
@@ -238,11 +246,10 @@
            },
            detail1_styledef: {},
            detail1StyleDefList: [],
            detail2_styledef: {},
            detail2StyleDefList: [],
            items: [],
            active_id: '',
            activelist: [],
            //activelist: [],
            activeItem: {},
            where: '',
            wheres: '',
            orderby: '',
@@ -283,8 +290,6 @@
         };
         this.detail1_styledef = {};
         this.detail1StyleDefList = [];
         this.detail2_styledef = {};
         this.detail2StyleDefList = [];
         this.ListHtml_Panel = "";
         this.ListPageHtml_Show = {
            name: "",
@@ -295,7 +300,8 @@
         };
         this.items = [];
         this.active_id = '';
         this.activelist = [];
         this.activeItem = {};
         //this.activelist = [];
         if (this.param.ListPage.ListItem_UIDef?.ui_type == "HTML页面") {
            // HTML页面
@@ -445,12 +451,15 @@
                  $this.$data.head_styledef = ret.result.style_def ? JSON.parse(styledef) : {};
                  // this.form = this.head_styledef.form.model;
                  // console.log($this.$data.head_styledef);
                  if ($this.head_styledef.form?.items) {
                  $this.head_styledef.form.items.forEach(async (ele, index) => {
                     console.log(ele.useDict);
                     if (ele.useDict == true) { //判断useDict是否使用字典
                        await this.DictGetInfo(ele.bind.dict, index, 'mast');
                     }
                  });
                  }
               } else {
                  uni.showModal({
@@ -611,7 +620,32 @@
                  dataType: "json",
                  success: (_res) => {
                     // console.log(_res);
                     const ret = _res.data
                     var ret = _res.data
                     if (typeof ret == 'string') {
                        try {
                           try {
                              try {
                                 ret = JSON.parse(ret.replace(/\\"/g, '"'));
                              } catch (ex) {
                                 ret = JSON.parse(ret.replace(/\\/g, '\\\\'))
                              }
                           } catch (ex) {
                              ret = JSON.parse(ret.replace(/\\"/g, "'").replace(/[\r\n]/g,
                                 '<br>').replace(/[\t]/g, '    '));
                           }
                        } catch (ex) {
                           console.log(ret)
                           return reject('将getDictInfo【json string】转换为【json object】失败')
                        }
                     }
                     if (ret.err_code == 0) {
                        resolve(ret);
                     } else {
                        reject({
                           "errMsg": ret.err_msg
                        });
                     }
                     if (ret.err_code == 0) {
                        resolve(ret);
                     } else {
@@ -641,12 +675,29 @@
                  dataType: "json",
                  success: (_res) => {
                     // console.log(_res);
                     const ret = _res.data
                     var ret = _res.data
                     if (typeof ret == 'string') {
                        try {
                           try {
                              try {
                                 ret = JSON.parse(ret.replace(/\\"/g, '"'));
                              } catch (ex) {
                                 ret = JSON.parse(ret.replace(/\\/g, '\\\\'))
                              }
                           } catch (ex) {
                              ret = JSON.parse(ret.replace(/\\"/g, "'").replace(/[\r\n]/g,
                                 '<br>').replace(/[\t]/g, '    '));
                           }
                        } catch (ex) {
                           console.log(ret)
                           return reject('将getUIStyleInfo【json string】转换为【json object】失败')
                        }
                     }
                     if (ret.err_code == 0) {
                        resolve(ret);
                     } else {
                        reject({
                           "errMsg": ret.err_msg
                           "errMsg": ret.err_msg || ret.errMsg
                        });
                     }
                  },
@@ -722,7 +773,6 @@
                              });
                           } else {
                              // this.detail2StyleDefList=[];
                              if (result.info) {
                                 uni.showModal({
                                    title: this.translateSys("tip"),
@@ -801,6 +851,7 @@
                        if (ret.result.page_count > 1) $this.query_id = ret.result.query_id;
                        // console.log($this.ListPageHtml_Show.event);
                        if ($this.ListPageHtml_Show.event.id) {
                           const detail1StyleDefList = $this.detail1StyleDefList
                           ret.result.obj_list.forEach((obj) => {
                              var info = {
                                 id: obj.id,
@@ -817,12 +868,17 @@
                                 .replace('{', '').replace('}', '') : 'null';
                              detailStyle.form.objId = obj.id;
                              detailStyle.form.attrs = obj.attr_list;
                              $this.detail1StyleDefList.push(detailStyle);
                              $this.activelist.push({
                                 active: false
                              });
                              detail1StyleDefList.push(detailStyle);
                              // $this.activelist.push({
                              //    active: false
                              // });
                           });
                           // console.log(this.detail1StyleDefList);
                           $this.setData({
                              detail1StyleDefList: detail1StyleDefList
                           })
                           var jsonlist = [];
                           $this.detail1StyleDefList.forEach(attr => {
                              jsonlist.push({
@@ -848,6 +904,7 @@
                           });
                        } else {
                           // $this.detail1StyleDefList=[];
                           const detail1StyleDefList = []
                           ret.result.obj_list.forEach((obj) => {
                              var styleStr = JSON.stringify($this.detail1_styledef);
                              var detailStyle = JSON.parse(styleStr);
@@ -878,12 +935,15 @@
                                 .replace('{', '').replace('}', '') : 'null';
                              detailStyle.form.objId = obj.id;
                              detailStyle.form.attrs = obj.attr_list;
                              $this.detail1StyleDefList.push(detailStyle);
                              $this.activelist.push({
                                 active: false
                              });
                              detail1StyleDefList.push(detailStyle);
                              // $this.activelist.push({
                              //    active: false
                              // });
                              //list.push(info);
                           });
                           $this.setData({
                              detail1StyleDefList: detail1StyleDefList
                           })
                        }
                        // 解决view层不同步的问题
@@ -1176,8 +1236,7 @@
               if (!this.ListPageHtml_Show.event.id) {
                  //判断没有HTML页面事件
                  // console.log(this.detail2_styledef);
                  this.detail2_styledef.form.items.forEach(async (ele, index) => {
                  this.head_styledef.form.items.forEach(async (ele, index) => {
                     if (ele.name != "Layout") {
                        if (!obj_attr[ele.fieldId]) {
                           obj_attr[ele.fieldId] = ele.value;
@@ -1568,7 +1627,6 @@
                                 }
                              });
                           } else {
                              // this.detail2StyleDefList=[];
                              if (result.info) {
                                 uni.showModal({
                                    title: this.translateSys("tip"),
@@ -1615,10 +1673,13 @@
         //点中表单
         onPanelClick(value) { //点击面板高亮显示
            // console.log(value);
            this.activelist.forEach(ele => {
               ele.active = false;
            });
            this.activelist[value].active = true;
            this.setData({
               activeItem: this.detail1StyleDefList[value]
            })
            // this.activelist.forEach(ele => {
            //    ele.active = false;
            // });
            // this.activelist[value].active = true;
         },
         //事件处理
@@ -1721,7 +1782,6 @@
                              }
                           });
                        } else {
                           // this.detail2StyleDefList=[];
                           if (result.info) {
                              uni.showModal({
                                 title: this.translateSys("tip"),
@@ -1981,8 +2041,13 @@
      },
   };
</script>
<style lang="scss">
<style lang="less">
   .uni-page-modal-3200 {
      display: flex;
      flex-direction: column;
      height: calc(100vh - 30rpx);
      padding: 15rpx 0;
      .v-headStyle:first-child {
         margin-top: 15rpx;
      }
@@ -2050,13 +2115,21 @@
      }
      .v-content {
         height: 945rpx;
         overflow: hide;
         flex: 1;
         display: flex;
         width: 100%;
         flex-direction: column;
         min-height: 100px;
         overflow: hidden;
         /* border:0.1px solid red; */
      }
      .view-content {
         width: 100%;
         display: flex;
         margin-top: 10rpx;
         flex-direction: column;
      }
      .dv-panel-bkcolor {
@@ -2169,7 +2242,8 @@
      }
      .view-floor {
         padding: 0 20rpx;
         width: calc(100% - 20rpx);
         padding: 10rpx;
         /* border:1px solid red; */
      }
@@ -2279,7 +2353,14 @@
         border-radius: 10rpx;
      }
      .scroll-Y {
      .v-scroll-view {
         flex: 1;
         overflow: hidden;
         width: 98%;
      }
      .scroll-y {
         width: 100%;
         height: 100%;
      }