yxh
19 小时以前 531d433ab95e1c5ca48637eca9dc157380f675c0
修改了个税功能
已删除1个文件
已修改20个文件
已添加1个文件
4225 ■■■■■ 文件已修改
src/assets/styles/money.scss 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/money.js 248 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/applyDetail/index.vue 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/applyDetail0/index.vue 3427 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/ethicalExpertFeeApply/index.vue 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/expertFeeApply/index.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/index.vue 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/medicalCostApply/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/officeExpenseApply/index.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/performanceApply/index.vue 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/performancedetails/index.vue 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fundcheck/ethicalExpertFeeCheck/index.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fundcheck/expertFeeCheck/index.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fundcheck/medicalCostCheck/index.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fundcheck/officeExpenseCheck/index.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fundcheck/performanceCheck/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/tallage/computingBill/index.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/tallage/index.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/travelexpenseapply/index.vue 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/travelexpenseapply/travelexpensedetail/index.vue 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/travelexpensecheck/index.vue 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/styles/money.scss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
/* é‡‘额列/金额输入框统一右对齐 */
.money-column .cell {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.money-input .el-input__inner,
.money-input .el-input-number__decrease,
.money-input .el-input-number__increase {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
src/main.js
@@ -19,6 +19,7 @@
import '@/assets/styles/theme-runtime.scss'
import '@/assets/styles/element-override.scss'
import '@/assets/styles/pdf-resize-dialog.scss'
import '@/assets/styles/money.scss'
import App from './App'
import FilePreview from '@/components/FilePreview/index.vue'
import store from './store'
@@ -46,6 +47,7 @@
// å›¾ç‰‡ä¸Šä¼ ç»„ä»¶
import ImageUpload from "@/components/ImageUpload"
import AttachmentPreviewPane from "@/components/AttachmentPreviewPane/index.vue"
import { formatMoneyValue, moneyColumnFormatter } from '@/utils/money'
// å­—典标签组件
import DictTag from '@/components/DictTag'
// å¤´éƒ¨æ ‡ç­¾ç»„ä»¶
@@ -104,6 +106,13 @@
    }
  },
  methods: {
    formatMoneyValue,
    formatMoney: moneyColumnFormatter,
    normalizeMoney(row, key) {
      if (row && key) {
        row[key] = formatMoneyValue(row[key])
      }
    },
    openEmbeddedPreview(item) {
      if (!item) return
      const ext = String(item.name || '').toLowerCase().split('.').pop()
@@ -144,7 +153,7 @@
Vue.config.productionTip = false
// å‰ç«¯æž„建标识:用于确认浏览器实际加载的是哪一版代码
window.__APP_BUILD__ = '2026-11-03-PDF-PREVIEW-18'
window.__APP_BUILD__ = '2026-11-12-MONEY-1'
const app = new Vue({
  el: '#app',
@@ -168,3 +177,22 @@
  }
  fallbackPreview.open(files, index)
}
// é‡‘额列内可编辑输入框失焦后统一两位小数
document.addEventListener('focusout', e => {
  const target = e.target
  if (!target || target.tagName !== 'INPUT') return
  if (!target.closest('.money-column')) return
  const raw = String(target.value || '').trim()
  if (raw === '') return
  const num = Number(raw)
  if (!Number.isFinite(num)) return
  const text = num.toFixed(2)
  if (target.value === text) return
  const setter = Object.getOwnPropertyDescriptor(
    window.HTMLInputElement.prototype,
    'value'
  ).set
  setter.call(target, text)
  target.dispatchEvent(new Event('input', { bubbles: true }))
})
src/utils/money.js
@@ -1,240 +1,22 @@
/**
 * é‡‘额计算工具
 *
 * èƒŒæ™¯ï¼šæœ¬ç³»ç»Ÿé‡‘额一律以「元」为单位、保留 2 ä½å°æ•°ï¼Œå±žè´¢åŠ¡æ•°æ®ã€‚
 * JS çš„ Number æ˜¯ IEEE-754 åŒç²¾åº¦æµ®ç‚¹ï¼Œç›´æŽ¥åšåŠ å‡ä¹˜ä¼šå¼•å…¥äºŒè¿›åˆ¶èˆå…¥è¯¯å·®ï¼Œ
 * å…¸åž‹è¡¨çŽ°ï¼š
 *   0.1 + 0.2        -> 0.30000000000000004
 *   1.1 * 3          -> 3.3000000000000003
 *   0.3 - 0.2 - 0.1  -> -2.7755575615628914e-17   ï¼ˆé€€è´¹/扣税相减后残留尾差)
 * è¿™ç±»å°¾å·®å¯¼è‡´ã€Œåˆè®¡å¯¹ä¸ä¸Šã€ã€Œé‡‘额显示为 -0」「相等判断失败」等线上问题,
 * ä¸”会随单据流转被写入数据库,事后难以追溯。
 *
 * å› æ­¤ï¼šæ‰€æœ‰é‡‘额运算统一走本模块,禁止直接对金额使用 + - * / ä¸Ž parseFloat ç´¯åŠ ã€‚
 * å†…部基于 decimal.js(package.json å·²å¼•入),保证十进制精确运算。
 *
 * ç”¨æ³•示例:
 *   import { moneySum, moneyMul, moneySub, moneyRound, moneyEq } from "@/utils/money";
 *
 *   // ç´¯åŠ æ˜Žç»†ï¼ˆè¿‡æ»¤éžæ•°å­—ä¸Žç©ºå€¼ï¼Œä¸ä¼šæŠŠ NaN ä¼ æŸ“给合计)
 *   const total = moneySum(this.rbDetails, "amount");
 *
 *   // å•ä»· Ã— æ•°é‡
 *   const preTax = moneyMul(row.price, row.quantity);
 *
 *   // ç¨Žå‰ - æ‰£ç¨Ž = ç¨ŽåŽ
 *   const afterTax = moneySub(row.amount, row.taxamount);
 *
 *   // è½åº“/展示前统一保留 2 ä½ï¼ˆå››èˆäº”入)
 *   this.form.amountrequested = moneyRound(total);
 *
 *   // é‡‘额比较(勿用 == / === æˆ– parseFloat åŽç›¸å‡ï¼‰
 *   if (!moneyEq(sumOfPayees, this.form.amountrequested)) { ... }
 * é‡‘额展示格式化:
 * - null/undefined/空串保持空;
 * - 0 æ˜¾ç¤º 0.00;
 * - æ•°å­—统一两位小数;
 * - éžæ•°å­—原样返回,避免把异常数据吞掉。
 */
import Decimal from 'decimal.js'
/** é‡‘额保留小数位 */
export const MONEY_SCALE = 2
/**
 * è½¬ä¸º Decimal;无法识别的值(空串/undefined/null/NaN/非数字)一律按 0 å¤„理。
 * æŒ‰ 0 å¤„理而非抛错,是为了保持既有页面「!isNaN(parseFloat(x)) æ‰ç´¯åŠ ã€çš„è¡Œä¸ºï¼Œ
 * åŒæ—¶é¿å… NaN æ±¡æŸ“整条合计链。
 *
 * @param {string|number|Decimal|null|undefined} value
 * @returns {Decimal}
 */
export function toMoney(value) {
  if (value === null || value === undefined || value === '') {
    return new Decimal(0)
export function formatMoneyValue(value) {
  if (value === null || value === undefined || value === "") {
    return "";
  }
  if (value instanceof Decimal) {
    return value
  const num = Number(value);
  if (!Number.isFinite(num)) {
    return value;
  }
  let d
  try {
    d = new Decimal(value)
  } catch (e) {
    return new Decimal(0)
  }
  return d.isFinite() ? d : new Decimal(0)
  return num.toFixed(2);
}
/**
 * åˆ¤æ–­æ˜¯å¦ä¸ºæœ‰æ•ˆé‡‘额(可参与计算)。用于原本 !isNaN(parseFloat(x)) çš„æ ¡éªŒåœºæ™¯ã€‚
 *
 * @param {*} value
 * @returns {boolean}
 */
export function isValidMoney(value) {
  if (value === null || value === undefined || value === '') {
    return false
  }
  if (value instanceof Decimal) {
    return value.isFinite()
  }
  if (typeof value === 'number') {
    return Number.isFinite(value)
  }
  const s = String(value).trim()
  if (s === '') {
    return false
  }
  try {
    return new Decimal(s).isFinite()
  } catch (e) {
    return false
  }
}
/**
 * ç´¯åŠ æ±‚å’Œã€‚
 *
 * @param {Array} list å¾…累加的数组
 * @param {string|Function} [selector] å–金额的方式:
 *        å­—符串 -> å–该项的该属性名,如 "amount";
 *        å‡½æ•°   -> ç”¨è¿”回值,如 (item) => item.detail && item.detail.amount;
 *        çœç•¥   -> ç›´æŽ¥ç´¯åŠ æ•°ç»„å…ƒç´ æœ¬èº«ã€‚
 * @returns {number} æ±‚和结果(Number,便于赋值给表单字段)
 */
export function moneySum(list, selector) {
  if (!Array.isArray(list) || list.length === 0) {
    return 0
  }
  let acc = new Decimal(0)
  for (let i = 0; i < list.length; i++) {
    const raw =
      selector === undefined
        ? list[i]
        : typeof selector === 'function'
          ? selector(list[i])
          : list[i][selector]
    acc = acc.plus(toMoney(raw))
  }
  return acc.toNumber()
}
/**
 * æ±‚和后保留 2 ä½å°æ•°ï¼ˆä¼˜å…ˆåœ¨å±•示/落库时使用)。
 */
export function moneySumRound(list, selector) {
  return roundNumber(moneySum(list, selector))
}
/**
 * ç²¾ç¡®åŠ æ³•ã€‚æ”¯æŒå¤šå‚æ•°æˆ–æ•°ç»„ï¼šmoneyAdd(1.1, 2.2) / moneyAdd([1.1, 2.2])
 */
export function moneyAdd(...args) {
  const list = args.length === 1 && Array.isArray(args[0]) ? args[0] : args
  let acc = new Decimal(0)
  list.forEach((v) => {
    acc = acc.plus(toMoney(v))
  })
  return acc.toNumber()
}
/**
 * ç²¾ç¡®å‡æ³• a - b(可传多个:a - b - c)
 */
export function moneySub(a, ...rest) {
  let acc = toMoney(a)
  rest.forEach((v) => {
    acc = acc.minus(toMoney(v))
  })
  return acc.toNumber()
}
/**
 * ç²¾ç¡®ä¹˜æ³•(单价 Ã— æ•°é‡ã€é‡‘额 Ã— ç¨ŽçŽ‡ï¼‰
 */
export function moneyMul(a, ...rest) {
  let acc = toMoney(a)
  rest.forEach((v) => {
    acc = acc.times(toMoney(v))
  })
  return acc.toNumber()
}
/**
 * ç²¾ç¡®é™¤æ³•(金额 Ã· æ•°é‡ï¼‰ï¼ŒdivideBy ä¸º 0 æ—¶è¿”回 0,不产生 Infinity
 */
export function moneyDiv(a, b) {
  const divisor = toMoney(b)
  if (divisor.isZero()) {
    return 0
  }
  return toMoney(a).div(divisor).toNumber()
}
/**
 * é‡‘额是否相等(十进制精确比较,不受浮点尾差影响)。
 * ä¼šè‡ªåŠ¨å½’ä¸€åŒ–åˆ° 2 ä½ï¼Œé¿å… 100 ä¸Ž 100.001 è¿™ç±»è¾¹ç•Œè¯¯åˆ¤ã€‚
 *
 * @returns {boolean}
 */
export function moneyEq(a, b) {
  return roundDecimal(a).eq(roundDecimal(b))
}
/**
 * é‡‘额大小比较:a > b è¿”回 1,a < b è¿”回 -1,相等返回 0
 */
export function moneyCmp(a, b) {
  return roundDecimal(a).cmp(roundDecimal(b))
}
/**
 * ä¿ç•™ 2 ä½å°æ•°å¹¶è¿”回 Number(四舍五入,ROUND_HALF_UP)。
 * ç”¨äºŽèµ‹å€¼ç»™è¡¨å•字段、参与后端交互。
 *
 * @param {*} value
 * @param {number} [scale=2]
 * @returns {number}
 */
export function moneyRound(value, scale = MONEY_SCALE) {
  return roundDecimal(value, scale).toNumber()
}
/**
 * ä¿ç•™ 2 ä½å°æ•°å¹¶è¿”回字符串(用于金额展示,避免大额时出现科学计数法)。
 *
 * @param {*} value
 * @param {number} [scale=2]
 * @returns {string}
 */
export function moneyText(value, scale = MONEY_SCALE) {
  return roundDecimal(value, scale).toFixed(scale)
}
/**
 * ä¿ç•™ 2 ä½å°æ•°å¹¶è¿”回 Decimal,供后续继续精确运算
 */
export function moneyDecimal(value, scale = MONEY_SCALE) {
  return roundDecimal(value, scale)
}
function roundDecimal(value, scale = MONEY_SCALE) {
  return toMoney(value).toDecimalPlaces(scale, Decimal.ROUND_HALF_UP)
}
// moneySum å†…部已返回 Number,这里统一走同一套四舍五入
function roundNumber(value) {
  return roundDecimal(value).toNumber()
}
export default {
  MONEY_SCALE,
  toMoney,
  isValidMoney,
  moneySum,
  moneySumRound,
  moneyAdd,
  moneySub,
  moneyMul,
  moneyDiv,
  moneyEq,
  moneyCmp,
  moneyRound,
  moneyText,
  moneyDecimal
/** el-table-column formatter ç­¾åï¼š(row, column, cellValue, index) */
export function moneyColumnFormatter(row, column, cellValue) {
  return formatMoneyValue(cellValue);
}
src/views/project/fund/applyDetail/index.vue
@@ -49,7 +49,7 @@
          </el-col>
          <el-col :span="5" v-if="ismanager == true">
            <el-form-item label="申请金额" prop="pretaxcost">
              <el-input v-model="form.pretaxcost" placeholder="税前金额合计" :disabled="true" />
              <el-input :value="formatMoneyValue(form.pretaxcost)" class="money-input" placeholder="税前金额合计" :disabled="true" />
            </el-form-item>
          </el-col>
          <el-col :span="5">
@@ -124,7 +124,7 @@
        </el-row>
        <el-row>
          <el-table :data="rbDetails" v-loading="loading" max-height="800" border highlight-current-row>
            <el-table-column prop="orderno" align="center" label="序号" width="88">
            <el-table-column prop="orderno" align="center" label="序号" width="75">
              <template slot-scope="scope">
                <el-input v-model="scope.row.orderno" placeholder="序号" />
              </template>
@@ -155,7 +155,7 @@
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="price" align="center" label="单价" width="120" v-if="businessType == 4">
            <el-table-column prop="price" align="right" header-align="right" label="单价" width="120" v-if="businessType == 4" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.price" placeholder="单价" @blur="
                  val => {
@@ -173,23 +173,29 @@
                " />
              </template>
            </el-table-column>
            <el-table-column prop="amount" align="center" :label="amountlabel" width="120">
            <el-table-column prop="amount" align="right" header-align="right" class-name="money-column" :label="amountlabel" width="120" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.amount" placeholder="金额" />
                <el-input v-model="scope.row.amount" class="money-input" placeholder="金额" @blur="normalizeMoney(scope.row, 'amount')" />
              </template>
            </el-table-column>
            <el-table-column prop="taxamount" align="center" label="劳务个税" width="120" v-if="
            <el-table-column prop="vatAmount" align="right" header-align="right" class-name="money-column" label="增值税" width="110" :formatter="formatMoney"
              v-if="businessType == '1'" />
            <el-table-column prop="cityTaxAmount" align="right" header-align="right" class-name="money-column" label="城建税" width="110" :formatter="formatMoney"
              v-if="businessType == '1'" />
            <el-table-column prop="laborPretaxAmount" align="right" header-align="right" class-name="money-column" label="劳务税前" width="120" :formatter="formatMoney"
              v-if="businessType == '1'" />
            <el-table-column prop="taxamount" align="right" header-align="right" class-name="money-column" label="劳务个税" width="120" v-if="
              ismanager == true &&
              (businessType == '1' || businessType == '2')
            ">
            " :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.taxamount" placeholder="劳务个税" />
                <el-input v-model="scope.row.taxamount" class="money-input" placeholder="劳务个税" @blur="normalizeMoney(scope.row, 'taxamount')" />
              </template>
            </el-table-column>
            <el-table-column prop="taxedamount" align="center" label="劳务税后" width="120"
              v-if="businessType == '1' || businessType == '2'">
            <el-table-column prop="taxedamount" align="right" header-align="right" class-name="money-column" label="劳务税后" width="120"
              v-if="businessType == '1' || businessType == '2'" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.taxedamount" placeholder="劳务税后" />
                <el-input v-model="scope.row.taxedamount" class="money-input" placeholder="劳务税后" @blur="normalizeMoney(scope.row, 'taxedamount')" />
              </template>
            </el-table-column>
            <el-table-column prop="beneficiaryname" column-key="sdad" align="center" :label="beneficiarylabel"
@@ -283,7 +289,7 @@
              <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="fileListto"
                :show-file-list="false" multiple drag :headers="headers" :on-success="(response, file, fileList) =>
                  uploadSccess(response, file, fileList)
                  " :on-preview="downFile" :disabled="operationType == 'detail'" :on-error="handleUploadError"
                  " :on-preview="downFile" :disabled="operationType == 'detail'" :on-error="handleUploadError" :before-upload="beforeUploadCheck"
                :on-remove="remove" accept="image/*,.pdf">
                <i class="el-icon-upload"></i>
                <div class="el-upload__text">
@@ -291,7 +297,14 @@
                  <em><el-button :disabled="operationType == 'detail'" size="small" type="primary">点击上传</el-button></em>
                </div>
              </el-upload>
              <el-table :data="fileListto" @row-click="downFile" style="width: 100%" height="400">
              <div
                v-if="operationType == 'detail'"
                class="upload-disabled-tip"
              >
                <i class="el-icon-warning-outline" />
                å½“前为查看模式,不能上传附件
              </div>
              <el-table ref="annexTable" :data="fileListto" :row-class-name="annexRowClass" @row-click="downFile" style="width: 100%" height="400">
                <el-table-column prop="name" :show-overflow-tooltip="true" label="名称">
                  <template slot-scope="scope">
                    <i style="color:#409EFF" class=" el-icon-s-order" />{{
@@ -536,13 +549,13 @@
      />
      <div style="margin-bottom: 10px;">
        <el-table :data="tableDatatop" style="width: 100%">
          <el-table-column v-if="businessType == 4" prop="price" align="center" label="单价">
          <el-table-column v-if="businessType == 4" prop="price" align="right" header-align="right" class-name="money-column" label="单价" :formatter="formatMoney">
          </el-table-column>
          <el-table-column prop="quantity" align="center" label="数量" v-if="businessType == 4">
          </el-table-column>
          <el-table-column prop="amount" align="center" :label="amountlabel">
          <el-table-column prop="amount" align="right" header-align="right" class-name="money-column" :label="amountlabel" :formatter="formatMoney">
          </el-table-column>
          <el-table-column prop="taxedamount" align="center" label="劳务税后" v-if="
          <el-table-column prop="taxedamount" align="right" header-align="right" class-name="money-column" label="劳务税后" :formatter="formatMoney" v-if="
            (this.ismanager == true) &
            (form.applytype == '1' || form.applytype == '2')
          ">
@@ -587,7 +600,7 @@
                <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="fileListto"
                  :show-file-list="false" multiple drag :headers="headers" :on-success="(response, file, fileList) =>
                    uploadSccess(response, file, fileList)
                    " :on-preview="downFile" :disabled="operationType == 'detail'" :on-error="handleUploadError"
                    " :on-preview="downFile" :disabled="operationType == 'detail'" :on-error="handleUploadError" :before-upload="beforeUploadCheck"
                  :on-remove="remove" accept="image/*,.pdf">
                  <i class="el-icon-upload"></i>
                  <div class="el-upload__text">
@@ -596,7 +609,14 @@
                        type="primary">点击上传</el-button></em>
                  </div>
                </el-upload>
                <el-table :data="fileListto" @row-click="downFile" style="width: 100%" height="400">
              <div
                v-if="operationType == 'detail'"
                class="upload-disabled-tip"
              >
                <i class="el-icon-warning-outline" />
                å½“前为查看模式,不能上传附件
              </div>
                <el-table ref="annexTable2" :data="fileListto" :row-class-name="annexRowClass" @row-click="downFile" style="width: 100%" height="400">
                  <el-table-column prop="name" :show-overflow-tooltip="true" label="名称">
                    <template slot-scope="scope">
                      <i style="color:#409EFF" class=" el-icon-s-order" />
@@ -628,7 +648,7 @@
                <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="invoicefileList"
                  :show-file-list="false" multiple drag :headers="headers" :on-success="(response, file, fileList) =>
                    uploadSccess(response, file, fileList)
                    " :on-preview="downFile" :disabled="operationType == 'detail'" :on-error="handleUploadError"
                    " :on-preview="downFile" :disabled="operationType == 'detail'" :on-error="handleUploadError" :before-upload="beforeUploadCheck"
                  :on-remove="remove" accept="image/*,.pdf">
                  <i class="el-icon-upload"></i>
                  <div class="el-upload__text">
@@ -637,7 +657,14 @@
                        type="primary">点击上传</el-button></em>
                  </div>
                </el-upload>
                <el-table :data="invoicefileListto" @row-click="downFile" style="width: 100%" height="400">
              <div
                v-if="operationType == 'detail'"
                class="upload-disabled-tip"
              >
                <i class="el-icon-warning-outline" />
                å½“前为查看模式,不能上传附件
              </div>
                <el-table ref="invoiceTable" :data="invoicefileListto" :row-class-name="invoiceRowClass" @row-click="downFile" style="width: 100%" height="400">
                  <el-table-column prop="name" :show-overflow-tooltip="true" label="名称">
                    <template slot-scope="scope">
                      <i style="color:#409EFF" class=" el-icon-s-order" />
@@ -1112,6 +1139,9 @@
      fileListto: [],
      invoicefileList: [],
      invoicefileListto: [],
      // 2026-11-10:新上传附件行高亮用(附件 / å‘票)
      flashAnnexName: "",
      flashInvoiceName: "",
      invoicepdfimg: "",
      invoicepdfimgsrcList: [],
      invoDatatop: [],
@@ -2950,7 +2980,97 @@
    invoicehandleViewerClose() {
      this.invoiceviewerVisible = false;
    },
    handleUploadError() { },
    /**
     * 2026-11-10:上传前置校验(before-upload)
     * åŽŸå®žçŽ°æŠŠæ–‡ä»¶åæ ¡éªŒæ”¾åœ¨ on-success,文件**已经传到服务器**才判断,
     * ä¸åˆæ ¼å°±ç›´æŽ¥ä¸¢å¼ƒ â†’ æœåŠ¡å™¨ç•™åžƒåœ¾æ–‡ä»¶ã€ç•Œé¢åªé—ªä¸€ä¸‹æç¤ºï¼Œç”¨æˆ·æ„Ÿè§‰"没反应"。
     * è¿™é‡Œå‰ç§»åˆ°ä¸Šä¼ å‰ï¼Œä¸åˆæ ¼ç›´æŽ¥ä¸å‘请求。
     * @returns {boolean} false é˜»æ­¢ä¸Šä¼ 
     */
    beforeUploadCheck(file) {
      if (this.operationType === "detail") {
        this.$modal.msgError("当前为查看模式,不能上传附件");
        return false;
      }
      return this.checkUploadFileName(file);
    },
    /**
     * 2026-11-10:上传结果异常时的统一提示
     * åŽç«¯ /common/upload å‡ºé”™æ—¶è¿”回 HTTP 200 + code 500/401,el-upload ä¼šèµ° on-success,
     * å¿…须在这里给出明确提示,否则用户看不到任何反馈。
     */
    notifyUploadFail(response) {
      const code = response && response.code;
      const msg = (response && response.msg) || "未知错误";
      if (code === 401 || code === 403) {
        this.$modal.msgError("登录已过期,请重新登录后再上传附件");
        return;
      }
      this.$modal.msgError("上传失败:" + msg);
    },
    /**
     * 2026-11-10:上传失败(HTTP éž 2xx / æ–­ç½‘ / è¢«ç½‘关拦截等)
     * åŽŸå®žçŽ°æ˜¯ç©ºå‡½æ•° `handleUploadError() { }`,失败时完全没有提示。
     */
    handleUploadError(err, file, fileList) {
      const status = err && err.status;
      const fileName = (file && file.name) || "文件";
      if (status === 401 || status === 403) {
        this.$modal.msgError("登录已过期,请重新登录后再上传附件");
        return;
      }
      let msg = "上传失败";
      if (status) {
        msg += ":HTTP " + status + "(可能是文件过大或网络异常)";
      } else if (err && err.message) {
        msg += ":" + err.message;
      }
      this.$modal.msgError(msg + ",文件:" + fileName);
    },
    /** æ–°ä¸Šä¼ è¡Œé«˜äº®ï¼šé™„件表 */
    annexRowClass({ row }) {
      return row && row.name === this.flashAnnexName ? "row-flash" : "";
    },
    /** æ–°ä¸Šä¼ è¡Œé«˜äº®ï¼šå‘票表 */
    invoiceRowClass({ row }) {
      return row && row.name === this.flashInvoiceName ? "row-flash" : "";
    },
    /**
     * 2026-11-10:新上传附件定位 â€”— é«˜äº® + æ»šåŠ¨åˆ°è¡¨æ ¼åº•éƒ¨
     * @param {string} refName è¡¨æ ¼ ref
     * @param {string} name æ–‡ä»¶åï¼ˆç”¨äºŽ row-class-name åŒ¹é…ï¼‰
     * @param {string} kind annex | invoice
     */
    flashTable(refName, name, kind) {
      if (kind === "annex") {
        this.flashAnnexName = name;
      } else {
        this.flashInvoiceName = name;
      }
      this.$nextTick(() => {
        const table = this.$refs[refName];
        const wrap =
          table && table.$el
            ? table.$el.querySelector(".el-table__body-wrapper")
            : null;
        if (wrap) {
          wrap.scrollTop = wrap.scrollHeight;
        }
      });
      setTimeout(() => {
        if (kind === "annex") {
          this.flashAnnexName = "";
        } else {
          this.flashInvoiceName = "";
        }
      }, 2000);
    },
    remove(file, fileList) {
      const rbDetails = [...this.rbDetails];
      if (this.activeName == "common") {
@@ -3036,8 +3156,12 @@
            url: response.fileName
          });
          this.pdftitle = "共" + this.pdfimgsrcList.length + "项";
          // 2026-11-10:新行高亮并滚动到可见位置,避免"看不出有反应"
          this.flashTable("annexTable", file.name, "annex");
          this.flashTable("annexTable2", file.name, "annex");
        } else {
          console.log(response.msg);
          // 2026-11-10:后端返回 HTTP 200 + éž 200 ä¸šåŠ¡ç æ—¶ï¼ŒåŽŸæ¥åª console.log,界面无提示
          this.notifyUploadFail(response);
        }
      } else {
        if (response.code == 200) {
@@ -3067,6 +3191,11 @@
            url: response.fileName
          });
          this.pdftitle = "共" + this.invoicepdfimgsrcList.length + "项";
          // 2026-11-10:新行高亮并滚动到可见位置
          this.flashTable("invoiceTable", file.name, "invoice");
        } else {
          // 2026-11-10:原来该分支没有 else,失败时完全无提示
          this.notifyUploadFail(response);
        }
      }
    },
@@ -3628,6 +3757,19 @@
  text-align: center;
}
/* 2026-11-10:查看模式下上传区的说明 + æ–°ä¸Šä¼ è¡Œé«˜äº® */
.upload-disabled-tip {
  margin-top: 6px;
  font-size: 13px;
  color: #e6a23c;
  text-align: center;
}
::v-deep .el-table .row-flash td {
  background-color: #e7f1f4 !important;
  transition: background-color 0.3s ease;
}
.pdfimg {
  display: flex; // text-align: center;
  width: 100%;
src/views/project/fund/applyDetail0/index.vue
ÎļþÒÑɾ³ý
src/views/project/fund/ethicalExpertFeeApply/index.vue
@@ -102,10 +102,10 @@
                />
                <el-table-column
                  label="申请金额"
                  align="center"
                  align="right" header-align="right"
                  prop="pretaxcost"
                  width="200px"
                />
                / class-name="money-column" :formatter="formatMoney">
                <el-table-column
                  label="所属组别"
                  align="center"
@@ -588,11 +588,11 @@
            </el-table-column>
            <el-table-column
              prop="amount"
              align="center"
              align="right" header-align="right"
              label="税前金额"
              width="120"
              v-if="form.applytype != 3"
            >
             class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.amount"
@@ -607,12 +607,33 @@
            </el-table-column>
            <el-table-column
              prop="vatAmount"
              align="right" header-align="right"
              label="增值税"
              width="110"
              v-if="form.applytype != '3'"
            / class-name="money-column" :formatter="formatMoney">
            <el-table-column
              prop="cityTaxAmount"
              align="right" header-align="right"
              label="城建税"
              width="110"
              v-if="form.applytype != '3'"
            / class-name="money-column" :formatter="formatMoney">
            <el-table-column
              prop="laborPretaxAmount"
              align="right" header-align="right"
              label="劳务税前"
              width="120"
              v-if="form.applytype != '3'"
            / class-name="money-column" :formatter="formatMoney">
            <el-table-column
              prop="taxedamount"
              align="center"
              align="right" header-align="right"
              label="劳务税后"
              width="120"
              v-if="form.applytype != '3'"
            >
             class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.taxedamount"
src/views/project/fund/expertFeeApply/index.vue
@@ -102,10 +102,10 @@
                />
                <!-- <el-table-column
                  label="申请金额"
                  align="center"
                  align="right" header-align="right"
                  prop="pretaxcost"
                  width="200px"
                /> -->
                / class-name="money-column" :formatter="formatMoney"> -->
                <el-table-column
                  label="捐献人"
                  align="center"
@@ -150,7 +150,7 @@
                  </template>
                </el-table-column>
                <!--
                <el-table-column label="申请金额" align="center" prop="amountrequested" width="120px" />
                <el-table-column label="申请金额" align="right" header-align="right" prop="amountrequested" width="120px" / class-name="money-column" :formatter="formatMoney">
                <el-table-column label="联系电话" align="center" prop="phone" width="150px" />
                <el-table-column label="工作单位" align="center" prop="unitname" width="220px" />
                -->
@@ -618,10 +618,10 @@
            <el-table-column
              v-if="this.ismanager == true"
              prop="amount"
              align="center"
              align="right" header-align="right"
              label="税前金额"
              width="120"
            >
             class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-select
                  v-model="scope.row.amount"
@@ -641,12 +641,30 @@
              </template>
            </el-table-column>
            <el-table-column
              prop="vatAmount"
              align="right" header-align="right"
              label="增值税"
              width="110"
            / class-name="money-column" :formatter="formatMoney">
            <el-table-column
              prop="cityTaxAmount"
              align="right" header-align="right"
              label="城建税"
              width="110"
            / class-name="money-column" :formatter="formatMoney">
            <el-table-column
              prop="laborPretaxAmount"
              align="right" header-align="right"
              label="劳务税前"
              width="120"
            / class-name="money-column" :formatter="formatMoney">
            <el-table-column
              prop="taxedamount"
              align="center"
              align="right" header-align="right"
              label="劳务税后"
              width="120"
              v-if="this.ismanager == true"
            >
             class-name="money-column" :formatter="formatMoney">
              <!-- v-if="form.applytype != '3'"上同 -->
              <template slot-scope="scope">
                <el-input
src/views/project/fund/index.vue
@@ -76,9 +76,9 @@
      <el-table-column label="家属联系电话" align="center" prop="phone" />
      <el-table-column label="银行卡照片路径 å¤šä¸ªç”¨;分开" align="center" prop="annexbankcard" />
      <el-table-column label="登记表照片路径 å¤šä¸ªç”¨;分开" align="center" prop="annexregistform" />
      <el-table-column label="申请金额" align="center" prop="amountrequested" />
      <el-table-column label="申请金额" align="right" header-align="right" class-name="money-column" prop="amountrequested" :formatter="formatMoney" />
      <el-table-column label="费用类别 è§å­—å…¸sys_ConsolationType" align="center" prop="applytype" />
      <el-table-column label="预支费用" align="center" prop="prepaidamount" />
      <el-table-column label="预支费用" align="right" header-align="right" class-name="money-column" prop="prepaidamount" :formatter="formatMoney" />
      <el-table-column label="发票张数" align="center" prop="invoicecount" />
      <el-table-column label="附件数" align="center" prop="attachcount" />
      <el-table-column label="部门主管工号" align="center" prop="managerno" />
src/views/project/fund/medicalCostApply/index.vue
@@ -48,7 +48,7 @@
                  </template>
                </el-table-column>
                <el-table-column label="经办人" align="center" prop="username" width="120px" />
                <el-table-column label="申请金额" align="center" prop="pretaxcost" width="200px" />
                <el-table-column label="申请金额" align="right" header-align="right" class-name="money-column" prop="pretaxcost" width="200px" :formatter="formatMoney" />
                <el-table-column label="审核状态" align="center" prop="recordstatus">
                  <template slot-scope="scope">
                    <dict-tag :options="dict.type.sys_recordstatus" :value="scope.row.recordstatus" />
src/views/project/fund/officeExpenseApply/index.vue
@@ -112,10 +112,10 @@
      />
      <el-table-column
        label="申请金额"
        align="center"
        align="right" header-align="right"
        prop="pretaxcost"
        width="150px"
      />
      / class-name="money-column" :formatter="formatMoney">
      <el-table-column
        label="所属组别"
        align="center"
@@ -439,11 +439,11 @@
                              </el-table-column> -->
            <el-table-column
              prop="amount"
              align="center"
              align="right" header-align="right"
              label="税前金额"
              width="120"
              v-if="form.applytype != 3"
            >
             class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-select
                  v-model="scope.row.amount"
@@ -474,12 +474,33 @@
              </template>
            </el-table-column>
            <el-table-column
              prop="vatAmount"
              align="right" header-align="right"
              label="增值税"
              width="110"
              v-if="form.applytype != '3'"
            / class-name="money-column" :formatter="formatMoney">
            <el-table-column
              prop="cityTaxAmount"
              align="right" header-align="right"
              label="城建税"
              width="110"
              v-if="form.applytype != '3'"
            / class-name="money-column" :formatter="formatMoney">
            <el-table-column
              prop="laborPretaxAmount"
              align="right" header-align="right"
              label="劳务税前"
              width="120"
              v-if="form.applytype != '3'"
            / class-name="money-column" :formatter="formatMoney">
            <el-table-column
              prop="taxamount"
              align="center"
              align="right" header-align="right"
              label="劳务个税"
              width="120"
              v-if="form.applytype != '3'"
            >
             class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.taxamount"
@@ -494,11 +515,11 @@
            </el-table-column>
            <el-table-column
              prop="taxedamount"
              align="center"
              align="right" header-align="right"
              label="劳务税后"
              width="120"
              v-if="form.applytype != '3'"
            >
             class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.taxedamount"
@@ -547,11 +568,11 @@
            <el-table-column
              prop="amount"
              align="center"
              align="right" header-align="right"
              label="金额"
              width="120"
              v-if="form.applytype == '3'"
            >
             class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.amount"
src/views/project/fund/performanceApply/index.vue
@@ -129,10 +129,10 @@
      />
      <el-table-column
        label="申请金额"
        align="center"
        align="right" header-align="right"
        prop="pretaxcost"
        width="150px"
      />
      / class-name="money-column" :formatter="formatMoney">
      <el-table-column
        label="审核状态"
src/views/project/fund/performancedetails/index.vue
@@ -235,43 +235,79 @@
            </el-table-column> -->
            <el-table-column
              prop="amount"
              align="center"
              align="right"
              header-align="right"
              class-name="money-column"
              label="税前金额"
              width="120"
            >
             :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.amount"
                  class="money-input"
                  placeholder="税前金额"
                  @blur="chargeSum"
                  @blur="normalizeMoney(scope.row, 'amount'); chargeSum()"
                />
              </template>
            </el-table-column>
            <el-table-column
              prop="vatAmount"
              align="right"
              header-align="right"
              class-name="money-column"
              label="增值税"
              width="110"
              :formatter="formatMoney"
            />
            <el-table-column
              prop="cityTaxAmount"
              align="right"
              header-align="right"
              class-name="money-column"
              label="城建税"
              width="110"
              :formatter="formatMoney"
            />
            <el-table-column
              prop="laborPretaxAmount"
              align="right"
              header-align="right"
              class-name="money-column"
              label="劳务税前"
              width="120"
              :formatter="formatMoney"
            />
            <el-table-column
              prop="taxamount"
              align="center"
              align="right"
              header-align="right"
              class-name="money-column"
              label="劳务个税"
              width="120"
            >
             :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input
                  @blur="chargeSum"
                  @blur="normalizeMoney(scope.row, 'taxamount'); chargeSum()"
                  v-model="scope.row.taxamount"
                  class="money-input"
                  placeholder="劳务个税"
                />
              </template>
            </el-table-column>
            <el-table-column
              prop="taxedamount"
              align="center"
              align="right"
              header-align="right"
              class-name="money-column"
              label="劳务税后"
              width="120"
            >
             :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.taxedamount"
                  class="money-input"
                  placeholder="劳务税后"
                  @blur="queenchargeSum"
                  @blur="normalizeMoney(scope.row, 'taxedamount'); queenchargeSum()"
                />
              </template>
            </el-table-column>
src/views/project/fundcheck/ethicalExpertFeeCheck/index.vue
@@ -76,7 +76,7 @@
              <span>{{ parseTime(scope.row.applyTime, "{y}-{m}-{d}") }}</span>
            </template>
          </el-table-column>
          <el-table-column label="申请金额" align="center" prop="pretaxcost" width="120px" />
          <el-table-column label="申请金额" align="right" header-align="right" prop="pretaxcost" width="120px" / class-name="money-column" :formatter="formatMoney">
          <el-table-column label="经办人" align="center" prop="username" width="90px" />
          <el-table-column label="材料预审状态" width="140px" align="center" prop="checkFlag">
            <template slot-scope="scope">
@@ -239,7 +239,7 @@
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="amount" align="center" label="税前金额" width="150">
            <el-table-column prop="amount" align="right" header-align="right" label="税前金额" width="150" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.amount" @blur="
                  val => {
@@ -250,18 +250,18 @@
            </el-table-column>
            <!-- <el-table-column
              prop="taxamount"
              align="center"
              align="right" header-align="right"
              label="劳务个税"
              width="150"
            >
             class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.taxamount" placeholder="劳务个税" />
              </template>
            </el-table-column> -->
            <el-table-column prop="vatAmount" align="center" label="增值税" width="120" />
            <el-table-column prop="cityTaxAmount" align="center" label="城建税" width="120" />
            <el-table-column prop="laborPretaxAmount" align="center" label="劳务税前" width="130" />
            <el-table-column prop="taxedamount" align="center" label="劳务税后" width="150">
            <el-table-column prop="vatAmount" align="right" header-align="right" label="增值税" width="120" / class-name="money-column" :formatter="formatMoney">
            <el-table-column prop="cityTaxAmount" align="right" header-align="right" label="城建税" width="120" / class-name="money-column" :formatter="formatMoney">
            <el-table-column prop="laborPretaxAmount" align="right" header-align="right" label="劳务税前" width="130" / class-name="money-column" :formatter="formatMoney">
            <el-table-column prop="taxedamount" align="right" header-align="right" label="劳务税后" width="150" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.taxedamount" placeholder="劳务税后" @blur="
                  val => {
src/views/project/fundcheck/expertFeeCheck/index.vue
@@ -103,13 +103,13 @@
              <span>{{ parseTime(scope.row.applyTime, "{y}-{m}-{d}") }}</span>
            </template>
          </el-table-column>
          <el-table-column label="申请金额" align="center" prop="pretaxcost" width="120px" />
          <el-table-column label="申请金额" align="right" header-align="right" prop="pretaxcost" width="120px" / class-name="money-column" :formatter="formatMoney">
          <el-table-column label="经办人" align="center" prop="username" width="90px" />
          <!-- <el-table-column label="工作单位" align="center"  prop="unitname" width="230px" /> -->
          <!-- <el-table-column label="联系电话" align="center"  prop="phone"  width="160"  /> -->
          <!-- <el-table-column label="劳务税后" align="center" prop="taxedcost" width="120px" />
          <el-table-column label="申请金额" align="center" prop="amountrequested" width="120px" />
          <el-table-column label="预支费用" align="center" prop="prepaidamount" width="120px" /> -->
          <!-- <el-table-column label="劳务税后" align="right" header-align="right" prop="taxedcost" width="120px" / class-name="money-column" :formatter="formatMoney">
          <el-table-column label="申请金额" align="right" header-align="right" prop="amountrequested" width="120px" / class-name="money-column" :formatter="formatMoney">
          <el-table-column label="预支费用" align="right" header-align="right" prop="prepaidamount" width="120px" / class-name="money-column" :formatter="formatMoney"> -->
          <el-table-column label="材料预审状态" align="center" prop="checkstatus" width="140px">
            <template slot-scope="scope">
              <dict-tag :options="dict.type.sys_stage_type" :value="scope.row.checkstatus" />
@@ -300,7 +300,7 @@
                <el-input v-model="scope.row.title" placeholder="职称" />
              </template>
            </el-table-column>
            <el-table-column v-if="show === 1" prop="amount" align="center" label="税前金额" width="100">
            <el-table-column v-if="show === 1" prop="amount" align="right" header-align="right" label="税前金额" width="100" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.amount" v-on:input="
                  val => {
@@ -309,10 +309,10 @@
                " placeholder="税前金额" />
              </template>
            </el-table-column>
            <el-table-column v-if="show === 1" prop="vatAmount" align="center" label="增值税" width="100" />
            <el-table-column v-if="show === 1" prop="cityTaxAmount" align="center" label="城建税" width="100" />
            <el-table-column v-if="show === 1" prop="laborPretaxAmount" align="center" label="劳务税前" width="110" />
            <el-table-column v-if="show === 1" prop="taxedamount" align="center" label="劳务税后" width="100">
            <el-table-column v-if="show === 1" prop="vatAmount" align="right" header-align="right" label="增值税" width="100" / class-name="money-column" :formatter="formatMoney">
            <el-table-column v-if="show === 1" prop="cityTaxAmount" align="right" header-align="right" label="城建税" width="100" / class-name="money-column" :formatter="formatMoney">
            <el-table-column v-if="show === 1" prop="laborPretaxAmount" align="right" header-align="right" label="劳务税前" width="110" / class-name="money-column" :formatter="formatMoney">
            <el-table-column v-if="show === 1" prop="taxedamount" align="right" header-align="right" label="劳务税后" width="100" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.taxedamount" placeholder="劳务税后" />
              </template>
src/views/project/fundcheck/medicalCostCheck/index.vue
@@ -82,11 +82,11 @@
              <span>{{ parseTime(scope.row.applyTime, "{y}-{m}-{d}") }}</span>
            </template>
          </el-table-column>
          <el-table-column label="申请金额" align="center" prop="pretaxcost" width="120px" />
          <el-table-column label="申请金额" align="right" header-align="right" prop="pretaxcost" width="120px" / class-name="money-column" :formatter="formatMoney">
          <el-table-column label="经办人" align="center" prop="username" width="90px" />
          <!--<el-table-column label="捐献编号" align="center" prop="donorno" />-->
          <!--
          <el-table-column label="预支费用" align="center" prop="prepaidamount" width="120px" />
          <el-table-column label="预支费用" align="right" header-align="right" prop="prepaidamount" width="120px" / class-name="money-column" :formatter="formatMoney">
          <el-table-column label="工作单位" align="center" prop="unitname" width="230px" />
          <el-table-column label="联系电话" align="center" prop="phone" width="160" />
          <el-table-column label="当前审核级别" width="180" align="center" prop="flowlevel">
@@ -277,7 +277,7 @@
                </el-select>
              </template>
            </el-table-column>-->
            <el-table-column prop="amount" align="center" label="税前金额" width="120" v-if="form.applytype != 3">
            <el-table-column prop="amount" align="right" header-align="right" label="税前金额" width="120" v-if="form.applytype != 3" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-select v-model="scope.row.amount" placeholder="税前金额" clearable filterable allow-create
                  @change="selectamount(scope.row)">
@@ -286,15 +286,15 @@
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="vatAmount" align="center" label="增值税" width="120" v-if="form.applytype != '3'" />
            <el-table-column prop="cityTaxAmount" align="center" label="城建税" width="120" v-if="form.applytype != '3'" />
            <el-table-column prop="laborPretaxAmount" align="center" label="劳务税前" width="120" v-if="form.applytype != '3'" />
            <el-table-column prop="taxamount" align="center" label="劳务个税" width="120" v-if="form.applytype != '3'">
            <el-table-column prop="vatAmount" align="right" header-align="right" label="增值税" width="120" v-if="form.applytype != '3'" / class-name="money-column" :formatter="formatMoney">
            <el-table-column prop="cityTaxAmount" align="right" header-align="right" label="城建税" width="120" v-if="form.applytype != '3'" / class-name="money-column" :formatter="formatMoney">
            <el-table-column prop="laborPretaxAmount" align="right" header-align="right" label="劳务税前" width="120" v-if="form.applytype != '3'" / class-name="money-column" :formatter="formatMoney">
            <el-table-column prop="taxamount" align="right" header-align="right" label="劳务个税" width="120" v-if="form.applytype != '3'" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.taxamount" placeholder="劳务个税" />
              </template>
            </el-table-column>
            <el-table-column prop="taxedamount" align="center" label="劳务税后" width="120" v-if="form.applytype != '3'">
            <el-table-column prop="taxedamount" align="right" header-align="right" label="劳务税后" width="120" v-if="form.applytype != '3'" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.taxedamount" placeholder="劳务税后" />
              </template>
@@ -319,7 +319,7 @@
              </template>
            </el-table-column>
            <el-table-column prop="amount" align="center" label="金额" width="120" v-if="form.applytype == '3'">
            <el-table-column prop="amount" align="right" header-align="right" label="金额" width="120" v-if="form.applytype == '3'" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.amount" placeholder="ä»·æ ¼" />
              </template>
src/views/project/fundcheck/officeExpenseCheck/index.vue
@@ -83,11 +83,11 @@
              <span>{{ parseTime(scope.row.applyTime, "{y}-{m}-{d}") }}</span>
            </template>
          </el-table-column>
          <el-table-column label="申请金额" align="center" prop="pretaxcost" width="120px" />
          <el-table-column label="申请金额" align="right" header-align="right" prop="pretaxcost" width="120px" / class-name="money-column" :formatter="formatMoney">
          <el-table-column label="经办人" align="center" prop="username" width="90px" />
          <!--<el-table-column label="捐献编号" align="center" prop="donorno" />-->
          <!--
          <el-table-column label="预支费用" align="center" prop="prepaidamount" width="120px" />
          <el-table-column label="预支费用" align="right" header-align="right" prop="prepaidamount" width="120px" / class-name="money-column" :formatter="formatMoney">
          <el-table-column label="工作单位" align="center" prop="unitname" width="230px" />
          <el-table-column label="联系电话" align="center" prop="phone" width="160" />
          <el-table-column label="当前审核级别" width="180" align="center" prop="flowlevel">
@@ -280,7 +280,7 @@
                </el-select>
              </template>
            </el-table-column>-->
            <el-table-column prop="amount" align="center" label="税前金额" width="120" v-if="form.applytype != 3">
            <el-table-column prop="amount" align="right" header-align="right" label="税前金额" width="120" v-if="form.applytype != 3" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-select v-model="scope.row.amount" placeholder="税前金额" clearable filterable allow-create
                  @change="selectamount(scope.row)">
@@ -289,15 +289,15 @@
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="vatAmount" align="center" label="增值税" width="120" v-if="form.applytype != '3'" />
            <el-table-column prop="cityTaxAmount" align="center" label="城建税" width="120" v-if="form.applytype != '3'" />
            <el-table-column prop="laborPretaxAmount" align="center" label="劳务税前" width="120" v-if="form.applytype != '3'" />
            <el-table-column prop="taxamount" align="center" label="劳务个税" width="120" v-if="form.applytype != '3'">
            <el-table-column prop="vatAmount" align="right" header-align="right" label="增值税" width="120" v-if="form.applytype != '3'" / class-name="money-column" :formatter="formatMoney">
            <el-table-column prop="cityTaxAmount" align="right" header-align="right" label="城建税" width="120" v-if="form.applytype != '3'" / class-name="money-column" :formatter="formatMoney">
            <el-table-column prop="laborPretaxAmount" align="right" header-align="right" label="劳务税前" width="120" v-if="form.applytype != '3'" / class-name="money-column" :formatter="formatMoney">
            <el-table-column prop="taxamount" align="right" header-align="right" label="劳务个税" width="120" v-if="form.applytype != '3'" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.taxamount" placeholder="劳务个税" />
              </template>
            </el-table-column>
            <el-table-column prop="taxedamount" align="center" label="劳务税后" width="120" v-if="form.applytype != '3'">
            <el-table-column prop="taxedamount" align="right" header-align="right" label="劳务税后" width="120" v-if="form.applytype != '3'" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.taxedamount" placeholder="劳务税后" />
              </template>
@@ -322,7 +322,7 @@
              </template>
            </el-table-column>
            <el-table-column prop="amount" align="center" label="金额" width="120" v-if="form.applytype == '3'">
            <el-table-column prop="amount" align="right" header-align="right" label="金额" width="120" v-if="form.applytype == '3'" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.amount" placeholder="ä»·æ ¼" />
              </template>
src/views/project/fundcheck/performanceCheck/index.vue
@@ -64,7 +64,7 @@
            </template>
          </el-table-column>
          <el-table-column label="经办人" align="center" prop="username" width="90px" />
          <el-table-column label="申请金额" align="center" prop="pretaxcost" width="120px" />
          <el-table-column label="申请金额" align="right" header-align="right" prop="pretaxcost" width="120px" / class-name="money-column" :formatter="formatMoney">
          <el-table-column label="绩效类型" width="150px" align="center" prop="Performancetype">
            <template slot-scope="scope">
              <dict-tag :options="dict.type.sys_performance_type" :value="scope.row.Performancetype" />
src/views/project/tallage/computingBill/index.vue
@@ -148,7 +148,7 @@
              align="center"
              fixed
              label="序号"
              width="120"
              width="60"
            >
            </el-table-column>
            <el-table-column
@@ -161,7 +161,7 @@
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.donorname"
                  placeholder="案例捐献者"
                  placeholder="捐献者"
                  :disabled="true"
                />
              </template>
@@ -185,7 +185,7 @@
              prop="deptmentname"
              align="center"
              label="所属组别"
              width="280"
              width="150"
            >
              <template slot-scope="scope">
                <el-input
@@ -199,7 +199,7 @@
              prop="applyTime"
              align="center"
              label="申请日期"
              width="200"
              width="150"
            >
              <template slot-scope="scope">
                <el-date-picker
@@ -215,7 +215,7 @@
                </el-date-picker>
              </template>
            </el-table-column>
            <el-table-column prop="pretaxcost" align="center" label="税前金额">
            <el-table-column prop="pretaxcost" align="right" label="税前金额" width="120" header-align="right" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.pretaxcost"
@@ -224,7 +224,7 @@
                />
              </template>
            </el-table-column>
            <el-table-column prop="vatCost" align="center" label="增值税">
            <el-table-column prop="vatCost" align="right" label="增值税" width="120" header-align="right" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.vatCost"
@@ -233,7 +233,7 @@
                />
              </template>
            </el-table-column>
            <el-table-column prop="cityTaxCost" align="center" label="城建税">
            <el-table-column prop="cityTaxCost" align="right" label="城建税" width="120" header-align="right" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.cityTaxCost"
@@ -242,7 +242,7 @@
                />
              </template>
            </el-table-column>
            <el-table-column prop="laborPretaxCost" align="center" label="劳务税前">
            <el-table-column prop="laborPretaxCost" align="right" label="劳务税前" width="120" header-align="right" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.laborPretaxCost"
@@ -251,7 +251,7 @@
                />
              </template>
            </el-table-column>
            <el-table-column label="劳务个税" align="center" prop="taxcost">
            <el-table-column label="劳务个税" prop="taxcost" width="120" align="right" header-align="right" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.taxcost"
@@ -261,7 +261,7 @@
              </template>
            </el-table-column>
            <el-table-column prop="taxedcost" align="center" label="劳务税后">
            <el-table-column prop="taxedcost" label="劳务税后" width="120" align="right" header-align="right" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input
                  @blur="chargeSum"
@@ -450,37 +450,37 @@
                  prop="pretaxcost"
                  label="税前金额"
                  show-overflow-tooltip
                >
                 align="right" header-align="right" class-name="money-column" :formatter="formatMoney">
                </el-table-column>
                <el-table-column
                  prop="vatCost"
                  label="增值税"
                  show-overflow-tooltip
                >
                 align="right" header-align="right" class-name="money-column" :formatter="formatMoney">
                </el-table-column>
                <el-table-column
                  prop="cityTaxCost"
                  label="城建税"
                  show-overflow-tooltip
                >
                 align="right" header-align="right" class-name="money-column" :formatter="formatMoney">
                </el-table-column>
                <el-table-column
                  prop="laborPretaxCost"
                  label="劳务税前"
                  show-overflow-tooltip
                >
                 align="right" header-align="right" class-name="money-column" :formatter="formatMoney">
                </el-table-column>
                <el-table-column
                  prop="taxcost"
                  label="劳务个税"
                  show-overflow-tooltip
                >
                 align="right" header-align="right" class-name="money-column" :formatter="formatMoney">
                </el-table-column>
                <el-table-column
                  prop="taxedcost"
                  label="劳务税后"
                  show-overflow-tooltip
                >
                 align="right" header-align="right" class-name="money-column" :formatter="formatMoney">
                </el-table-column>
                <el-table-column
                  prop="remark"
src/views/project/tallage/index.vue
@@ -97,13 +97,13 @@
        prop="applyno"
      />
      <el-table-column label="税前金额" align="center" prop="pretaxamount" width="110" >
      <el-table-column label="税前金额" align="right" header-align="right" prop="pretaxamount" width="110"  class-name="money-column" :formatter="formatMoney">
      </el-table-column>
      <el-table-column label="增值税" align="center" prop="vatAmount" width="100" />
      <el-table-column label="城建税" align="center" prop="cityTaxAmount" width="100" />
      <el-table-column label="劳务税前" align="center" prop="laborPretaxAmount" width="110" />
      <el-table-column label="劳务个税" align="center" prop="taxMoney" width="100" />
      <el-table-column label="劳务税后" align="center" prop="taxedamount" width="100" />
      <el-table-column label="增值税" align="right" header-align="right" prop="vatAmount" width="100" / class-name="money-column" :formatter="formatMoney">
      <el-table-column label="城建税" align="right" header-align="right" prop="cityTaxAmount" width="100" / class-name="money-column" :formatter="formatMoney">
      <el-table-column label="劳务税前" align="right" header-align="right" prop="laborPretaxAmount" width="110" / class-name="money-column" :formatter="formatMoney">
      <el-table-column label="劳务个税" align="right" header-align="right" prop="taxMoney" width="100" / class-name="money-column" :formatter="formatMoney">
      <el-table-column label="劳务税后" align="right" header-align="right" prop="taxedamount" width="100" / class-name="money-column" :formatter="formatMoney">
      <el-table-column label="是否算税" align="center" prop="istax" width="90" >
        <template slot-scope="scope">
          <dict-tag
@@ -112,7 +112,7 @@
          />
        </template>
      </el-table-column>
      <!-- <el-table-column label="总金额" align="center" prop="taxamount" /> -->
      <!-- <el-table-column label="总金额" align="right" header-align="right" prop="taxamount" / class-name="money-column" :formatter="formatMoney"> -->
      <el-table-column label="算税时间" align="center" prop="taxedtime" />
      <el-table-column label="付款状态" align="center" prop="isdistribute" width="100" >
src/views/project/travelexpenseapply/index.vue
@@ -92,7 +92,7 @@
      <!--
      <el-table-column label="出差人" width="180" align="center" prop="travelers">
      </el-table-column>-->
      <el-table-column label="报销金额" width="120" align="center" prop="amountrequested">
      <el-table-column label="报销金额" width="120" align="right" header-align="right" prop="amountrequested" class-name="money-column" :formatter="formatMoney">
      </el-table-column>
      <el-table-column label="所属组别" width="120" align="center" prop="deptmentname" />
      <el-table-column label="组长" width="100" align="center" prop="managername" />
@@ -552,7 +552,7 @@
                <el-input v-model="scope.row.bankcardno" placeholder="银行卡号" />
              </template>
            </el-table-column>
            <el-table-column prop="amount" slot="" label="打款金额" align="center" fixed width="130">
            <el-table-column prop="amount" slot="" label="打款金额" align="right" header-align="right" fixed width="130" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.amount" placeholder="打款金额" />
              </template>
src/views/project/travelexpenseapply/travelexpensedetail/index.vue
@@ -55,11 +55,11 @@
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="4">
          <!-- <el-col :span="4">
            <div style="margin-left: 10px;">
              <dict-tag :options="dict.type.sys_DonationStatus" :value="form.invoicecount" />
            </div>
          </el-col>
          </el-col> -->
        </el-row>
        <el-row style="margin-top: 10px">
          <el-col :span="5">
@@ -182,7 +182,7 @@
        <el-row>
          <el-table :data="rbDetails" ref="table" border max-height="800" highlight-current-row
            :summary-method="getSummaries" show-summary>
            <el-table-column prop="orderno" slot="" label="序号" align="center" fixed width="88">
            <el-table-column prop="orderno" slot="" label="序号" align="center" fixed width="60">
              <template slot-scope="scope">
                <el-input v-model="scope.row.orderno" placeholder="序号" />
              </template>
@@ -199,7 +199,7 @@
              </template>
            </el-table-column>
            <el-table-column prop="persontype" slot="" label="人员类别" align="center" fixed width="130">
            <el-table-column prop="persontype" slot="" label="人员类别" align="center" fixed width="120">
              <template slot-scope="scope">
                <el-select v-model="scope.row.persontype" value-key="value" placeholder="人员类别"
                  @change="getPersons(scope.row)">
@@ -265,7 +265,7 @@
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="days" label="天数" width="100" align="center">
            <el-table-column prop="days" label="天数" width="70" align="center">
              <template slot-scope="scope">
                <el-input v-model="scope.row.days" @blur="getallowance(scope.row)" placeholder="天数" />
              </template>
@@ -372,7 +372,7 @@
                <el-input v-model="scope.row.total" placeholder="合计" />
              </template>
            </el-table-column>
            <el-table-column fixed="right" label="操作" align="center" width="120">
            <el-table-column fixed="right" label="操作" align="center" width="180">
              <template slot-scope="scope">
                <el-button type="text" size="mini" @click="addDetailRow(scope.$index)"
                  v-if="operationType == 'edit'">新增</el-button>
@@ -392,7 +392,7 @@
        <el-row style="margin-top: 5px">
          <el-table :data="rbPayees" border max-height="400" highlight-current-row :summary-method="getSummaries"
            show-summary>
            <el-table-column prop="orderno" slot="" label="序号" align="center" fixed width="65">
            <el-table-column prop="orderno" slot="" label="序号" align="center" fixed width="60">
              <template slot-scope="scope">
                <el-input v-model="scope.row.orderno" placeholder="序号" />
              </template>
@@ -410,7 +410,7 @@
              </template>
            </el-table-column>
            <el-table-column prop="persontype" slot="" label="收款人类别" align="center" fixed width="150">
            <el-table-column prop="persontype" slot="" label="收款人类别" align="center" fixed width="120">
              <template slot-scope="scope">
                <el-select v-model="scope.row.persontype" value-key="value" placeholder="收款人类别"
                  @change="getPersons(scope.row)">
@@ -419,7 +419,7 @@
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="personname" slot="" label="收款人" align="center" fixed width="200">
            <el-table-column prop="personname" slot="" label="收款人" align="center" fixed width="240">
              <template slot-scope="scope">
                <el-select v-model="scope.row.personname" clearable filterable allow-create ref="getReportname"
                  default-first-option placeholder="请选择" @change="getAccountinfo2(scope.row, scope.row.persontype)">
@@ -428,17 +428,17 @@
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="bankname" slot="" label="收款银行" align="center" fixed width="250">
            <el-table-column prop="bankname" slot="" label="收款银行" align="center" fixed width="300">
              <template slot-scope="scope">
                <el-input v-model="scope.row.bankname" placeholder="收款银行" />
              </template>
            </el-table-column>
            <el-table-column prop="bankcardno" slot="" label="银行账号" align="center" fixed width="200">
            <el-table-column prop="bankcardno" slot="" label="银行账号" align="center" fixed width="220">
              <template slot-scope="scope">
                <el-input v-model="scope.row.bankcardno" placeholder="银行账号" />
              </template>
            </el-table-column>
            <el-table-column prop="amount" slot="" label="打款金额" align="center" fixed width="130">
            <el-table-column prop="amount" slot="" label="打款金额" align="right" header-align="right" fixed width="130" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.amount" placeholder="打款金额" />
              </template>
@@ -456,7 +456,7 @@
                </el-date-picker>
              </template>
            </el-table-column>-->
            <el-table-column label="操作" align="center" width="100" v-if="operationType == 'edit'">
            <el-table-column label="操作" align="center"  width="150" v-if="operationType == 'edit'">
              <template slot-scope="scope">
                <el-button type="text" size="mini" @click="addPayeeRow(scope.$index)">新增</el-button>
                <el-button @click.native.prevent="
src/views/project/travelexpensecheck/index.vue
@@ -98,7 +98,7 @@
          <span>{{ parseTime(scope.row.applyTime, "{y}-{m}-{d}") }}</span>
        </template>
      </el-table-column>
      <el-table-column label="报销金额" width="120" align="center" prop="amountrequested" />
      <el-table-column label="报销金额" width="120" align="right" header-align="right" prop="amountrequested" / class-name="money-column" :formatter="formatMoney">
      <el-table-column label="经办人" width="100" align="center" prop="username" />
      <el-table-column label="材料预审状态" width="140" align="center" prop="checkstatus">
        <template slot-scope="scope">
@@ -538,7 +538,7 @@
                <el-input v-model="scope.row.bankcardno" placeholder="银行卡号" />
              </template>
            </el-table-column>
            <el-table-column prop="amount" slot="" label="打款金额" align="center" fixed width="130">
            <el-table-column prop="amount" slot="" label="打款金额" align="right" header-align="right" fixed width="130" class-name="money-column" :formatter="formatMoney">
              <template slot-scope="scope">
                <el-input v-model="scope.row.amount" placeholder="打款金额" />
              </template>