Przeglądaj źródła

口头报告和延迟报告功能迁移,个人信息界面头像一栏可以输入文字的解决

lidie 2 lat temu
rodzic
commit
55db7f16ef

Plik diff jest za duży
+ 616 - 748
src/business/platform/file/uploader/index.vue


+ 12 - 0
src/router/routes.js

@@ -312,6 +312,18 @@ const frameCustom = [
         meta: { title: '签到' },
         component: _import('/platform/bpmn/siginin/index')
       },
+      {
+        path: 'report/oralReport',
+        name: 'oralReport',
+        meta: { title: '口头报告查询' },
+        component: _import('/platform/bpmn/report/oralReport')
+      },
+      {
+        path: 'report/delayReport',
+        name: 'delayReport',
+        meta: { title: '延迟报告查询' },
+        component: _import('/platform/bpmn/report/delayReport')
+      },
       {
         path: 'communication/communicationList',
         name: 'communicationList',

+ 473 - 0
src/views/platform/bpmn/report/delayReport.vue

@@ -0,0 +1,473 @@
+<template>
+  <div :class="{'ibps-fixed-toolbar':checkMode}">
+    <van-sticky>
+      <van-nav-bar :title="generateTitle($route.name,$route.params.title||$route.meta.title)"
+        :left-text="$t('common.button.back')" :right-text="$utils.isNotEmpty(listData)?rightText:''" left-arrow
+        @click-left="$router.push({ name: 'dashboard' })" @click-right="toCheckMode()" />
+      <van-search v-model="subject" show-action placeholder="请输入搜索关键词" @search="onSearch">
+        <template #left>
+          <van-icon name="bars" :class="{'ibps-active':$utils.isNotEmpty(typeId)}" class="ibps-pr-5"
+            @click="clickType" />
+        </template>
+        <template #action>
+          <!-- <van-icon name="filter-o" :class="{'ibps-active':stateActive}" @click="clickMoreSearch" /> -->
+        </template>
+      </van-search>
+    </van-sticky>
+    <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+      <van-list v-model="loading" :finished="finished" @load="loadData">
+        <van-checkbox-group v-model="checkedIds">
+          <van-cell v-for="(item,index) in listData" :key="item.id+index"
+            :title="item.yang_pin_hao_==''?'/':item.yang_pin_hao_==null?'/':item.yang_pin_hao_"
+            @click="onClick(item,index)">
+            <template slot="icon">
+              <van-checkbox v-if="checkMode" ref="checkboxes" :name="item.id" class="ibps-mr-10" />
+              <van-icon name="coupon-o" size="1.5rem" color="#1E90FF" style="margin-right: 0.5rem;" />
+            </template>
+            <!-- <span>{{ item.bao_gao_shi_jian|bian_zhi_shi_jian }}</span> -->
+            <template #label>
+              <van-row class="delayShow">
+                <van-col span="6">病员姓名:</van-col>
+                <van-col span="17">{{item.xing_ming_==''?'/':item.xing_ming_==null?'/':item.xing_ming_}}</van-col>
+              </van-row>
+              <van-row class="delayShow">
+                <van-col span="6">检验项目:</van-col>
+                <van-col span="17">{{item.xiang_mu_==''?'/':item.xiang_mu_==null?'/':item.xiang_mu_}}</van-col>
+              </van-row>
+              <van-row class="delayShow">
+                <van-col span="6">延迟原因:</van-col>
+                <van-col
+                  span="17">{{item.yan_chi_yuan_yin_==''?'/':item.yan_chi_yuan_yin_==null?'/':item.yan_chi_yuan_yin_}}</van-col>
+              </van-row>
+              <van-row class="delayShow">
+                <van-col span="6">编制日期:</van-col>
+                <van-col
+                  span="17">{{item.bian_zhi_shi_jian.slice(0,10)==''?'/':item.bian_zhi_shi_jian.slice(0,10)==null?'/':item.bian_zhi_shi_jian.slice(0,10)}}</van-col>
+              </van-row>
+            </template>
+          </van-cell>
+        </van-checkbox-group>
+        <!-- <ibps-list-result-page :result-type="resultType" :error-type="errorType" :result-message="resultMessage" /> -->
+      </van-list>
+    </van-pull-refresh>
+
+    <ibps-toolbar v-show="checkMode" :actions="mainActions" />
+
+    <!-- <ibps-more-search :show="moreSearchPopup" :search-forms="searchForms" @callback="onMoreSearch"
+      @close="show => moreSearchPopup = show" @reset-form="resetForm" /> -->
+
+    <ibps-type-tree v-model="typeTreePopup" title="流程分类" category-key="FLOW_TYPE" @node-click="clickTypeNode"
+      @close="visible => typeTreePopup = visible" />
+    <!-- 遮罩层 -->
+    <template>
+      <van-popup v-model="ReachBottomShow" @close="onClose" ref="examPopup" :style="{  height: '100%',width:'100%'}"
+        position="bottom">
+        <div style="width: 100%; padding: 3% 0; text-align: center;  color: #303030;border-bottom: 1px solid #ebe8e8;">
+          <van-row>
+            <van-col span="4"><van-icon name="cross" size="20px" @click="onClose" /></van-col>
+            <van-col span="16" style="margin:1% auto 0;">报告详情</van-col>
+          </van-row>
+        </div>
+        <div style="width: 90%;margin: 1% auto;">
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">科室/病区:</van-col>
+            <van-col span="14">{{oralPopup.bing_qu_==''?'/':oralPopup.bing_qu_==null?'/':oralPopup.bing_qu_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">接收者:</van-col>
+            <van-col
+              span="14">{{oralPopup.jieshouzhe==''?'/':oralPopup.jieshouzhe==null?'/':oralPopup.jieshouzhe}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">病员姓名:</van-col>
+            <van-col
+              span="14">{{oralPopup.xing_ming_==''?'/':oralPopup.xing_ming_==null?'/':oralPopup.xing_ming_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">审核人:</van-col>
+            <van-col
+              span="14">{{oralPopup.shenheren==''?'/':oralPopup.shenheren==null?'/':oralPopup.shenheren}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">样品号:</van-col>
+            <van-col
+              span="14">{{oralPopup.yang_pin_hao_==''?'/':oralPopup.yang_pin_hao_==null?'/':oralPopup.yang_pin_hao_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">编制部门:</van-col>
+            <van-col
+              span="14">{{oralPopup.bianzhibumen==''?'/':oralPopup.bianzhibumen==null?'/':oralPopup.bianzhibumen}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">检验项目:</van-col>
+            <van-col
+              span="14">{{oralPopup.xiang_mu_==''?'/':oralPopup.xiang_mu_==null?'/':oralPopup.xiang_mu_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">编制人员:</van-col>
+            <van-col
+              span="14">{{oralPopup.bianzhiren==''?'/':oralPopup.bianzhiren==null?'/':oralPopup.bianzhiren}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">延迟原因:</van-col>
+            <van-col span="14">
+              <div style="max-height: 200px;overflow-y: auto;">
+                {{oralPopup.yan_chi_yuan_yin_==''?'/':oralPopup.yan_chi_yuan_yin_==null?'/':oralPopup.yan_chi_yuan_yin_}}
+              </div>
+            </van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">编制日期:</van-col>
+            <van-col
+              span="14">{{oralPopup.bian_zhi_shi_jian==''?'/':oralPopup.bian_zhi_shi_jian==null?'/':oralPopup.bian_zhi_shi_jian}}</van-col>
+          </van-row>
+          <van-row class="showPopups" v-if="oralPopup.aa=='空'">
+            <van-col span="10" class="leftPopups">附件:</van-col>
+            <van-col span="14">/</van-col>
+          </van-row>
+          <van-row class="showPopups" v-if="oralPopup.aa!=='空'">
+            <!-- <ibps-uploader v-model="oralPopup.fuJian" label="附件" download placeholder="请上传附件" :have-padding="false"
+              multiple clearable :readonly="true" /> -->
+            <van-col span="24">
+              <ibps-uploader v-model="oralPopup.fuJian" download :have-padding="false" label="附件" multiple clearable
+                :readonly="true" style="background-color: #fff;" />
+            </van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">备注:</van-col>
+            <van-col span="14">{{oralPopup.bei_zhu_==''?'/':oralPopup.bei_zhu_==null?'/':oralPopup.bei_zhu_}}</van-col>
+
+            <!-- <van-col span="16">{{oralPopup.bian_zhi_shi_jian.slice(0,10)}}</van-col> -->
+          </van-row>
+        </div>
+      </van-popup>
+    </template>
+    <van-divider v-if="footText">到底了</van-divider>
+    <van-empty v-if="noData" description="暂无数据" />
+    <!-- <ibps-bpmn-formrender-dialog :visible="formrenderVisible" :title="formrenderTitle" :pro-inst-id="proInstId"
+      :def-id="defId" @close="visible => formrenderVisible = visible" @callback="onSearch" /> -->
+  </div>
+
+</template>
+<script>
+  import { mapState } from 'vuex'
+  import { myDraft, removeDraft } from '@/api/platform/office/bpmInitiated'
+
+  import ActionUtils from '@/utils/action'
+  import i18n from '@/utils/i18n'
+  import random from '@/mixins/random'
+  import bpmnStatus from '@/mixins/bpmnStatus'
+
+  import IbpsMoreSearch from '@/components/ibps-more-search'
+  import IbpsTypeTree from '@/business/platform/cat/type/tree'
+  import IbpsAvatar from '@/components/ibps-avatar'
+  import IbpsToolbar from '@/components/ibps-toolbar'
+  import IbpsListResultPage from '@/components/ibps-list-result-page'
+  import IbpsBpmnFormrenderDialog from '@/business/platform/bpmn/form/dialog'
+
+  export default {
+    components: {
+      IbpsMoreSearch,
+      IbpsTypeTree,
+      IbpsAvatar,
+      IbpsToolbar,
+      IbpsListResultPage,
+      IbpsBpmnFormrenderDialog
+    },
+    mixins: [random, bpmnStatus],
+    data() {
+      return {
+        footText: false,
+        noData: false,
+        oralPopup: '',
+        ReachBottomShow: false,
+        stateActive: false,
+        moreSearchPopup: false,
+        typeTreePopup: false,
+        searchForms: {
+          forms: [
+            { prop: 'Q^subject_^SL', label: '事务名称', fieldType: 'text' },
+            // { prop: 'Q^proc_def_name_^SL', label: '事务说明', fieldType: 'text' },
+            { prop: 'Q^inst.subject_^SL', label: '事务说明', fieldType: 'text' },
+            { prop: ['Q^create_time_^DL', 'Q^create_time_^DG'], label: '创建时间', fieldType: 'dateRange', options: { datefmt: 'yyyy-MM-dd' } }
+          ]
+        },
+
+        subject: '',
+        typeId: '',
+        moreParams: {},
+
+        listData: [],
+        pagination: {},
+        sorts: {},
+
+        loading: false,
+        finished: false,
+        refreshing: false,
+        resultType: 'init',
+        errorType: null,
+        resultMessage: null,
+
+        checkMode: false,
+        checkedIds: [],
+        mainActions: [{
+          'name': this.$t('common.button.remove'),
+          'type': 'danger',
+          'callback': this.onRemove
+        }],
+
+        proInstId: '',
+        defId: '',
+        formrenderVisible: false,
+        formrenderTitle: '',
+        current: 0,
+      }
+    },
+
+    computed: {
+      ...mapState('ibps/user', [
+        'info'
+      ]),
+      rightText() {
+        return this.checkMode ? this.$t('common.button.cancel') : this.$t('common.button.manage')
+      },
+      selectedIds() {
+        return this.checkedIds.join(',')
+      }
+    },
+    methods: {
+      generateTitle(name, title) { // generateTitle by vue-i18n
+        return i18n.generateTitle(name, title)
+      },
+      /**
+       * 加载数据
+       * 
+      */
+      async loadData() {
+        this.loading = true
+        await this.getPositionobj()
+        let page = 0
+        if (this.current === 0) {
+          page = 0
+        } else {
+          page = this.current * 10
+        }
+        const key = this.subject
+        let sql = `select t_ycbgjlb.*,(case t_ycbgjlb.fu_jian_ when '' then '空' else t_ycbgjlb.fu_jian_ END) as aa,g.bianzhibumen,g.bianzhiren,g.shenheren,g.jieshouzhe from t_ycbgjlb LEFT JOIN (select e.*,f.jieshouzhe from (select c.*,d.shenheren from (select a.*,b.bianzhiren from (select t.id_ ,group_concat(u.name_ order by find_in_set(u.id_,t.bian_zhi_bu_men_)) as bianzhibumen  from t_ycbgjlb as t inner join ibps_party_position as u on find_in_set(u.id_,t.bian_zhi_bu_men_)>0 group by t.id_ ORDER BY  t.create_time_ DESC) as a LEFT JOIN (select t.id_ ,u.NAME_ as bianzhiren from t_ycbgjlb as t inner join ibps_party_employee as u on find_in_set(u.id_,t.bian_zhi_ren_)>0 group by t.id_ ORDER BY  t.create_time_ DESC) as b on a.id_ = b.id_) as c LEFT JOIN (select t.id_ ,u.NAME_ as shenheren from t_ycbgjlb as t inner join ibps_party_employee as u on find_in_set(u.id_,t.shen_he_ren_)>0 group by t.id_ ORDER BY  t.create_time_ DESC) as d on c.id_ = d.id_) as e LEFT JOIN (select t.id_ ,group_concat(u.name_ order by find_in_set(u.id_,t.jie_shou_zhe_)) as jieshouzhe from t_ycbgjlb as t inner join ibps_party_employee as u on find_in_set(u.id_,t.jie_shou_zhe_)>0 group by t.id_ ORDER BY  t.create_time_ DESC) as f on e.id_ = f.id_)as g on t_ycbgjlb.id_ =g.id_ where find_in_set(t_ycbgjlb.bian_zhi_bu_men_,'${this.positionObj}') and t_ycbgjlb.xing_ming_ like'%` + key + `%' ORDER BY t_ycbgjlb.create_time_ DESC LIMIT ${page},10`
+        this.$common.request('sql', sql).then(res => {
+          // console.log("res", res);
+          if (this.current == 0 && res.variables.data.length == 0) {
+            this.finished = true;
+            this.noData = true
+            this.footText = false
+          }
+          // console.log("res获取到的数据", res);
+          ActionUtils.handleListData(this, res.variables)
+          let data = res.variables.data
+          this.listData.push(...data)
+          if (this.listData.length != 0 && (this.listData.length) % 10 != 0) {
+            this.footText = true
+            this.finished = true;
+            return
+          } else {
+            this.current++
+          }
+          this.loading = false
+        })
+      },
+      // 获取positionobj数据
+      async getPositionobj() {
+        if (this.info && this.info.positions && this.info.positions.length > 0) {
+          let posiList = []
+          this.info.positions.forEach(item => {
+            let obj = `${item.id}.`
+            let objList = item.path.split(obj)
+            objList.forEach(it => {
+              posiList.push(it)
+            })
+          })
+          let position = this.info.positions.map(item => {
+            return item.id
+          })
+          let posiSql = ``
+          position.forEach((item, index) => {
+            if (index == 0) {
+              let obj = `path_ like '%${item}%'`
+              posiSql += obj
+            } else {
+              let obj = `or path_ like '%${item}%'`
+              posiSql += obj
+            }
+          })
+          let sql = `select * from ibps_party_entity where party_type_ = 'position' and (${posiSql})`
+          await this.$common.request('sql', sql).then(res => {
+            if (res.state == '200') {
+              const data = res.variables.data
+              if (data.length > 0) {
+                data.forEach(item => {
+                  posiList.push(item.ID_)
+                })
+                // 数组去空值
+                posiList = posiList.filter(item => item)
+                // 部门上下级的id去重
+                let positionSet = Array.from(new Set(posiList))
+                this.positionObj = positionSet.join(",")
+              } else {
+                this.positionObj = ''
+              }
+            }
+          })
+        } else {
+          this.positionObj = ''
+        }
+      },
+      /**
+       * 获取格式化参数
+       */
+      getSearcFormData() {
+        let params = {}
+        if (this.$utils.isNotEmpty(this.subject)) {
+          params['Q^subject_^SL'] = this.subject
+        }
+        if (this.$utils.isNotEmpty(this.moreParams)) {
+          params = Object.assign(params, this.moreParams)
+        }
+        return ActionUtils.formatParams(
+          params,
+          this.pagination,
+          this.sorts)
+      },
+      /**
+       * 下拉刷新
+       */
+      onRefresh() {
+        this.footText = false
+        this.refreshing = true
+        this.finished = false
+        this.loading = true
+        this.onSearch()
+      },
+      /**
+       * 查询
+       */
+      onSearch() {
+        this.stateActive = false
+        ActionUtils.initListData(this)
+        this.loadData()
+      },
+      /**
+       * 高级查询
+       */
+      onMoreSearch(params) {
+        if (this.$utils.isNotEmpty(this.typeId)) {
+          params['Q^type_id_^SL'] = this.typeId
+        }
+        this.moreParams = params
+        this.onSearch()
+        if (this.$utils.isNotEmpty(params)) {
+          this.stateActive = true
+        }
+      },
+      /**
+       * 弹窗更多查询条件
+       */
+      clickMoreSearch() {
+        this.moreSearchPopup = true
+        this.stateActive = false
+      },
+      /**
+       * 重置表单
+       */
+      resetForm() {
+        this.typeId = ''
+      },
+      getTaskDesc(v) {
+        if (!v.includes('#')) {
+          return ''
+        }
+        return v.split('#')[1] || ''
+      },
+      // 点击左边显示
+      clickType() {
+        this.typeTreePopup = true
+      },
+      clickTypeNode(data) {
+        this.typeId = data.id
+        this.onMoreSearch({})
+      },
+      onClick(item, index) {
+        this.ReachBottomShow = true
+        this.oralPopup = item
+      },
+      onRefreshPage() {
+        this.checkedIds = []
+        this.checkMode = false
+        this.onRefresh()
+      },
+      toCheckMode() {
+        if (this.$utils.isEmpty(this.listData)) {
+          return
+        }
+        if (this.checkMode) {
+          // this.show = true
+          this.checkedIds = []
+        }
+        this.checkMode = !this.checkMode
+      },
+      onRemove() {
+        if (this.checkedIds.length === 0) {
+          this.$notify({
+            type: 'warning',
+            message: this.$t('common.dialog.selectedRecords')
+          })
+          return
+        }
+        this.$dialog.confirm({
+          title: this.$t('common.dialog.warn'),
+          message: this.$t('common.operate.makeSure')
+        }).then(() => {
+          removeDraft({ ids: this.selectedIds }).then(response => {
+            this.$notify({
+              type: 'success',
+              message: '删除草稿成功!'
+            })
+            this.onRefreshPage()
+          }).catch((e) => {
+            console.error(e)
+          })
+        })
+      },
+      onClose() {
+        this.ReachBottomShow = false
+      },
+
+
+    }
+
+  }
+</script>
+<style lang="scss" scoped>
+  .showPopups {
+    margin: 4% 0;
+    color: #888;
+    font-size: 14px;
+
+    .leftPopups {
+      color: #555;
+      font-size: 15px;
+    }
+  }
+
+  .delayShow {
+    margin: 2% 0;
+    /* font-size: 16px; */
+  }
+
+  ::v-deep .van-cell__title {
+    width: 65%;
+
+    .van-cell__label {
+      overflow-wrap: break-word;
+    }
+  }
+</style>

+ 524 - 0
src/views/platform/bpmn/report/oralReport.vue

@@ -0,0 +1,524 @@
+<template>
+  <div :class="{'ibps-fixed-toolbar':checkMode}">
+    <van-sticky>
+      <van-nav-bar :title="generateTitle($route.name,$route.params.title||$route.meta.title)"
+        :left-text="$t('common.button.back')" :right-text="$utils.isNotEmpty(listData)?rightText:''" left-arrow
+        @click-left="$router.push({ name: 'dashboard' })" @click-right="toCheckMode()" />
+      <van-search v-model="subject" show-action placeholder="请输入搜索关键词" @search="onSearch">
+        <template #left>
+          <van-icon name="bars" :class="{'ibps-active':$utils.isNotEmpty(typeId)}" class="ibps-pr-5"
+            @click="clickType" />
+        </template>
+        <template #action>
+          <!-- <van-icon name="filter-o" :class="{'ibps-active':stateActive}" @click="clickMoreSearch" /> -->
+        </template>
+      </van-search>
+    </van-sticky>
+    <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+      <van-list v-model="loading" :finished="finished" @load="loadData">
+        <van-checkbox-group v-model="checkedIds">
+          <van-cell v-for="(item,index) in listData" :key="item.id+index"
+            :title="item.xing_ming_==''?'/':item.xing_ming_==null?'/':item.xing_ming_" @click="onClick(item,index)">
+            <template slot="icon">
+              <van-checkbox v-if="checkMode" ref="checkboxes" :name="item.id" class="ibps-mr-10" />
+              <van-icon name="coupon-o" size="1.5rem" color="#1E90FF" style="margin-right: 0.5rem;" />
+            </template>
+            <!-- <span>{{ item.bao_gao_shi_jian|bian_zhi_shi_jian }}</span> -->
+            <template #label>
+              <van-row>
+                <van-col span="6">门诊/住院号:</van-col>
+                <van-col span="17">{{item.zhu_yuan_hao_==''?'/':item.xing_ming_==null?'/':item.xing_ming_}}</van-col>
+              </van-row>
+              <van-row>
+                <van-col span="6">床号:</van-col>
+                <van-col span="17">{{item.chuang_hao_==''?'/':item.chuang_hao_==null?'/':item.chuang_hao_}}</van-col>
+              </van-row>
+              <van-row>
+                <van-col span="6">检验项目:</van-col>
+                <van-col span="17">{{item.xiang_mu_==''?'/':item.xiang_mu_==null?'/':item.xiang_mu_}}</van-col>
+              </van-row>
+              <van-row>
+                <van-col span="6">编制日期:</van-col>
+                <van-col
+                  span="17">{{item.bian_zhi_shi_jian.slice(0,10)==''?'/':item.bian_zhi_shi_jian.slice(0,10)==null?'/':item.bian_zhi_shi_jian.slice(0,10)}}</van-col>
+              </van-row>
+            </template>
+          </van-cell>
+        </van-checkbox-group>
+        <!-- <ibps-list-result-page :result-type="resultType" :error-type="errorType" :result-message="resultMessage" /> -->
+      </van-list>
+    </van-pull-refresh>
+
+    <ibps-toolbar v-show="checkMode" :actions="mainActions" />
+
+    <!-- <ibps-more-search :show="moreSearchPopup" :search-forms="searchForms" @callback="onMoreSearch"
+      @close="show => moreSearchPopup = show" @reset-form="resetForm" /> -->
+
+    <ibps-type-tree v-model="typeTreePopup" title="流程分类" category-key="FLOW_TYPE" @node-click="clickTypeNode"
+      @close="visible => typeTreePopup = visible" />
+    <!-- 遮罩层 -->
+    <template>
+      <van-popup v-model="ReachBottomShow" @close="onClose" ref="examPopup" :style="{  height: '100%',width:'100%'}"
+        position="bottom">
+        <div style="width: 100%; padding: 3% 0; text-align: center;  color: #303030;border-bottom: 1px solid #ebe8e8;">
+          <van-row>
+            <van-col span="4"><van-icon name="cross" size="20px" @click="onClose" /></van-col>
+            <van-col span="16" style="margin:1% auto 0;">报告详情</van-col>
+          </van-row>
+        </div>
+
+
+
+
+
+
+
+        <div style="width: 90%;margin: 1% auto;">
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">病员姓名:</van-col>
+            <van-col
+              span="14">{{oralPopup.xing_ming_==''?'/':oralPopup.xing_ming_==null?'/':oralPopup.xing_ming_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">性别:</van-col>
+            <van-col
+              span="14">{{oralPopup.xing_bie_==''?'/':oralPopup.xing_bie_==null?'/':oralPopup.xing_bie_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">科室/病区:</van-col>
+            <van-col span="14">{{oralPopup.bing_qu_==''?'/':oralPopup.bing_qu_==null?'/':oralPopup.bing_qu_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">门诊/住院部:</van-col>
+            <van-col
+              span="14">{{oralPopup.zhu_yuan_hao_==''?'/':oralPopup.zhu_yuan_hao_==null?'/':oralPopup.zhu_yuan_hao_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">床号:</van-col>
+            <van-col
+              span="14">{{oralPopup.chuang_hao_==''?'/':oralPopup.chuang_hao_==null?'/':oralPopup.chuang_hao_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">接听者:</van-col>
+            <van-col
+              span="14">{{oralPopup.jie_ting_zhe_==''?'/':oralPopup.jie_ting_zhe_==null?'/':oralPopup.jie_ting_zhe_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">补发书面报告时间:</van-col>
+            <van-col
+              span="14">{{oralPopup.bao_gao_shi_jian_==''?'/':oralPopup.bao_gao_shi_jian_==null?'/':oralPopup.bao_gao_shi_jian_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">补发书面报告编号:</van-col>
+            <van-col
+              span="14">{{oralPopup.bao_gao_bian_hao_==''?'/':oralPopup.bao_gao_bian_hao_==null?'/':oralPopup.bao_gao_bian_hao_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">检验项目:</van-col>
+            <van-col span="14">
+              <div style="max-height: 200px;overflow-y: auto;">
+                {{oralPopup.xiang_mu_==''?'/':oralPopup.xiang_mu_==null?'/':oralPopup.xiang_mu_}}</div>
+            </van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">检验结果:</van-col>
+            <van-col
+              span="14">{{oralPopup.jian_ce_jie_guo_==''?'/':oralPopup.jian_ce_jie_guo_==null?'/':oralPopup.jian_ce_jie_guo_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">复查结果:</van-col>
+            <van-col
+              span="14">{{oralPopup.fu_cha_jie_guo_==''?'/':oralPopup.fu_cha_jie_guo_==null?'/':oralPopup.fu_cha_jie_guo_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">编制部门:</van-col>
+            <van-col
+              span="14">{{oralPopup.bianzhibumen==''?'/':oralPopup.bianzhibumen==null?'/':oralPopup.bianzhibumen}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">沟通说明:</van-col>
+            <van-col
+              span="14">{{oralPopup.shuo_ming_==''?'/':oralPopup.shuo_ming_==null?'/':oralPopup.shuo_ming_}}</van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">编制人员:</van-col>
+            <van-col
+              span="14">{{oralPopup.bianzhiren==''?'/':oralPopup.bianzhiren==null?'/':oralPopup.bianzhiren}}</van-col>
+          </van-row>
+          <van-row class="showPopups" v-if="oralPopup.aa=='空'">
+            <van-col span="10" class="leftPopups">附件:</van-col>
+            <van-col span="14">/</van-col>
+          </van-row>
+          <van-row class="showPopups" v-if="oralPopup.aa!=='空'">
+            <!-- <ibps-uploader v-model="oralPopup.fuJian" label="附件" download placeholder="请上传附件" :have-padding="false"
+              multiple clearable :readonly="true" /> -->
+            <van-col span="24">
+              <ibps-uploader v-model="oralPopup.fuJian" download :have-padding="false" label="附件" multiple clearable
+                :readonly="true" style="background-color: #fff;" />
+            </van-col>
+          </van-row>
+          <van-row class="showPopups">
+            <van-col span="10" class="leftPopups">编制日期:</van-col>
+            <van-col
+              span="14">{{oralPopup.bian_zhi_shi_jian==''?'/':oralPopup.bian_zhi_shi_jian==null?'/':oralPopup.bian_zhi_shi_jian}}</van-col>
+
+            <!-- <van-col span="16">{{oralPopup.bian_zhi_shi_jian.slice(0,10)}}</van-col> -->
+          </van-row>
+        </div>
+      </van-popup>
+    </template>
+    <van-divider v-if="footText">到底了</van-divider>
+    <van-empty v-if="noData" description="暂无数据" />
+    <!-- <ibps-bpmn-formrender-dialog :visible="formrenderVisible" :title="formrenderTitle" :pro-inst-id="proInstId"
+      :def-id="defId" @close="visible => formrenderVisible = visible" @callback="onSearch" /> -->
+  </div>
+
+</template>
+<script>
+  import IbpsUploader from '@/business/platform/file/uploader'
+  import { mapState } from 'vuex'
+  import { myDraft, removeDraft } from '@/api/platform/office/bpmInitiated'
+
+  import ActionUtils from '@/utils/action'
+  import i18n from '@/utils/i18n'
+  import random from '@/mixins/random'
+  import bpmnStatus from '@/mixins/bpmnStatus'
+
+  import IbpsMoreSearch from '@/components/ibps-more-search'
+  import IbpsTypeTree from '@/business/platform/cat/type/tree'
+  import IbpsAvatar from '@/components/ibps-avatar'
+  import IbpsToolbar from '@/components/ibps-toolbar'
+  import IbpsListResultPage from '@/components/ibps-list-result-page'
+  import IbpsBpmnFormrenderDialog from '@/business/platform/bpmn/form/dialog'
+
+  export default {
+    components: {
+      IbpsMoreSearch,
+      IbpsTypeTree,
+      IbpsAvatar,
+      IbpsToolbar,
+      IbpsListResultPage,
+      IbpsBpmnFormrenderDialog,
+      IbpsUploader
+    },
+    mixins: [random, bpmnStatus],
+    data() {
+      return {
+        id: '',
+        footText: false,
+        noData: false,
+        oralPopup: '',
+        ReachBottomShow: false,
+        stateActive: false,
+        moreSearchPopup: false,
+        typeTreePopup: false,
+        searchForms: {
+          forms: [
+            { prop: 'Q^subject_^SL', label: '事务名称', fieldType: 'text' },
+            // { prop: 'Q^proc_def_name_^SL', label: '事务说明', fieldType: 'text' },
+            { prop: 'Q^inst.subject_^SL', label: '事务说明', fieldType: 'text' },
+            { prop: ['Q^create_time_^DL', 'Q^create_time_^DG'], label: '创建时间', fieldType: 'dateRange', options: { datefmt: 'yyyy-MM-dd' } }
+          ]
+        },
+
+        subject: '',
+        typeId: '',
+        moreParams: {},
+
+        listData: [],
+        pagination: {},
+        sorts: {},
+
+        loading: false,
+        finished: false,
+        refreshing: false,
+        resultType: 'init',
+        errorType: null,
+        resultMessage: null,
+
+        checkMode: false,
+        checkedIds: [],
+        mainActions: [{
+          'name': this.$t('common.button.remove'),
+          'type': 'danger',
+          'callback': this.onRemove
+        }],
+
+        proInstId: '',
+        defId: '',
+        formrenderVisible: false,
+        formrenderTitle: '',
+        current: 0,
+      }
+    },
+
+    computed: {
+      ...mapState('ibps/user', [
+        'info'
+      ]),
+      rightText() {
+        return this.checkMode ? this.$t('common.button.cancel') : this.$t('common.button.manage')
+      },
+      selectedIds() {
+        return this.checkedIds.join(',')
+      }
+    },
+    methods: {
+      generateTitle(name, title) { // generateTitle by vue-i18n
+        return i18n.generateTitle(name, title)
+      },
+      /**
+       * 加载数据
+       * 
+      */
+      async loadData() {
+        this.loading = true
+        await this.getPositionobj()
+        let page = 0
+        if (this.current === 0) {
+          page = 0
+        } else {
+          page = this.current * 10
+        }
+        const key = this.subject
+        let sql = `select t_ktbglcjgjlb.*,(case t_ktbglcjgjlb.fu_jian_ when '' then '空' else t_ktbglcjgjlb.fu_jian_ END) as aa,c.bianzhibumen,c.bianzhiren from t_ktbglcjgjlb LEFT JOIN (select a.*,b.bianzhiren from(select t.id_ ,group_concat(u.name_ order by find_in_set(u.id_,t.bian_zhi_bu_men_)) as bianzhibumen  from t_ktbglcjgjlb as t inner join ibps_party_position as u on find_in_set(u.id_,t.bian_zhi_bu_men_)>0 group by t.id_ ORDER BY  t.create_time_ DESC) as a LEFT JOIN(select t.id_ ,u.NAME_ as bianzhiren from t_ktbglcjgjlb as t inner join ibps_party_employee as u on find_in_set(u.id_,t.bian_zhi_ren_)>0 group by t.id_ ORDER BY  t.create_time_ DESC) as b on a.id_ = b.id_) as c on c.id_ =t_ktbglcjgjlb.id_ where find_in_set(t_ktbglcjgjlb.bian_zhi_bu_men_,'${this.positionObj}') and t_ktbglcjgjlb.xing_ming_ like'%` + key + `%' ORDER BY  t_ktbglcjgjlb.create_time_ DESC LIMIT ${page},10`
+        this.$common.request('sql', sql).then(res => {
+          if (this.current == 0 && res.variables.data.length == 0) {
+            this.finished = true;
+            this.noData = true
+            this.footText = false
+          }
+          // console.log("res获取到的数据", res);
+          ActionUtils.handleListData(this, res.variables)
+          let data = res.variables.data
+          this.listData.push(...data)
+          if (this.listData.length != 0 && (this.listData.length) % 10 != 0) {
+            this.footText = true
+            this.finished = true;
+            return
+          } else {
+            this.current++
+          }
+          this.loading = false
+        })
+      },
+      // 获取positionobj数据
+      async getPositionobj() {
+        if (this.info && this.info.positions && this.info.positions.length > 0) {
+          let posiList = []
+          this.info.positions.forEach(item => {
+            let obj = `${item.id}.`
+            let objList = item.path.split(obj)
+            objList.forEach(it => {
+              posiList.push(it)
+            })
+          })
+          let position = this.info.positions.map(item => {
+            return item.id
+          })
+          let posiSql = ``
+          position.forEach((item, index) => {
+            if (index == 0) {
+              let obj = `path_ like '%${item}%'`
+              posiSql += obj
+            } else {
+              let obj = `or path_ like '%${item}%'`
+              posiSql += obj
+            }
+          })
+          let sql = `select * from ibps_party_entity where party_type_ = 'position' and (${posiSql})`
+          await this.$common.request('sql', sql).then(res => {
+            if (res.state == '200') {
+              const data = res.variables.data
+              if (data.length > 0) {
+                data.forEach(item => {
+                  posiList.push(item.ID_)
+                })
+                // 数组去空值
+                posiList = posiList.filter(item => item)
+                // 部门上下级的id去重
+                let positionSet = Array.from(new Set(posiList))
+                this.positionObj = positionSet.join(",")
+              } else {
+                this.positionObj = ''
+              }
+            }
+          })
+        } else {
+          this.positionObj = ''
+        }
+      },
+      /**
+       * 获取格式化参数
+       */
+      getSearcFormData() {
+        let params = {}
+        if (this.$utils.isNotEmpty(this.subject)) {
+          params['Q^subject_^SL'] = this.subject
+        }
+        if (this.$utils.isNotEmpty(this.moreParams)) {
+          params = Object.assign(params, this.moreParams)
+        }
+        return ActionUtils.formatParams(
+          params,
+          this.pagination,
+          this.sorts)
+      },
+      /**
+       * 下拉刷新
+       */
+      onRefresh() {
+        this.footText = false
+        this.refreshing = true
+        this.finished = false
+        this.loading = true
+        this.onSearch()
+      },
+      /**
+       * 查询
+       */
+      onSearch() {
+        this.stateActive = false
+        ActionUtils.initListData(this)
+        this.loadData()
+      },
+      /**
+       * 高级查询
+       */
+      onMoreSearch(params) {
+        if (this.$utils.isNotEmpty(this.typeId)) {
+          params['Q^type_id_^SL'] = this.typeId
+        }
+        this.moreParams = params
+        this.onSearch()
+        if (this.$utils.isNotEmpty(params)) {
+          this.stateActive = true
+        }
+      },
+      /**
+       * 弹窗更多查询条件
+       */
+      clickMoreSearch() {
+        this.moreSearchPopup = true
+        this.stateActive = false
+      },
+      /**
+       * 重置表单
+       */
+      resetForm() {
+        this.typeId = ''
+      },
+      getTaskDesc(v) {
+        if (!v.includes('#')) {
+          return ''
+        }
+        return v.split('#')[1] || ''
+      },
+      // 点击左边显示
+      clickType() {
+        this.typeTreePopup = true
+      },
+      clickTypeNode(data) {
+        this.typeId = data.id
+        this.onMoreSearch({})
+      },
+      onClick(item, index) {
+        this.id = item.id_
+        this.ReachBottomShow = true
+        this.oralPopup = item
+      },
+      onRefreshPage() {
+        this.checkedIds = []
+        this.checkMode = false
+        this.onRefresh()
+      },
+      toCheckMode() {
+        if (this.$utils.isEmpty(this.listData)) {
+          return
+        }
+        if (this.checkMode) {
+          // this.show = true
+          this.checkedIds = []
+        }
+        this.checkMode = !this.checkMode
+      },
+      onRemove() {
+        if (this.checkedIds.length === 0) {
+          this.$notify({
+            type: 'warning',
+            message: this.$t('common.dialog.selectedRecords')
+          })
+          return
+        }
+        this.$dialog.confirm({
+          title: this.$t('common.dialog.warn'),
+          message: this.$t('common.operate.makeSure')
+        }).then(() => {
+          removeDraft({ ids: this.selectedIds }).then(response => {
+            this.$notify({
+              type: 'success',
+              message: '删除草稿成功!'
+            })
+            this.onRefreshPage()
+          }).catch((e) => {
+            console.error(e)
+          })
+        })
+      },
+      onClose() {
+        this.ReachBottomShow = false
+      },
+
+      //   lookPosition(str) {
+      //     return new Promise((resolve, reject) => {
+      //       let sql = `select * from ibps_party_entity where find_in_set(ID_,'${str}') order by DEPTH_`
+      //       this.$getCommon.getRepust('sql', sql).then(res => {
+      //         const data = res.data.variables.data
+      //         if (data.length > 0) {
+      //           data.forEach(item => {
+      //             item.id = item.ID_
+      //             item.name = item.NAME_
+      //             item.path = item.PATH_
+      //             item.text = item.NAME_
+      //           })
+      //           uni.setStorageSync('mainPosition', data[0])
+      //           uni.setStorageSync('positionList', data)
+      //           this.getPosition(data).then(res => {
+      //             console.log("获得什么数据啊data", data);
+      //             resolve(data)
+      //           })
+
+      //         } else {
+      //           resolve(data)
+      //         }
+
+      //       }).catch(err => {
+      //         reject(err)
+      //       })
+      //     })
+
+      //   },
+    }
+
+  }
+</script>
+<style lang="scss" scoped>
+  .showPopups {
+    margin: 4% 0;
+    color: #888;
+    font-size: 14px;
+
+    .leftPopups {
+      color: #555;
+      font-size: 15px;
+    }
+  }
+
+  ::v-deep .van-cell__title {
+    width: 65%;
+
+    .van-cell__label {
+      overflow-wrap: break-word;
+    }
+  }
+</style>

+ 5 - 3
src/views/platform/my/user-info.vue

@@ -3,15 +3,17 @@
     <van-nav-bar :title="generateTitle()" :left-text="$t('common.button.back')" left-arrow fixed @click-left="onBack" />
     <van-cell-group v-if="loading">
       <div class="divider" />
-
-      <van-field label="头像" :size="size" class="photoPic">
+      <van-cell :size="size" class="photoPic">
+        <template #title>
+          <div style="margin: 5% 0;">头像</div>
+        </template>
         <template #right-icon>
           <van-uploader :deletable="false" :preview-full-image="false" :after-read="afterRead">
             <van-image v-show="$utils.isNotEmpty(employee)" :src="getImage(employee.photo)" width="50" height="50"
               round />
           </van-uploader>
         </template>
-      </van-field>
+      </van-cell>
 
       <!-- <van-cell>
         <div slot="title" class="ibps-swipe-button ibps-flex-c my-user-info_size">

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików