Przeglądaj źródła

fix: 5418 全环境修复:文件发放异常,无法确认,且消息催办有bug
5416 优化设备档案卡卡顿问题
5415 全环境调整:受控文件查阅中提示框不要遮挡左边的历史信息

johnsen 4 miesięcy temu
rodzic
commit
9c97e84ef6

+ 1 - 0
src/components/ibps-selector/dialog.vue

@@ -9,6 +9,7 @@
     :width="width"
     :top="marginTop"
     lock-scroll
+    lazy-render
     append-to-body
     custom-class="ibps-selector-dialog"
     class="ibps-selector-dialog__wrapper"

+ 43 - 16
src/views/component/device/deviceDialog.vue

@@ -118,12 +118,15 @@
                   <el-col v-if="!hideSysDeviceNo" :span="8">
                     <el-form-item label="设备编号:" prop="sheBeiShiBieH">
                       <template slot="label">
-                        <span>{{changeDeviceLabel ? '系统编号' : '设备编号'}}</span>
-                        <el-tooltip
-                          effect="dark"
-                          placement="top"
-                        > 
-                          <div slot="content">{{changeDeviceLabel ? '系统编号' : '设备编号'}}由系统自动生成。</div>
+                        <span>{{
+                          changeDeviceLabel ? '系统编号' : '设备编号'
+                        }}</span>
+                        <el-tooltip effect="dark" placement="top">
+                          <div slot="content"
+                            >{{
+                              changeDeviceLabel ? '系统编号' : '设备编号'
+                            }}由系统自动生成。</div
+                          >
                           <i class="el-icon-question question-icon">:</i>
                         </el-tooltip>
                       </template>
@@ -135,7 +138,9 @@
                       <template slot="label">
                         <span class="required"
                           >{{
-                            (hideSysDeviceNo || changeDeviceLabel)  ? '设备编号' : '原设备编号'
+                            hideSysDeviceNo || changeDeviceLabel
+                              ? '设备编号'
+                              : '原设备编号'
                           }}:</span
                         >
                       </template>
@@ -1051,6 +1056,7 @@
                   <template v-else>
                     <component
                       :is="item.component"
+                      v-if="activeName === item.name"
                       :ref="item.ref"
                       :readonly="readonly"
                       :list-data="form[item.data]"
@@ -1076,7 +1082,10 @@ import { getImage } from '@/api/platform/file/attachment'
 import { getSetting } from '@/utils/query'
 export default {
   components: {
-    IbpsUserSelector: () => import('@/business/platform/org/selector'),
+    IbpsUserSelector: () => ({
+      component: import('@/business/platform/org/selector'),
+      delay: 200
+    }),
     Maintenance: () => import('./maintenance.vue'),
     MoreDevices: () => import('./moreDevices.vue'),
     ScrappedRecord: () => import('./scrappedRecord.vue'),
@@ -1085,12 +1094,21 @@ export default {
     CalibrationCheckRecord: () => import('./calibrationCheckRecord.vue'),
     ConfirmationRecord: () => import('./ConfirmationRecord.vue'),
     PvRecord: () => import('./pvRecord.vue'),
-    IbpsAttachment: () =>
-      import('@/business/platform/file/attachment/selector'),
     SelectType: () => import('@/views/component/selectType.vue'),
-    IbpsCustomDialog: () =>
-      import('@/business/platform/data/templaterender/custom-dialog'),
-    IbpsImage: () => import('@/business/platform/file/image')
+    IbpsCustomDialog: () => ({
+      component: import(
+        '@/business/platform/data/templaterender/custom-dialog'
+      ),
+      delay: 200
+    }),
+    IbpsAttachment: () => ({
+      component: import('@/business/platform/file/attachment/selector'),
+      delay: 200
+    }),
+    IbpsImage: () => ({
+      component: import('@/business/platform/file/image'),
+      delay: 200
+    })
   },
   props: {
     readonly: {
@@ -1508,7 +1526,13 @@ export default {
       })
       const { data = [] } = result.variables || {}
       if (data[0].num > 0) {
-        throw new Error(`系统当前已经存在此${(this.hideSysDeviceNo || this.changeDeviceLabel)  ? '设备编号' : '原设备编号'},请更换另一个编号!`)
+        throw new Error(
+          `系统当前已经存在此${
+            this.hideSysDeviceNo || this.changeDeviceLabel
+              ? '设备编号'
+              : '原设备编号'
+          },请更换另一个编号!`
+        )
       }
 
       const exFactoryTime = this.form.chuChangRiQi
@@ -1614,13 +1638,13 @@ export default {
       })
     },
     async init() {
+      this.loading = true
       const deviceres = await getSetting('device')
       this.changeDeviceLabel = deviceres?.changeDeviceLabel || false
       this.showzhuCeYouXiaoQi = deviceres?.showzhuCeYouXiaoQi || false
       if (this.hideSysDeviceNo || deviceres?.changeDeviceLabel) {
         this.rules.yuanSheBeiBian[0].message = '设备编号不能为空'
       }
-      this.loading = true
       this.isEdit = !!(this.params && this.params.id)
       this.isSheKou = this.deptList[0].positionId === '1166372468122714112' // 判断是否是蛇口医院
 
@@ -1662,7 +1686,10 @@ export default {
         this.form.shiFouWeiHu = '是'
         this.form.diDian = this.level
       }
-      this.loading = false
+      const id = setTimeout(() => {
+        this.loading = false
+        clearTimeout(id)
+      }, 500)
     }
   }
 }

+ 28 - 20
src/views/component/fileTraining/index.vue

@@ -89,7 +89,8 @@
                 <el-tooltip
                   class="itemStyle"
                   effect="dark"
-                  placement="right-end"
+                  popper-class="tooltip-max-width"
+                  placement="right"
                   :content="showContent(activity, index)"
                 >
                   <div>
@@ -106,17 +107,16 @@
                           </div>
                         </template>
                         <!-- 附件 -->
-                        <div v-if="activity.zhen_fu_jian_">
+                        <div v-if="aactivity.zhen_fu_jian_">
                           <ibps-attachment
-                              v-model="activity.zhen_fu_jian_"
-                              allow-download
-                              download
-                              multiple
-                              accept="*"
-                              store="id"
-                              readonly
-                            />
-                  
+                            v-model="activity.zhen_fu_jian_"
+                            allow-download
+                            download
+                            multiple
+                            accept="*"
+                            store="id"
+                            readonly
+                          />
                         </div>
                         <div v-else>
                           <i class="el-icon-warning-outline" type="warning">
@@ -345,17 +345,18 @@ export default {
     const curRole = this.role.map((i) => i.alias)
     const isPower = curRole.some((item) => roleKey.includes(item))
     this.deleteShow = !!(isPower || this.isPower)
-    if(fileDownRights){ //绍兴妇幼环境限制只有文件管理员可以显示
-      if (this.isSuper || curRole.some(item => item == 'wjgly') ) {
+    if (fileDownRights) {
+      //绍兴妇幼环境限制只有文件管理员可以显示
+      if (this.isSuper || curRole.some((item) => item == 'wjgly')) {
         this.updateShow = true
       }
-    }else{ // 其他环境
-       const hasRole = localStorage.getItem('hasHighRole') === '1'
+    } else {
+      // 其他环境
+      const hasRole = localStorage.getItem('hasHighRole') === '1'
       if (this.isSuper || hasRole) {
         this.updateShow = true
       }
     }
-    
   },
   methods: {
     getUserName(data) {
@@ -621,13 +622,13 @@ export default {
         const a = document.createElement('a')
         a.href = this.optionFile.url
 
-        console.log('文件下载替换前地址:',a.href)
+        console.log('文件下载替换前地址:', a.href)
         const url = new URL(a.href)
         //替换文件下载路径为浏览器路径
-        url.host = window.location.host;
+        url.host = window.location.host
         a.href = url.href
-        console.log('文件下载替换后地址:',a.href)
-        
+        console.log('文件下载替换后地址:', a.href)
+
         a.download = this.optionFile.data.fileName
         document.body.appendChild(a)
         a.click()
@@ -736,6 +737,13 @@ export default {
 }
 </script>
 <style lang="scss">
+.tooltip-max-width {
+  max-width: 1200px !important; /* 固定最大宽度800px */
+  width: max-content; /* 内容不足时自适应宽度,不占满800px */
+  white-space: pre-wrap; /* 超长内容自动换行,避免横向溢出 */
+  word-break: break-all; /* 英文/数字超长时强制换行 */
+  padding: 8px 12px; /* 可选:调整内边距,优化排版 */
+}
 .ibps-file-preview-dialog {
   width: 80%;
   z-index: 99999;

+ 19 - 7
src/views/platform/message/inner/detail/dialog.vue

@@ -226,7 +226,8 @@ export default {
                 .then(() => {
                   console.log('确认接收到发放文件')
                   if (tn === 't_jjbdjb') {
-                    this.$common
+                    // 返回这个Promise链
+                    return this.$common
                       .request('query', {
                         key: 'getComparisonBYjjbdjb',
                         params: [this.tableId]
@@ -234,7 +235,8 @@ export default {
                       .then((r) => {
                         let mid = r.variables.data[0]
                         if (mid.jie_ban_ren_.split(',').length === mid.znum) {
-                          this.$common
+                          // 返回内部的Promise链
+                          return this.$common
                             .request('updates', {
                               tableName: updateTN != '' ? updateTN : 't_jjbjlb',
                               paramWhere: [{ id_: this.tableId }],
@@ -242,10 +244,12 @@ export default {
                                 shi_fou_guo_shen_: '已完成'
                               }
                             })
-                            .then(async (params) => {
-                              await this.createSnapshoot(this.tableId).then(
+                            .then((params) => {
+                              // 确保返回createSnapshoot的Promise
+                              return this.createSnapshoot(this.tableId).then(
                                 (res) => {
-                                  this.$common.request('updates', {
+                                  // 返回最后一个updates的Promise
+                                  return this.$common.request('updates', {
                                     tableName:
                                       updateTN != '' ? updateTN : 't_jjbjlb',
                                     paramWhere: [{ id_: this.tableId }],
@@ -256,17 +260,25 @@ export default {
                                 }
                               )
                             })
+                        } else {
+                          // 如果不满足条件,返回一个已解决的Promise
+                          return Promise.resolve()
                         }
                       })
+                  } else {
+                    // 如果tn不是't_jjbdjb',也返回一个已解决的Promise
+                    return Promise.resolve()
                   }
                 })
                 .then(() => {
                   this.type = ''
-                  this.getFormData()
+                  this.getFormData() // 现在这个会等待所有前面的操作完成
+                  this.closeDialog()
                 })
+            } else {
+              this.closeDialog()
             }
           })
-          this.closeDialog()
         })
         .catch(() => {})
     },

+ 35 - 34
src/views/system/dashboard/components/util.js

@@ -43,7 +43,7 @@ export function buildComponent(name, column, preview, vm) {
       props: {
         params: {
           type: Object,
-          default: () => {}
+          default: () => { }
         },
         height: {
           type: Number,
@@ -209,8 +209,8 @@ export function buildComponent(name, column, preview, vm) {
           this.showHeight = this.getHeight()
           const param =
             Utils.isNotEmpty(columns) &&
-            (column.alias === 'unreadMessage' ||
-              column.alias === 'pendingBusiness')
+              (column.alias === 'unreadMessage' ||
+                column.alias === 'pendingBusiness')
               ? { dataMode: column.dataMode, dataFrom: column.dataFrom }
               : column
           if (param.alias === 'myCalendar') {
@@ -487,6 +487,7 @@ export function buildComponent(name, column, preview, vm) {
           })
         },
         handleUnreadMessage(id, tableId, tableName) {
+          console.log('99999999')
           this.$emit('action-event', 'unRead', { id, tableId, tableName })
         },
         // 处理全屏
@@ -527,6 +528,7 @@ export function buildComponent(name, column, preview, vm) {
         },
         // 未读消息
         handleClick(option) {
+          console.log('999999999')
           this.unreadMessageOption = option
           option[this.activeName].dataMode = column.dataMode
           this.fetchData(option[this.activeName])
@@ -554,7 +556,7 @@ export function buildComponent(name, column, preview, vm) {
         },
         formValidate(formName) {
           this.$nextTick(() => {
-            this.$refs[formName].validate(() => {})
+            this.$refs[formName].validate(() => { })
           })
         },
         getFormData() {
@@ -667,7 +669,7 @@ export function buildComponent(name, column, preview, vm) {
           const { first, second } = this.$store.getters.level || {}
           const today = this.$common.getDateNow()
           // const sql = `select a.*, b.title_,b.type_, b.start_date_, b.end_date_, b.config_, b.overview_, b.id_ as pai_ban_id_ from t_schedule_detail a, t_schedule b where a.parent_id_ = b.id_ and b.di_dian_ = '${second || first}' and a.user_id_ = '${this.userId}' and b.status_ = '已发布'`
-         // 新查询语句 SELECT ad.* FROM t_attendance_detail ad INNER JOIN t_schedule s ON ad.pai_ban_id_ = s.id_ WHERE ad.ri_qi_ = #{p0} AND ad.yong_hu_id_ = #{p1} AND ad.di_dian_ = #{p2} AND s.status_ = #{p3}
+          // 新查询语句 SELECT ad.* FROM t_attendance_detail ad INNER JOIN t_schedule s ON ad.pai_ban_id_ = s.id_ WHERE ad.ri_qi_ = #{p0} AND ad.yong_hu_id_ = #{p1} AND ad.di_dian_ = #{p2} AND s.status_ = #{p3}
           return new Promise((resolve, reject) => {
             this.$common
               .request('query', {
@@ -678,18 +680,18 @@ export function buildComponent(name, column, preview, vm) {
                 const { data = [] } = res.variables || {}
                 let todaySchedule = []
                 data.forEach((item) => {
-                  if(item.ban_ci_bie_ming_){
-                      let obj = {}
-                      obj.label = item.ban_ci_ming_+'/'+item.ban_ci_bie_ming_
-                      obj.type = 'info'  //班次默认显示灰色
-                      if(item.da_ka_shi_jian_1_ && item.da_ka_shi_jian_2_ ){ //上下班时间都打卡了,班次显示绿色
-                        obj.type = 'success'
-                      }else if(item.da_ka_shi_jian_1_ || item.da_ka_shi_jian_2_){//上下班时间打卡了其中一个,班次显示橙色
-                        obj.type = 'warning'
-                      }
-                      todaySchedule.push(obj) // 加入今日班次
+                  if (item.ban_ci_bie_ming_) {
+                    let obj = {}
+                    obj.label = item.ban_ci_ming_ + '/' + item.ban_ci_bie_ming_
+                    obj.type = 'info'  //班次默认显示灰色
+                    if (item.da_ka_shi_jian_1_ && item.da_ka_shi_jian_2_) { //上下班时间都打卡了,班次显示绿色
+                      obj.type = 'success'
+                    } else if (item.da_ka_shi_jian_1_ || item.da_ka_shi_jian_2_) {//上下班时间打卡了其中一个,班次显示橙色
+                      obj.type = 'warning'
+                    }
+                    todaySchedule.push(obj) // 加入今日班次
                   }
-                
+
                 })
                 console.log(todaySchedule)
                 resolve(todaySchedule)
@@ -777,7 +779,7 @@ export function buildComponent(name, column, preview, vm) {
                       const enddate = this.$common.getFormatDate(
                         'string',
                         10,
-                        this.$common.getDate('day', i+1, item.start_date_)
+                        this.$common.getDate('day', i + 1, item.start_date_)
                       )
                       const shiftList = shift.split(',')
                       shiftList.forEach((s) => {
@@ -795,18 +797,18 @@ export function buildComponent(name, column, preview, vm) {
                               return d.type === 'allday'
                                 ? '全天'
                                 : `当天 ${d.startTime}` +
-                                    ' 至 ' +
-                                    `${d.isSecondDay === 'Y' ? '第二天' : '当天'} ${d.endTime}`
+                                ' 至 ' +
+                                `${d.isSecondDay === 'Y' ? '第二天' : '当天'} ${d.endTime}`
                             })
                             .join('\n'),
                           title: s,
                           start: date,
-                          end:t.dateRange[0].isSecondDay=='Y'? nextdate : date, //是否跨天班次,跨天班次要设置为结束日期的下一天,即开始日期的后天
-                          jieShuShiJian: t.dateRange[0].isSecondDay=='Y'? nextdate : date,
+                          end: t.dateRange[0].isSecondDay == 'Y' ? nextdate : date, //是否跨天班次,跨天班次要设置为结束日期的下一天,即开始日期的后天
+                          jieShuShiJian: t.dateRange[0].isSecondDay == 'Y' ? nextdate : date,
                           kaishishijian: date,
                           zhuangTai: '',
                           // id: i,
-                          id:attendance?.id_ || i,
+                          id: attendance?.id_ || i,
                           bcolor: t.color,
                           attendance: attendance || {}, // 考勤状态
                           //allDay: true,         // 标记为全天事件
@@ -837,8 +839,8 @@ export function buildComponent(name, column, preview, vm) {
             param.event._def.title
           )
         },
-        showDaKaBtn(targetDay1,targetDay2) { //班次开始或结束时间有一个是今天就显示打卡按钮
-          
+        showDaKaBtn(targetDay1, targetDay2) { //班次开始或结束时间有一个是今天就显示打卡按钮
+
           // 判断是否展示打卡按钮,当前日期则展示
           const today = this.$common.getDateNow()
           if (targetDay1 === today || targetDay2 === today) {
@@ -877,7 +879,7 @@ export function buildComponent(name, column, preview, vm) {
             this.$emit('dakaSingle', todaySchedule[0].label.split('/')[1])
             return
           } else {
-            this.$emit('action-event', 'daka', todaySchedule.map(item => item.label.split('/')[1]) )
+            this.$emit('action-event', 'daka', todaySchedule.map(item => item.label.split('/')[1]))
           }
         },
         async showMySchedule() {
@@ -949,19 +951,18 @@ export function buildComponent(name, column, preview, vm) {
                                         ${titleStr}
                                     </div>
                                     <div class="button-placeholder">
-                                        ${
-                                          event.extendedProps.jieShuShiJian <=
-                                          this.$common.getDateNow()
-                                            ? status === '正常'
-                                              ? '<i class="el-icon-check" style="color:#409EFF"></i>'
-                                              : '<i class="el-icon-warning-outline" style="color:#F5222D"></i>'
-                                            : ''
-                                        }
+                                        ${event.extendedProps.jieShuShiJian <=
+                  this.$common.getDateNow()
+                  ? status === '正常'
+                    ? '<i class="el-icon-check" style="color:#409EFF"></i>'
+                    : '<i class="el-icon-warning-outline" style="color:#F5222D"></i>'
+                  : ''
+                }
                                     </div>
                               </div>
                             `
               // 打卡按钮显示
-              if (this.showDaKaBtn(event.extendedProps.kaishishijian,event.extendedProps.jieShuShiJian)) {
+              if (this.showDaKaBtn(event.extendedProps.kaishishijian, event.extendedProps.jieShuShiJian)) {
                 const button = document.createElement('button')
                 button.className = 'clock-btn'
                 // 根据打卡状态显示不同文本