yxh
6 天以前 e1dd822239ce5b1fd85462c95b264b300153a4cf
修改了回款名字
已修改7个文件
275 ■■■■■ 文件已修改
src/components/AttachmentPreviewPane/index.vue 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/FilePreview/index.vue 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/donatebaseinfo/index.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/statistics/chargeStatistics/index.vue 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/unitCost/index.vue 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/unitCost/organfee/index.vue 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/AttachmentPreviewPane/index.vue
@@ -45,10 +45,13 @@
        <img
          :src="file.url"
          class="attachment-preview-pane__image"
          :style="{
            transform: 'scale(' + scale + ') rotate(' + deg + 'deg)'
          }"
          :class="{ 'is-dragging': dragging }"
          :style="imageStyle"
          draggable="false"
          alt="图片预览"
          @mousedown="startDrag"
          @click="toggleZoom"
          @dragstart.prevent
        />
      </div>
      <iframe
@@ -76,10 +79,32 @@
  data() {
    return {
      scale: 1,
      deg: 0
      deg: 0,
      offsetX: 0,
      offsetY: 0,
      dragging: false,
      dragMoved: false,
      dragStartX: 0,
      dragStartY: 0,
      dragOriginX: 0,
      dragOriginY: 0
    };
  },
  computed: {
    imageStyle() {
      return {
        transform:
          "translate(" +
          this.offsetX +
          "px," +
          this.offsetY +
          "px) scale(" +
          this.scale +
          ") rotate(" +
          this.deg +
          "deg)"
      };
    },
    fileType() {
      if (!this.file) {
        return "other";
@@ -116,7 +141,45 @@
    reset() {
      this.scale = 1;
      this.deg = 0;
      this.offsetX = 0;
      this.offsetY = 0;
    },
    startDrag(e) {
      if (e.button !== 0) return;
      this.dragging = true;
      this.dragMoved = false;
      this.dragStartX = e.clientX;
      this.dragStartY = e.clientY;
      this.dragOriginX = this.offsetX;
      this.dragOriginY = this.offsetY;
      document.addEventListener("mousemove", this.onDragMove);
      document.addEventListener("mouseup", this.onDragEnd);
    },
    onDragMove(e) {
      if (!this.dragging) return;
      const dx = e.clientX - this.dragStartX;
      const dy = e.clientY - this.dragStartY;
      if (Math.abs(dx) > 3 || Math.abs(dy) > 3) {
        this.dragMoved = true;
    }
      this.offsetX = this.dragOriginX + dx;
      this.offsetY = this.dragOriginY + dy;
    },
    onDragEnd() {
      this.dragging = false;
      document.removeEventListener("mousemove", this.onDragMove);
      document.removeEventListener("mouseup", this.onDragEnd);
    },
    toggleZoom() {
      if (this.dragMoved) {
        this.dragMoved = false;
        return;
      }
      this.scale = this.scale === 1 ? 1.5 : 1;
    }
  },
  beforeDestroy() {
    this.onDragEnd();
  }
};
</script>
@@ -156,6 +219,12 @@
  max-height: 100%;
  transition: transform 0.2s ease;
  transform-origin: center center;
  cursor: grab;
  user-select: none;
}
.attachment-preview-pane__image.is-dragging {
  cursor: grabbing;
  transition: none;
}
.attachment-preview-pane__pdf {
  flex: 1 1 auto;
src/components/FilePreview/index.vue
@@ -92,11 +92,13 @@
              <img
                :src="currentFile.previewUrl"
                class="file-preview__image"
                :style="{
                  transform:
                    'scale(' + imageScale + ') rotate(' + imageRotate + 'deg)'
                }"
                :class="{ 'is-dragging': imageDragging }"
                :style="imageStyle"
                draggable="false"
                alt="图片预览"
                @mousedown="startImageDrag"
                @click="toggleImageZoom"
                @dragstart.prevent
              />
            </div>
          </div>
@@ -158,12 +160,34 @@
      currentIndex: 0,
      imageScale: 1,
      imageRotate: 0,
      imageOffsetX: 0,
      imageOffsetY: 0,
      imageDragging: false,
      imageDragMoved: false,
      imageDragStartX: 0,
      imageDragStartY: 0,
      imageDragOriginX: 0,
      imageDragOriginY: 0,
      fullscreen: false
    };
  },
  computed: {
    currentFile() {
      return this.previewFiles[this.currentIndex] || null;
    },
    imageStyle() {
      return {
        transform:
          "translate(" +
          this.imageOffsetX +
          "px," +
          this.imageOffsetY +
          "px) scale(" +
          this.imageScale +
          ") rotate(" +
          this.imageRotate +
          "deg)"
      };
    }
  },
  methods: {
@@ -334,6 +358,41 @@
    resetImage() {
      this.imageScale = 1;
      this.imageRotate = 0;
      this.imageOffsetX = 0;
      this.imageOffsetY = 0;
    },
    startImageDrag(e) {
      if (e.button !== 0) return;
      this.imageDragging = true;
      this.imageDragMoved = false;
      this.imageDragStartX = e.clientX;
      this.imageDragStartY = e.clientY;
      this.imageDragOriginX = this.imageOffsetX;
      this.imageDragOriginY = this.imageOffsetY;
      document.addEventListener("mousemove", this.onImageDrag);
      document.addEventListener("mouseup", this.endImageDrag);
    },
    onImageDrag(e) {
      if (!this.imageDragging) return;
      const dx = e.clientX - this.imageDragStartX;
      const dy = e.clientY - this.imageDragStartY;
      if (Math.abs(dx) > 3 || Math.abs(dy) > 3) {
        this.imageDragMoved = true;
      }
      this.imageOffsetX = this.imageDragOriginX + dx;
      this.imageOffsetY = this.imageDragOriginY + dy;
    },
    endImageDrag() {
      this.imageDragging = false;
      document.removeEventListener("mousemove", this.onImageDrag);
      document.removeEventListener("mouseup", this.endImageDrag);
    },
    toggleImageZoom() {
      if (this.imageDragMoved) {
        this.imageDragMoved = false;
        return;
      }
      this.imageScale = this.imageScale === 1 ? 1.5 : 1;
    },
    handleDownload() {
      const file = this.currentFile;
@@ -357,6 +416,7 @@
      }
    },
    handleClosed() {
      this.endImageDrag();
      this.revokeUrls();
      this.previewFiles = [];
      this.fileList = [];
@@ -373,6 +433,7 @@
    }
  },
  beforeDestroy() {
    this.endImageDrag();
    this.revokeUrls();
  }
};
@@ -430,6 +491,12 @@
  max-height: 100%;
  transition: transform 0.2s ease;
  transform-origin: center center;
  cursor: grab;
  user-select: none;
}
.file-preview__image.is-dragging {
  cursor: grabbing;
  transition: none;
}
.file-preview__image-pane {
  width: 100%;
src/main.js
@@ -144,7 +144,7 @@
Vue.config.productionTip = false
// 前端构建标识:用于确认浏览器实际加载的是哪一版代码
window.__APP_BUILD__ = '2026-11-03-PDF-PREVIEW-15'
window.__APP_BUILD__ = '2026-11-03-PDF-PREVIEW-17'
const app = new Vue({
  el: '#app',
src/views/project/donatebaseinfo/index.vue
@@ -181,7 +181,7 @@
      border
      :default-sort="{ prop: 'donatetime', order: 'descending' }"
    >
      <!-- <el-table-column label="报告时间" align="center" prop="id" /> -->
      <!-- <el-table-column type="selection" width="55" align="center" /> -->
      <el-table-column
        label="案例时间"
@@ -224,7 +224,7 @@
      <el-table-column
        label="医疗机构"
        align="center"
        prop="treatmenthospitalname" width="220"
        prop="treatmenthospitalname" width="250"
      />
      <el-table-column label="血型" align="center" prop="bloodtype" width="80">
        <template slot-scope="scope">
@@ -254,14 +254,18 @@
        prop="reportername"
        width="100"
      />
      <el-table-column prop="reporttime" label="报告时间">
  <template slot-scope="scope">
    {{ scope.row.reporttime ? parseTime(scope.row.reporttime, "{y}-{m}-{d}") : "" }}
  </template>
</el-table-column>
         <el-table-column
        label="现所在地市"
        align="center"
        prop="registercityname"
        width="150"
      />
      <el-table-column
      <!-- <el-table-column
        label="捐献进度"
        align="center"
        prop="recordstate"
@@ -273,7 +277,7 @@
            :value="scope.row.recordstate"
          />
        </template>
      </el-table-column>
      </el-table-column> -->
     
      <el-table-column
        label="捐献进度"
src/views/project/statistics/chargeStatistics/index.vue
@@ -81,7 +81,7 @@
      show-summary
    >
      <el-table-column label="序号" align="center" prop="id" width="80" />
      <el-table-column label="医院名称" align="center" prop="hospitalname" show-overflow-tooltip width="260" />
      <el-table-column label="汇款医院" align="center" prop="hospitalname" show-overflow-tooltip width="260" />
      <el-table-column label="应收金额" align="center" prop="organcharge" width="160" :formatter="amountFormatter" />
      <el-table-column label="已收金额" align="center" prop="amount" width="160">
        <template slot-scope="scope">
@@ -160,7 +160,7 @@
        />
      </el-table>
      <pagination
        v-show="detailTotal > 0"
        v-show="detailTotal = 0"
        :total="detailTotal"
        :page.sync="detailQuery.pageNum"
        :limit.sync="detailQuery.pageSize"
src/views/project/unitCost/index.vue
@@ -42,7 +42,7 @@
          <span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
        </template>
      </el-table-column>
      <el-table-column label="申请单号" align="center" prop="paymentno" />
      <el-table-column label="申请单号" align="center" prop="paymentno" width="250" />
      <el-table-column label="医疗机构" width="180" align="center" prop="hospitalname" />
      <el-table-column label="付款状态" align="center" prop="paystatus">
@@ -53,7 +53,7 @@
      <el-table-column label="应收金额" align="center" prop="receivableamount" />
      <el-table-column label="实收金额" align="center" prop="receivedamount" />
      <el-table-column label="收款日期" width="180" align="center" prop="receivedtime"><template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
          <span>{{ parseTime(scope.row.receivedtime, "{y}-{m}-{d}") }}</span>
        </template>
      </el-table-column>
      <el-table-column label="经办人" align="center" prop="userName" />
src/views/project/unitCost/organfee/index.vue
@@ -8,10 +8,10 @@
      v-show="showSearch"
      label-width="90px"
    >
      <el-form-item label="付款医院" prop="hospitalno">
      <el-form-item label="回款医院" prop="hospitalno">
        <el-select
          v-model="queryParams.hospitalno"
          placeholder="请选择付款医院"
          placeholder="请选择回款医院"
          clearable
          filterable
          size="small"
@@ -25,14 +25,17 @@
          />
        </el-select>
      </el-form-item>
      <el-form-item label="捐献者" prop="donorname">
        <el-input
          v-model="queryParams.donorname"
          placeholder="请输入捐献者姓名"
      <el-form-item label="回款状态" prop="payStatus">
        <el-select
          v-model="queryParams.payStatus"
          placeholder="请选择回款状态"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
          style="width: 140px"
        >
          <el-option label="已付" value="已付" />
          <el-option label="未付" value="未付" />
        </el-select>
      </el-form-item>
      <el-form-item label="捐献日期">
        <el-date-picker
@@ -46,6 +49,31 @@
          size="small"
          @change="handleDonatetimeChange"
        />
      </el-form-item>
      <el-form-item label="捐献者" prop="donorname">
        <el-input
          v-model="queryParams.donorname"
          placeholder="请输入捐献者姓名"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="利用状态" prop="organState">
        <el-select
          v-model="queryParams.organState"
          placeholder="请选择器官状态"
          clearable
          size="small"
          style="width: 160px"
        >
          <el-option
            v-for="item in organStateList"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          />
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button
@@ -120,29 +148,21 @@
        width="120"
        align="center"
      />
      <el-table-column
        prop="payOrganName"
        label="付款器官名称"
        width="140"
        align="center"
        show-overflow-tooltip
      />
      <el-table-column
        prop="caseno"
        label="器官分配编号"
        label="器官编号"
        align="center"
        show-overflow-tooltip
      />
      <el-table-column prop="name" label="受体" width="120" align="center" />
      <el-table-column label="器官状态" width="120" align="center">
      <el-table-column label="利用状态" width="120" align="center">
        <template slot-scope="scope">
          <span>{{ selectOrganState(scope.row.organState) }}</span>
        </template>
      </el-table-column>
       <el-table-column
        prop="hospitalname"
        label="付款医院"
        label="回款医院"
        width="200"
        align="center"
      />
@@ -152,7 +172,7 @@
        width="120"
        align="center"
      />
      <el-table-column label="付款状态" width="100" align="center">
      <el-table-column label="回款状态" width="100" align="center">
        <template slot-scope="scope">
          <span>{{ payStatus(scope.row) }}</span>
        </template>
@@ -163,17 +183,25 @@
        width="120"
        align="center"
      />
      <el-table-column label="未付金额" width="160" align="center">
      <el-table-column label="未回款金额" width="160" align="center">
        <template slot-scope="scope">
          <span>{{ formatReceivableDiff(scope.row) }}</span>
        </template>
      </el-table-column>
      
      <el-table-column label="收款日期" width="120" align="center">
      <el-table-column label="回款日期" width="120" align="center">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.organtime, "{y}-{m}-{d}") }}</span>
        </template>
      </el-table-column>
      <el-table-column prop="name" label="受体" width="120" align="center" />
      <el-table-column
        prop="payOrganName"
        label="器官名称-结算"
        width="140"
        align="center"
        show-overflow-tooltip
      />
      <el-table-column
        prop="organchargedesc"
        label="备注"
@@ -191,7 +219,6 @@
            type="text"
            icon="el-icon-edit"
            @click="handleEdit(scope.row)"
            v-hasPermi="['project:donorchargeorgan:edit']"
            >修改</el-button
          >
          <el-button
@@ -199,14 +226,12 @@
            type="text"
            icon="el-icon-check"
            @click="handleCharge(scope.row)"
            v-hasPermi="['project:donorchargeorgan:edit']"
            >已收费</el-button
          >
          <el-button
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['project:donorchargeorgan:edit']"
            >删除</el-button
          >
        </template>
@@ -223,7 +248,7 @@
    <!-- 修改器官状态、备注 -->
    <el-dialog
      title="修改器官信息"
      title="修改器官回款信息"
      :visible.sync="editOpen"
      width="760px"
      append-to-body
@@ -232,10 +257,10 @@
      <el-form ref="editForm" :model="editForm" label-width="110px">
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="付款医院" prop="hospitalno">
            <el-form-item label="回款医院" prop="hospitalno">
              <el-select
                v-model="editForm.hospitalno"
                placeholder="请选择付款医院"
                placeholder="请选择回款医院"
                clearable
                filterable
                style="width: 100%"
@@ -251,20 +276,20 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="付款器官名称" prop="payOrganName">
            <el-form-item label="(结算)器官名称" prop="payOrganName">
              <el-input
                v-model="editForm.payOrganName"
                maxlength="100"
                placeholder="请输入付款器官名称"
                placeholder="请输入(结算)器官名称"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="器官分配编号" prop="caseno">
            <el-form-item label="(国家)器官编号" prop="caseno">
              <el-input
                v-model="editForm.caseno"
                maxlength="50"
                placeholder="请输入器官分配编号"
                placeholder="请输入国家器官分配编号"
              />
            </el-form-item>
          </el-col>
@@ -278,10 +303,10 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="器官状态" prop="organState">
            <el-form-item label="利用状态" prop="organState">
              <el-select
                v-model="editForm.organState"
                placeholder="请选择器官状态"
                placeholder="请选择器官利用状态"
                style="width: 100%"
              >
                <el-option
@@ -562,6 +587,8 @@
        pageSize: 10,
        hospitalno: null,
        donorname: null,
        organState: null,
        payStatus: null,
        paymentid: null,
        // false:走 queryListBypaymentidIsNull,即未收齐费用的器官
        paymentidIsNotNull: false,
@@ -803,6 +830,8 @@
      this.donatetimeRange = [];
      this.queryParams.hospitalno = null;
      this.queryParams.donorname = null;
      this.queryParams.organState = null;
      this.queryParams.payStatus = null;
      this.queryParams.starttime = null;
      this.queryParams.endtime = null;
      this.queryParams.pageNum = 1;