ezhizao_zx 1 ano atrás
pai
commit
23d36622af

+ 26 - 9
src/utils/index.js

@@ -5,16 +5,33 @@ import { parseTime } from './ruoyi'
  */
 export function formatDate(cellValue) {
   if (cellValue == null || cellValue == "") return "";
-  var date = new Date(cellValue) 
+  var date = new Date(cellValue)
   var year = date.getFullYear()
   var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
-  var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() 
-  var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours() 
-  var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() 
+  var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
+  var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
+  var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
   var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
   return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
 }
-
+// 数字格式化
+export function rowNum(num) {
+  if (!num) {
+    return;
+  }
+  console.log("数字开始", num);
+  num = num.toLocaleString(); // 3,000
+  if (num.indexOf(".") == -1) {
+    num = num + ".00"; //3,000.00
+    console.log("数字计算", num);
+  }
+  // } else if (num.charAt(num.indexOf(".") == num.length - 2)) {
+  //   num = num + "0";
+  //   console.log("数字计算2", num);
+  // }
+  console.log("数字", num);
+  return num;
+}
 /**
  * @param {number} time
  * @param {string} option
@@ -218,7 +235,7 @@ export function getTime(type) {
 export function debounce(func, wait, immediate) {
   let timeout, args, context, timestamp, result
 
-  const later = function() {
+  const later = function () {
     // 据上一次触发时间间隔
     const last = +new Date() - timestamp
 
@@ -235,7 +252,7 @@ export function debounce(func, wait, immediate) {
     }
   }
 
-  return function(...args) {
+  return function (...args) {
     context = this
     timestamp = +new Date()
     const callNow = immediate && !timeout
@@ -330,7 +347,7 @@ export function makeMap(str, expectsLowerCase) {
     ? val => map[val.toLowerCase()]
     : val => map[val]
 }
- 
+
 export const exportDefault = 'export default '
 
 export const beautifierConf = {
@@ -387,4 +404,4 @@ export function camelCase(str) {
 export function isNumberStr(str) {
   return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str)
 }
- 
+

+ 3 - 1
src/views/business/crm/bin/index.vue

@@ -68,8 +68,8 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55" align="center" />
-      <!-- <el-table-column label="序号" align="center" type="index" /> -->
       <el-table-column label="客户名称" align="center" prop="sourceValue" />
+      <el-table-column label="合同编号" align="center" prop="archiveCode" />
       <!-- <el-table-column label="来源表" align="center" prop="sourceTableName" /> -->
       <el-table-column
         label="操作"
@@ -114,6 +114,7 @@
 <script setup name="Bin">
 import { listBin, delBin, restoreArchiveBin } from "@/api/business/bin";
 import binForm from "./form";
+
 const { proxy } = getCurrentInstance();
 /** 字典数组区 */
 /** 查询 对象 */
@@ -124,6 +125,7 @@ const ids = ref([]);
 const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
+
 /** 查询对象 */
 const queryParams = ref({
   pageNum: 1,

Diferenças do arquivo suprimidas por serem muito extensas
+ 571 - 147
src/views/business/crm/company/form.vue


Diferenças do arquivo suprimidas por serem muito extensas
+ 581 - 217
src/views/business/crm/order/form.vue


+ 393 - 80
src/views/business/crm/order/index.vue

@@ -2,8 +2,14 @@
   <div class="page-container list-container">
     <!-- 功能按钮区 -->
     <div class="list-btns-container">
-      <el-button type="primary" size="small" icon="Plus" @click="handleAdd"
-        v-hasPermi="['business:archive:order:add']">新增</el-button>
+      <el-button
+        type="primary"
+        size="small"
+        icon="Plus"
+        @click="handleAdd"
+        v-hasPermi="['business:archive:order:add']"
+        >新增</el-button
+      >
 
       <!-- <el-button type="danger" size="small" icon="Delete" :disabled="multiple" @click="handleDelete"
         v-hasPermi="['business:archive:order:remove']">删除</el-button> -->
@@ -13,22 +19,53 @@
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item icon="Delete" :disabled="single" @click="handleAlter"
-              v-hasPermi="['business:archive:order:alter']">
-              合同变更</el-dropdown-item>
-            <el-dropdown-item icon="Delete" :disabled="single" @click="handleDissolution"
-              v-hasPermi="['business:archive:order:dissolution']">
-              合同解除</el-dropdown-item>
-            <el-dropdown-item icon="Delete" :disabled="multiple" @click="handleDelete"
-              v-hasPermi="['business:archive:order:remove']">
-              删除合同</el-dropdown-item>
-            <el-dropdown-item icon="Delete" :disabled="multiple" @click="handleBinDelete"
-              v-hasPermi="['business:archive:order:bin']">
-              放入回收站</el-dropdown-item>
-            <el-dropdown-item icon="Download" @click="handleExport" v-hasPermi="['business:archive:order:export']">
-              导出</el-dropdown-item>
-            <el-dropdown-item icon="Upload" @click="handleImport"
-              v-hasPermi="['business:archive:order:export']">导入</el-dropdown-item>
+            <el-dropdown-item
+              icon="Delete"
+              :disabled="single"
+              @click="handleAlter"
+              v-if="viewAlter()"
+            >
+              合同变更</el-dropdown-item
+            >
+            <el-dropdown-item
+              icon="Delete"
+              :disabled="single"
+              @click="handleDissolution"
+              v-if="viewDissolution()"
+            >
+              合同解除</el-dropdown-item
+            >
+            <el-dropdown-item
+              icon="Delete"
+              :disabled="multiple"
+              @click="handleDelete"
+              v-if="viewDelete()"
+            >
+              删除合同</el-dropdown-item
+            >
+            <el-dropdown-item
+              icon="Delete"
+              :disabled="multiple"
+              @click="handleBinDelete"
+              v-if="viewBinDelete()"
+            >
+              放入回收站</el-dropdown-item
+            >
+            <el-dropdown-item
+              icon="Download"
+              @click="handleExport"
+              v-if="viewExport()"
+              v-hasPermi="['business:archive:order:export']"
+            >
+              导出</el-dropdown-item
+            >
+            <el-dropdown-item
+              icon="Upload"
+              @click="handleImport"
+              v-hasPermi="['business:archive:order:export']"
+              v-if="viewExport()"
+              >导入</el-dropdown-item
+            >
             <!-- <el-dropdown-item type="warning" size="small" icon="Download" @click="handleArea"
               v-hasPermi="['business:archive:order:export']"> area</el-dropdown-item> -->
           </el-dropdown-menu>
@@ -39,136 +76,367 @@
       <!--<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>-->
     </div>
     <!-- 搜索区 -->
-    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
-      label-width="68px">
+    <el-form
+      class="list-search-container"
+      size="small"
+      :model="queryParams"
+      ref="queryRef"
+      :inline="true"
+      label-width="68px"
+    >
       <el-form-item label="客户名称:" prop="companyName">
-        <el-input v-model="queryParams.companyName" placeholder="请输入客户名称" clearable style="width: 200px"
-          @keyup.enter="handleQuery" />
+        <el-input
+          v-model="queryParams.companyName"
+          placeholder="请输入客户名称"
+          clearable
+          style="width: 200px"
+          @keyup.enter="handleQuery"
+        />
       </el-form-item>
       <el-form-item label="合同类型:" prop="contractType">
-        <el-select size="small" v-model="queryParams.contractType" placeholder="服务类型" clearable style="width: 100px">
-          <el-option v-for="item in contractTypes" :key="item.value" :label="item.label" :value="item.value" />
+        <el-select
+          size="small"
+          v-model="queryParams.contractType"
+          placeholder="服务类型"
+          clearable
+          style="width: 100px"
+        >
+          <el-option
+            v-for="item in contractTypes"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
         </el-select>
       </el-form-item>
       <el-form-item label="服务类型:" prop="serviceType">
-        <el-select size="small" v-model="queryParams.serviceType" placeholder="合同类型" clearable style="width: 100px">
-          <el-option v-for="item in serviceTypes" :key="item.value" :label="item.label" :value="item.value" />
+        <el-select
+          size="small"
+          v-model="queryParams.serviceType"
+          placeholder="合同类型"
+          clearable
+          style="width: 100px"
+        >
+          <el-option
+            v-for="item in serviceTypes"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button type="primary" icon="Search" @click="handleQuery"
+          >搜索</el-button
+        >
         <el-button icon="operation" @click="moreSearch = true">更多</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table v-loading="loading" :data="orderList" size="small" border height="100%"
-      @selection-change="handleSelectionChange">
+    <el-table
+      v-loading="loading"
+      :data="orderList"
+      size="small"
+      border
+      height="100%"
+      @selection-change="handleSelectionChange"
+    >
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="客户名称" align="center" prop="companyName" min-width="250" />
-      <el-table-column label="税号" align="center" prop="socialCreditCode" min-width="200" />
-      <el-table-column label="合同编号" align="center" prop="contractNo" min-width="150" />
-      <el-table-column label="签约日期" align="center" prop="formDate" width="100">
+      <el-table-column
+        label="客户名称"
+        align="center"
+        prop="companyName"
+        min-width="250"
+      />
+      <el-table-column
+        label="税号"
+        align="center"
+        prop="socialCreditCode"
+        min-width="200"
+      />
+      <el-table-column
+        label="合同编号"
+        align="center"
+        prop="contractNo"
+        min-width="150"
+      />
+      <el-table-column
+        label="签约日期"
+        align="center"
+        prop="formDate"
+        width="100"
+      >
         <template #default="scope">
           <span>{{ parseTime(scope.row.formDate, "{y}-{m}-{d}") }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="签约金额" header-align="center" align="right" prop="trueAmount" width="80">
-        <template #default="scope">{{ scope.row.trueAmount.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,') }}</template>
+      <el-table-column
+        label="签约金额"
+        header-align="center"
+        align="right"
+        prop="trueAmount"
+        width="80"
+      >
+        <template #default="scope">{{
+          scope.row.trueAmount.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, "$&,")
+        }}</template>
       </el-table-column>
-      <el-table-column label="签单人" align="center" prop="signerName" min-width="120" />
-      <el-table-column label="合同来源" align="center" prop="sourceCategoryName" min-width="120" />
-      <el-table-column label="审核状态" align="center" prop="verifyStatus" width="110">
+      <el-table-column
+        label="签单人"
+        align="center"
+        prop="signerName"
+        min-width="120"
+      />
+      <el-table-column
+        label="合同来源"
+        align="center"
+        prop="sourceCategoryName"
+        min-width="120"
+      />
+      <el-table-column
+        label="审核状态"
+        align="center"
+        prop="verifyStatus"
+        width="110"
+      >
         <template #default="scope">
-          <dict-tag :options="contract_verify_status" :value="scope.row.verifyStatus" />
+          <dict-tag
+            :options="contract_verify_status"
+            :value="scope.row.verifyStatus"
+          />
         </template>
       </el-table-column>
-      <el-table-column label="合同类型" align="center" prop="contractType" width="80">
+      <el-table-column
+        label="合同类型"
+        align="center"
+        prop="contractType"
+        width="80"
+      >
         <template #default="scope">
           {{ scope.row.contractType === 0 ? "新签" : "续签" }}
         </template>
       </el-table-column>
-      <el-table-column label="服务类型" align="center" prop="serviceType" width="80">
+      <el-table-column
+        label="服务类型"
+        align="center"
+        prop="serviceType"
+        width="80"
+      >
         <template #default="scope">
           {{ scope.row.serviceType === 1 ? "循环" : "代办" }}
         </template>
       </el-table-column>
-      <el-table-column label="合同状态" width="110" align="center" prop="status">
+      <el-table-column
+        label="合同状态"
+        width="110"
+        align="center"
+        prop="status"
+      >
         <template #default="scope">
           <dict-tag :options="contract_status" :value="scope.row.status" />
         </template>
       </el-table-column>
-      <el-table-column label="操作" fixed="right" align="center" width="130" class-name="small-padding fixed-width">
+      <el-table-column
+        label="操作"
+        fixed="right"
+        align="center"
+        width="130"
+        class-name="small-padding fixed-width"
+      >
         <template #default="scope">
-          <el-button link type="primary" size="small" @click="handleUpdate(scope.row)"
-            v-hasPermi="['business:archive:order:edit']">查看</el-button>
-          <el-button link type="danger" size="small" @click="handleDelete(scope.row)"
-            v-hasPermi="['business:archive:order:remove']">删除</el-button>
+          <el-button
+            link
+            type="primary"
+            size="small"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:archive:order:edit']"
+            >查看</el-button
+          >
+          <el-button
+            link
+            type="danger"
+            size="small"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['business:archive:order:remove']"
+            >删除</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
     <contract-form ref="contractRef" :get-list="getList" />
     <import-excel-dialog ref="importExcelDialogRef" :get-list="getList" />
     <!-- 分页 -->
-    <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
-      @pagination="getList" />
-    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body size="small" draggable>
-      <el-form :model="queryParams" ref="queryRef" size="small" label-width="100">
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize"
+      @pagination="getList"
+    />
+    <el-dialog
+      title="更多搜索"
+      v-model="moreSearch"
+      width="620px"
+      append-to-body
+      size="small"
+      draggable
+    >
+      <el-form
+        :model="queryParams"
+        ref="queryRef"
+        size="small"
+        label-width="100"
+      >
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="客户名称:" prop="companyName">
-              <el-input v-model="queryParams.companyName" placeholder="请输入客户名称" clearable style="width: 200px"
-                @keyup.enter="handleQuery" />
+              <el-input
+                v-model="queryParams.companyName"
+                placeholder="请输入客户名称"
+                clearable
+                style="width: 200px"
+                @keyup.enter="handleQuery"
+              />
             </el-form-item>
             <el-form-item label="服务类型:" prop="serviceType">
-              <el-select size="small" v-model="queryParams.serviceType" placeholder="合同类型" clearable style="width: 100%">
-                <el-option v-for="item in serviceTypes" :key="item.value" :label="item.label" :value="item.value" />
+              <el-select
+                size="small"
+                v-model="queryParams.serviceType"
+                placeholder="合同类型"
+                clearable
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in serviceTypes"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
               </el-select>
             </el-form-item>
             <el-form-item label="代理记账:" prop="isKeepAccount">
-              <el-select size="small" v-model="queryParams.isKeepAccount" placeholder="是否记账" clearable
-                style="width: 100%">
-                <el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
+              <el-select
+                size="small"
+                v-model="queryParams.isKeepAccount"
+                placeholder="是否记账"
+                clearable
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in yesOrNo"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
               </el-select>
             </el-form-item>
             <el-form-item label="公积金代缴:" prop="isHousingFund">
-              <el-select size="small" v-model="queryParams.isHousingFund" placeholder="是否代缴公积金" clearable
-                style="width: 100%">
-                <el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
+              <el-select
+                size="small"
+                v-model="queryParams.isHousingFund"
+                placeholder="是否代缴公积金"
+                clearable
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in yesOrNo"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
               </el-select>
             </el-form-item>
             <el-form-item label="注册:" prop="isRegister">
-              <el-select size="small" v-model="queryParams.isRegister" placeholder="是否注册" clearable style="width: 100%">
-                <el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
+              <el-select
+                size="small"
+                v-model="queryParams.isRegister"
+                placeholder="是否注册"
+                clearable
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in yesOrNo"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="合同类型:" prop="contractType">
-              <el-select size="small" v-model="queryParams.contractType" placeholder="服务类型" clearable style="width: 100%">
-                <el-option v-for="item in contractTypes" :key="item.value" :label="item.label" :value="item.value" />
+              <el-select
+                size="small"
+                v-model="queryParams.contractType"
+                placeholder="服务类型"
+                clearable
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in contractTypes"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
               </el-select>
             </el-form-item>
             <el-form-item label="签约日期:" prop="formDate">
-              <el-date-picker clearable v-model="queryParams.formDate" type="date" value-format="YYYY-MM-DD"
-                placeholder="请选择签约日期" />
+              <el-date-picker
+                clearable
+                v-model="queryParams.formDate"
+                type="date"
+                value-format="YYYY-MM-DD"
+                placeholder="请选择签约日期"
+              />
             </el-form-item>
             <el-form-item label="社保代缴:" prop="isSocialSecurity">
-              <el-select size="small" v-model="queryParams.isSocialSecurity" placeholder="是否代缴社保" clearable
-                style="width: 100%">
-                <el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
+              <el-select
+                size="small"
+                v-model="queryParams.isSocialSecurity"
+                placeholder="是否代缴社保"
+                clearable
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in yesOrNo"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
               </el-select>
             </el-form-item>
             <el-form-item label="返税申报:" prop="isReturnTax">
-              <el-select size="small" v-model="queryParams.isReturnTax" placeholder="是否申报返税" clearable
-                style="width: 100%">
-                <el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
+              <el-select
+                size="small"
+                v-model="queryParams.isReturnTax"
+                placeholder="是否申报返税"
+                clearable
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in yesOrNo"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
               </el-select>
             </el-form-item>
             <el-form-item label="变更:" prop="isAlter">
-              <el-select size="small" v-model="queryParams.isAlter" placeholder="是否变更" clearable style="width: 100%">
-                <el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
+              <el-select
+                size="small"
+                v-model="queryParams.isAlter"
+                placeholder="是否变更"
+                clearable
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in yesOrNo"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
               </el-select>
             </el-form-item>
           </el-col>
@@ -176,8 +444,16 @@
       </el-form>
       <template #footer>
         <div class="dialog-footer">
-          <el-button type="primary" icon="Finished" size="small" @click="handleQuery">确 定</el-button>
-          <el-button icon="close" size="small" @click="moreSearch = false">取 消</el-button>
+          <el-button
+            type="primary"
+            icon="Finished"
+            size="small"
+            @click="handleQuery"
+            >确 定</el-button
+          >
+          <el-button icon="close" size="small" @click="moreSearch = false"
+            >取 消</el-button
+          >
         </div>
       </template>
     </el-dialog>
@@ -187,6 +463,7 @@
 <script setup name="Order">
 import { dissolutionOrder } from "../../../../api/business/crm/contract";
 import contractForm from "./form";
+import useUserStore from "@/store/modules/user";
 import {
   listOrder,
   delOrder,
@@ -205,6 +482,8 @@ const ids = ref([]);
 const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
+const permissions = useUserStore().permissions;
+const all_permission = "*:*:*";
 const importExcelDialogRef = ref(null);
 const moreSearch = ref(false);
 
@@ -304,6 +583,40 @@ function getList() {
   });
 }
 
+function viewAlter() {
+  return (
+    permissions.includes(all_permission) ||
+    permissions.includes("business:archive:order:alter")
+  );
+}
+
+function viewDissolution() {
+  return (
+    permissions.includes(all_permission) ||
+    permissions.includes("business:archive:order:dissolution")
+  );
+}
+
+function viewDelete() {
+  return (
+    permissions.includes(all_permission) ||
+    permissions.includes("business:archive:order:remove")
+  );
+}
+
+function viewBinDelete() {
+  return (
+    permissions.includes(all_permission) ||
+    permissions.includes("business:archive:order:bin")
+  );
+}
+function viewExport() {
+  return (
+    permissions.includes(all_permission) ||
+    permissions.includes("business:archive:order:export")
+  );
+}
+
 /** 搜索按钮操作 */
 function handleQuery() {
   queryParams.value.pageNum = 1;
@@ -346,7 +659,7 @@ function handleDelete(row) {
       getList();
       proxy.$modal.msgSuccess("删除成功!");
     })
-    .catch(() => { });
+    .catch(() => {});
 }
 
 /** 放入回收站按钮操作 */
@@ -361,7 +674,7 @@ function handleBinDelete(row) {
       getList();
       proxy.$modal.msgSuccess("数据已放入回收站!");
     })
-    .catch(() => { });
+    .catch(() => {});
 }
 
 function handleAlter(row) {
@@ -385,7 +698,7 @@ function handleDissolution() {
       getList();
       proxy.$modal.msgSuccess("解除成功!");
     })
-    .catch(() => { });
+    .catch(() => {});
 }
 
 /** 导出按钮操作 */

+ 34 - 9
src/views/business/financial/collection/form.vue

@@ -232,12 +232,12 @@
             </el-col>
             <el-col :span="6">
               <el-form-item label="应收款金额:" prop="remark">
-                <span>{{ form.contractAmount }}</span>
+                <span>{{ rowNum(form.contractAmount) }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="未收款金额:" prop="remark">
-                <span>{{ form.nonpaymentAmount }}</span>
+                <span>{{ rowNum(form.nonpaymentAmount) }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
@@ -253,7 +253,7 @@
                   :controls="false"
                   @change="amountChange"
                 />
-                <span v-else>{{ form.arriveAmount }}</span>
+                <span>{{ rowNum(form.arriveAmount) }}</span>
               </el-form-item>
             </el-col>
             <el-col v-if="form.status === 1" :span="6">
@@ -318,13 +318,19 @@
                     label="任务金额"
                     prop="amount"
                     width="100"
-                    align="center"
-                  />
+                    header-align="center"
+                    align="right"
+                  >
+                    <template #default="scope">
+                      <span>{{ rowNum(scope.row.amount) }}</span>
+                    </template>
+                  </el-table-column>
                   <el-table-column
                     label="本次付款金额"
                     prop="arriveAmount"
                     width="100"
-                    align="center"
+                    header-align="center"
+                    align="right"
                   >
                     <template #default="scope">
                       <template v-if="editStatus">
@@ -345,15 +351,20 @@
                           "
                         />
                       </template>
-                      <template v-else>{{ scope.row.arriveAmount }}</template>
+                      <template v-else>{{ rowNum(scope.row.amount) }}</template>
                     </template>
                   </el-table-column>
                   <el-table-column
                     label="已付款金额"
                     prop="arrived"
                     width="100"
-                    align="center"
-                  />
+                    align="right"
+                    header-align="center"
+                  >
+                    <template #default="scope">
+                      <span>{{ rowNum(scope.row.amount) }}</span>
+                    </template>
+                  </el-table-column>
                 </el-table>
               </div>
             </el-col>
@@ -619,6 +630,20 @@ function cancel() {
   reset();
 }
 
+// 数字格式化
+function rowNum(num) {
+  if (!num) {
+    return;
+  }
+  num = num.toLocaleString(); // 3,000
+  if (num.indexOf(".") == -1) {
+    num = num + ".00"; //3,000.00
+  } else if (num.charAt(num.indexOf(".") == num.length - 2)) {
+    num = num + "0";
+  }
+  return num;
+}
+
 /** 表单重置 */
 function reset() {
   form.value = JSON.parse(JSON.stringify(contractEmpty));

+ 38 - 4
src/views/business/financial/collection/index.vue

@@ -113,7 +113,7 @@
         align="right"
       >
         <template #default="scope">
-          <span>{{ scope.row.arriveAmount.toFixed(2) }}</span>
+          <span>{{ rowNum(scope.row.arriveAmount) }}</span>
         </template>
       </el-table-column>
       <el-table-column
@@ -283,19 +283,18 @@ function getList() {
 }
 
 function getSummaries(param) {
-  // console.log("计算", param);
   const { columns, data } = param;
   const sums = [];
+  let indexOf;
   columns.forEach((column, index) => {
     if (column.label != "收款金额") {
       return;
     }
-
+    indexOf = index;
     const values = [];
 
     data.map((item) => {
       if (item.arriveStatus == 1) {
-        console.log(item);
         if (item.arriveAmount) {
           values.push(item.arriveAmount);
         }
@@ -313,10 +312,45 @@ function getSummaries(param) {
       }, 0)}`;
     }
   });
+  sums[indexOf] = numberToCurrencyNo(sums[indexOf]);
 
   return sums;
 }
 
+function numberToCurrencyNo(value) {
+  if (!value) return 0;
+  // 获取整数部分
+  const intPart = Math.trunc(value);
+
+  // 整数部分处理,增加,
+  const intPartFormat = intPart
+    .toString()
+    .replace(/(\d)(?=(?:\d{3})+$)/g, "$1,");
+  // 预定义小数部分
+
+  let floatPart = "";
+  // 将数值截取为小数部分和整数部分
+  const valueArray = value.toString().split(".");
+  if (valueArray.length === 2) {
+    // 有小数部分
+
+    floatPart = valueArray[1].toString(); // 取得小数部分
+    console.log("整数部分", intPartFormat + "." + floatPart, "小数部分");
+    return intPartFormat + "." + floatPart;
+  }
+  return intPartFormat + floatPart;
+}
+
+function rowNum(num) {
+  num = num.toLocaleString(); // 3,000
+  if (num.indexOf(".") == -1) {
+    num = num + ".00"; //3,000.00
+  } else if (num.charAt(num.indexOf(".") == num.length - 2)) {
+    num = num + "0";
+  }
+  return num;
+}
+
 /** 搜索按钮操作 */
 function handleQuery() {
   queryParams.value.pageNum = 1;

+ 27 - 13
src/views/business/financial/contract/form.vue

@@ -235,12 +235,12 @@
             </el-col>
             <el-col :span="6">
               <el-form-item label="应收款金额:" prop="remark">
-                <span>{{ form.contractAmount }}</span>
+                <span>{{ rowNum(form.contractAmount) }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="未收款金额:" prop="remark">
-                <span>{{ form.nonpaymentAmount }}</span>
+                <span>{{ rowNum(form.nonpaymentAmount) }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
@@ -312,7 +312,11 @@
                     prop="amount"
                     width="100"
                     align="center"
-                  />
+                  >
+                    <template #default="scope">
+                      <span>{{ rowNum(scope.row.amount) }}</span>
+                    </template>
+                  </el-table-column>
                   <el-table-column
                     label="本次付款金额"
                     prop="arriveAmount"
@@ -346,7 +350,11 @@
                     prop="arrived"
                     width="100"
                     align="center"
-                  />
+                  >
+                    <template #default="scope">
+                      <span>{{ rowNum(scope.row.arrived) }}</span>
+                    </template>
+                  </el-table-column>
                 </el-table>
               </div>
             </el-col>
@@ -449,15 +457,7 @@
 </template>
 <script setup>
 import { uploadFile } from "@/api/tool/file";
-// import {
-//   getOrder,
-//   initTaskTypes,
-//   addOrder,
-//   updateOrder,
-//   verifyOrder,
-//   alterOrder,
-//   dissolutionOrder,
-// } from "@/api/business/crm/contract";
+
 import {
   listAccount,
   listContract,
@@ -560,6 +560,20 @@ function open(row) {
   });
 }
 
+// 数字格式化
+function rowNum(num) {
+  if (!num) {
+    return;
+  }
+  num = num.toLocaleString(); // 3,000
+  if (num.indexOf(".") == -1) {
+    num = num + ".00"; //3,000.00
+  } else if (num.charAt(num.indexOf(".") == num.length - 2)) {
+    num = num + "0";
+  }
+  return num;
+}
+
 /** 取消按钮 */
 function cancel() {
   visible.value = false;

+ 18 - 2
src/views/business/financial/contract/index.vue

@@ -93,8 +93,12 @@
         header-align="center"
         align="right"
         prop="amount"
-        min-width="80"
-      />
+        min-width="90"
+      >
+        <template #default="scope">
+          <span>{{ rowNum(scope.row.amount) }}</span>
+        </template>
+      </el-table-column>
       <el-table-column
         label="签单人"
         align="center"
@@ -245,10 +249,22 @@ function resetQuery() {
     pageNum: 1,
     pageSize: 20,
     nonpayment: true,
+    orderByColumn: "create_time",
   };
   handleQuery();
 }
 
+// 数字格式化
+function rowNum(num) {
+  num = num.toLocaleString(); // 3,000
+  if (num.indexOf(".") == -1) {
+    num = num + ".00"; //3,000.00
+  } else if (num.charAt(num.indexOf(".") == num.length - 2)) {
+    num = num + "0";
+  }
+  return num;
+}
+
 // 多选框选中数据
 function handleSelectionChange(selection) {
   ids.value = selection.map((item) => item.id);

+ 426 - 125
src/views/business/financial/payment/form.vue

@@ -4,22 +4,59 @@
     <el-drawer :title="title" v-model="visible" direction="rtl" size="100%">
       <div class="page-container form-container">
         <div class="form-btns-container">
-          <span class="title-label"><el-icon>
+          <span class="title-label"
+            ><el-icon>
               <Document />
             </el-icon>
-            支出信息</span>
-          <template v-if="checkPermission(['business:payment:edit', 'business:payment:add'])">
-            <el-button v-if="editStatus" type="primary" size="small" icon="Finished" @click="submitForm">保存</el-button>
-            <el-button v-else-if="form.verifyStatus === 0" type="warning" size="small" icon="Edit"
-              @click="editStatus = true">修改</el-button>
-            <el-button v-if="form.id && editStatus" size="small" icon="Close" @click="editStatus = false">取消修改</el-button>
+            支出信息</span
+          >
+          <template
+            v-if="
+              checkPermission(['business:payment:edit', 'business:payment:add'])
+            "
+          >
+            <el-button
+              v-if="editStatus"
+              type="primary"
+              size="small"
+              icon="Finished"
+              @click="submitForm"
+              >保存</el-button
+            >
+            <el-button
+              v-else-if="form.verifyStatus === 0"
+              type="warning"
+              size="small"
+              icon="Edit"
+              @click="editStatus = true"
+              >修改</el-button
+            >
+            <el-button
+              v-if="form.id && editStatus"
+              size="small"
+              icon="Close"
+              @click="editStatus = false"
+              >取消修改</el-button
+            >
           </template>
-          <el-button v-show="form.id && !editStatus && form.verifyStatus === 0"
-            v-hasPermi="['business:payment:financialVerify']" type="primary" size="small" icon="Check"
-            @click="verifyHandler">财务审核</el-button>
-          <el-button v-show="form.id && !editStatus && form.verifyStatus === 1"
-            v-hasPermi="['business:payment:cashierVerify']" type="primary" size="small" icon="Check"
-            @click="cashierVerifyHandler">出纳审核</el-button>
+          <el-button
+            v-show="form.id && !editStatus && form.verifyStatus === 0"
+            v-hasPermi="['business:payment:financialVerify']"
+            type="primary"
+            size="small"
+            icon="Check"
+            @click="verifyHandler"
+            >财务审核</el-button
+          >
+          <el-button
+            v-show="form.id && !editStatus && form.verifyStatus === 1"
+            v-hasPermi="['business:payment:cashierVerify']"
+            type="primary"
+            size="small"
+            icon="Check"
+            @click="cashierVerifyHandler"
+            >出纳审核</el-button
+          >
           <div class="screen-btn" @click="handleScreen">
             <template v-if="!isFullscreen">
               <i class="fa fa-window-maximize" aria-hidden="true" />
@@ -35,76 +72,146 @@
             <!-- <span>关闭</span> -->
           </div>
         </div>
-        <div class="Y-scrollbar" style="
+        <div
+          class="Y-scrollbar"
+          style="
             position: absolute;
             top: 32px;
             bottom: 0;
             width: 100%;
             overflow: auto;
-          "></div>
-        <el-form ref="orderRef" class="master-container" size="small" :model="form" :rules="rules" label-width="100px">
+          "
+        ></div>
+        <el-form
+          ref="orderRef"
+          class="master-container"
+          size="small"
+          :model="form"
+          :rules="rules"
+          label-width="100px"
+        >
           <el-row :gutter="30">
             <el-col :span="6">
               <el-form-item label="支出流水号:">
-                <el-input v-if="editStatus" v-model.trim="form.flowNo" readonly size="small" type="text"
-                  placeholder="支出流水号" :clearable="true" />
+                <el-input
+                  v-if="editStatus"
+                  v-model.trim="form.flowNo"
+                  readonly
+                  size="small"
+                  type="text"
+                  placeholder="支出流水号"
+                  :clearable="true"
+                />
                 <span v-else>{{ form.flowNo }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="支出日期:" prop="formDate" required>
-                <el-date-picker v-if="editStatus" v-model="form.formDate" size="small" :clearable="true"
-                  format="YYYY-MM-DD" value-format="YYYY-MM-DD" align="center" type="date" placeholder="支出日期" />
+                <el-date-picker
+                  v-if="editStatus"
+                  v-model="form.formDate"
+                  size="small"
+                  :clearable="true"
+                  format="YYYY-MM-DD"
+                  value-format="YYYY-MM-DD"
+                  align="center"
+                  type="date"
+                  placeholder="支出日期"
+                />
                 <span v-else>{{ form.formDate }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="支出类目:">
-                <el-select v-if="editStatus" v-model.trim="form.paymentCauseId" placeholder="支出类目" size="small"
-                  :clearable="true" @change="paymentCauseChange">
-                  <el-option v-for="item in paymentTypes" :key="item.id" :label="item.name" :value="item.id" />
+                <el-select
+                  v-if="editStatus"
+                  v-model.trim="form.paymentCauseId"
+                  placeholder="支出类目"
+                  size="small"
+                  :clearable="true"
+                  @change="paymentCauseChange"
+                >
+                  <el-option
+                    v-for="item in paymentTypes"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  />
                 </el-select>
                 <span v-else>{{ form.paymentCause }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="支出科目:">
-                <el-select v-if="editStatus" v-model.trim="form.paymentSubjectId" placeholder="支出科目" size="small"
-                  :clearable="true" @change="paymentSubjectChange">
-                  <el-option v-for="item in paymentSubjects" :key="item.id" :label="item.name" :value="item.id" />
+                <el-select
+                  v-if="editStatus"
+                  v-model.trim="form.paymentSubjectId"
+                  placeholder="支出科目"
+                  size="small"
+                  :clearable="true"
+                  @change="paymentSubjectChange"
+                >
+                  <el-option
+                    v-for="item in paymentSubjects"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  />
                 </el-select>
                 <span v-else>{{ form.paymentSubject }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="收款账户名:">
-                <el-input v-if="editStatus" v-model.trim="form.acceptAccount" size="small" type="text" placeholder="收款账户名"
-                  :clearable="true" />
+                <el-input
+                  v-if="editStatus"
+                  v-model.trim="form.acceptAccount"
+                  size="small"
+                  type="text"
+                  placeholder="收款账户名"
+                  :clearable="true"
+                />
                 <span v-else>{{ form.acceptAccount }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="收款账号:">
                 <template v-if="editStatus">
-                  <el-input v-model.trim="form.acceptAccountNo" size="small" type="text" style="width: 66.67%"
-                    placeholder="收款账号" :clearable="true" />
+                  <el-input
+                    v-model.trim="form.acceptAccountNo"
+                    size="small"
+                    type="text"
+                    style="width: 66.67%"
+                    placeholder="收款账号"
+                    :clearable="true"
+                  />
                 </template>
-                <span v-else>{{ form.acceptAccountType }} -
-                  {{ form.acceptAccountNo }}</span>
+                <span v-else
+                  >{{ form.acceptAccountType }} -
+                  {{ form.acceptAccountNo }}</span
+                >
               </el-form-item>
             </el-col>
 
             <el-col :span="6">
               <el-form-item label="客户名称" prop="companyName" required>
-                <el-autocomplete v-if="editStatus" :fetch-suggestions="querySearchCompanyAsync" :trigger-on-focus="true"
-                  v-model="form.companyName" placeholder="请输入客户名称" popper-class="my-autocomplete"
-                  @select="handleSelectCompany">
+                <el-autocomplete
+                  v-if="editStatus"
+                  :fetch-suggestions="querySearchCompanyAsync"
+                  :trigger-on-focus="true"
+                  v-model="form.companyName"
+                  placeholder="请输入客户名称"
+                  popper-class="my-autocomplete"
+                  @select="handleSelectCompany"
+                >
                   <template #default="{ item }">
-                    <div style="
+                    <div
+                      style="
                         display: flex;
                         flex-direction: row;
                         justify-content: space-between;
-                      ">
+                      "
+                    >
                       <div class="name" style="font-size: 12px">
                         {{ item.name }}
                       </div>
@@ -117,10 +224,19 @@
             </el-col>
             <el-col :span="6">
               <el-form-item label="合同:" required>
-                <el-input v-if="editStatus" v-model.trim="form.contractNo" size="small" type="text" placeholder="请选择"
-                  :clearable="true">
+                <el-input
+                  v-if="editStatus"
+                  v-model.trim="form.contractNo"
+                  size="small"
+                  type="text"
+                  placeholder="请选择"
+                  :clearable="true"
+                >
                   <template #append>
-                    <el-button icon="Search" @click="() => contractChoiceHandler()" />
+                    <el-button
+                      icon="Search"
+                      @click="() => contractChoiceHandler()"
+                    />
                   </template>
                 </el-input>
                 <span v-else style="width: 100%">
@@ -133,19 +249,28 @@
             </el-col>
             <el-col :span="6">
               <el-form-item label="应收款金额:" prop="remark">
-                <span>{{ form.contractAmount }}</span>
+                <span>{{ rowNum(form.contractAmount) }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="已支出金额:" prop="remark">
-                <span>{{ form.payedAmount }}</span>
+                <span>{{ rowNum(form.payedAmount) }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="支出金额:" required>
-                <el-input-number v-if="editStatus" v-model.trim="form.amount" size="small" placeholder="收款金额"
-                  :clearable="true" :precision="2" controls-position="right" :controls="false" @change="amountChange" />
-                <span v-else>{{ form.amount }}</span>
+                <el-input-number
+                  v-if="editStatus"
+                  v-model.trim="form.amount"
+                  size="small"
+                  placeholder="收款金额"
+                  :clearable="true"
+                  :precision="2"
+                  controls-position="right"
+                  :controls="false"
+                  @change="amountChange"
+                />
+                <span v-else>{{ rowNum(form.amount) }}</span>
               </el-form-item>
             </el-col>
             <el-col v-if="form.verifyStatus === 2" :span="6">
@@ -155,8 +280,14 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="备注:">
-                <el-input v-if="editStatus" v-model.trim="form.remark" size="small" type="text" placeholder="备注"
-                  :clearable="true" />
+                <el-input
+                  v-if="editStatus"
+                  v-model.trim="form.remark"
+                  size="small"
+                  type="text"
+                  placeholder="备注"
+                  :clearable="true"
+                />
                 <span v-else style="word-break: break-all">{{
                   form.remark
                 }}</span>
@@ -173,28 +304,78 @@
                 </div>
               </div>
               <div class="details-body">
-                <el-table ref="filesTable" :data="form.details" size="small" height="100%" border
-                  header-row-class-name="list-header-row" highlight-current-row>
-                  <el-table-column type="index" label="序号" width="47" align="center" />
-                  <el-table-column label="任务名称" prop="taskTypeName" align="center" show-overflow-tooltip>
+                <el-table
+                  ref="filesTable"
+                  :data="form.details"
+                  size="small"
+                  height="100%"
+                  border
+                  header-row-class-name="list-header-row"
+                  highlight-current-row
+                >
+                  <el-table-column
+                    type="index"
+                    label="序号"
+                    width="47"
+                    align="center"
+                  />
+                  <el-table-column
+                    label="任务名称"
+                    prop="taskTypeName"
+                    align="center"
+                    show-overflow-tooltip
+                  >
                   </el-table-column>
-                  <el-table-column label="任务金额" prop="amount" width="100" align="center" />
-                  <el-table-column label="本次支出金额" prop="paymentAmount" width="100" align="center">
+                  <el-table-column
+                    label="任务金额"
+                    prop="amount"
+                    width="100"
+                    align="center"
+                  >
+                    <template #default="scope">
+                      <span>{{ rowNum(scope.row.amount) }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column
+                    label="本次支出金额"
+                    prop="paymentAmount"
+                    width="100"
+                    align="center"
+                  >
                     <template #default="scope">
                       <template v-if="editStatus">
-                        <el-input-number v-model="scope.row.paymentAmount" size="small" placeholder="本次支出金额"
-                          :precision="2" :controls="false" style="width: 100%" @change="(arg) =>
-                            amountChangeHandler(
-                              arg,
-                              scope.row,
-                              'paymentAmount'
-                            )
-                            " />
+                        <el-input-number
+                          v-model="scope.row.paymentAmount"
+                          size="small"
+                          placeholder="本次支出金额"
+                          :precision="2"
+                          :controls="false"
+                          style="width: 100%"
+                          @change="
+                            (arg) =>
+                              amountChangeHandler(
+                                arg,
+                                scope.row,
+                                'paymentAmount'
+                              )
+                          "
+                        />
                       </template>
-                      <template v-else>{{ scope.row.paymentAmount }}</template>
+                      <template v-else>{{
+                        rowNum(scope.row.paymentAmount)
+                      }}</template>
+                    </template>
+                  </el-table-column>
+                  <el-table-column
+                    label="已支出金额"
+                    prop="payment"
+                    width="100"
+                    align="center"
+                  >
+                    <template #default="scope">
+                      <span>{{ rowNum(scope.row.amount) }}</span>
                     </template>
                   </el-table-column>
-                  <el-table-column label="已支出金额" prop="payment" width="100" align="center" />
                 </el-table>
               </div>
             </el-col>
@@ -204,26 +385,61 @@
                   <i class="fa fa-th-list" aria-hidden="true" /> 附件
                   <i style="color: red">*</i>
                 </div>
-                <el-upload v-if="editStatus" action="#" :http-request="upload" :with-credentials="true"
-                  :show-file-list="false" multiple>
-                  <el-button size="small" type="primary" icon="Upload">点击上传</el-button>
+                <el-upload
+                  v-if="editStatus"
+                  action="#"
+                  :http-request="upload"
+                  :with-credentials="true"
+                  :show-file-list="false"
+                  multiple
+                >
+                  <el-button size="small" type="primary" icon="Upload"
+                    >点击上传</el-button
+                  >
                 </el-upload>
               </div>
               <div class="details-body">
-                <el-table ref="filesTable" :data="form.files" size="small" height="100%" border
-                  header-row-class-name="list-header-row" highlight-current-row>
-                  <el-table-column type="index" label="序号" width="47" align="center" />
-                  <el-table-column label="文件名" prop="originalFileName" align="center" show-overflow-tooltip>
+                <el-table
+                  ref="filesTable"
+                  :data="form.files"
+                  size="small"
+                  height="100%"
+                  border
+                  header-row-class-name="list-header-row"
+                  highlight-current-row
+                >
+                  <el-table-column
+                    type="index"
+                    label="序号"
+                    width="47"
+                    align="center"
+                  />
+                  <el-table-column
+                    label="文件名"
+                    prop="originalFileName"
+                    align="center"
+                    show-overflow-tooltip
+                  >
                     <template #default="scope">
-                      <el-button size="small" type="primary" link @click="openFile(scope.row)">{{
-                        scope.row.originalFileName }}</el-button>
+                      <el-button
+                        size="small"
+                        type="primary"
+                        link
+                        @click="openFile(scope.row)"
+                        >{{ scope.row.originalFileName }}</el-button
+                      >
                     </template>
                   </el-table-column>
                   <el-table-column label="操作" width="50" align="center">
                     <template #default="scope">
                       <div v-if="editStatus">
-                        <el-button size="small" link type="danger"
-                          @click="handlerDelAttach(scope.row, scope.$index)">删除</el-button>
+                        <el-button
+                          size="small"
+                          link
+                          type="danger"
+                          @click="handlerDelAttach(scope.row, scope.$index)"
+                          >删除</el-button
+                        >
                       </div>
                     </template>
                   </el-table-column>
@@ -234,55 +450,129 @@
         </div>
       </div>
     </el-drawer>
-    <el-dialog title="财务审核详情" v-model="rejectOpen" width="500px" append-to-body draggable>
+    <el-dialog
+      title="财务审核详情"
+      v-model="rejectOpen"
+      width="500px"
+      append-to-body
+      draggable
+    >
       <el-form ref="dictRef" :model="rejectForm" label-width="100" size="small">
         <el-form-item label="审核状态">
-          <el-select v-model.trim="rejectForm.verifyStatus" placeholder="请选择" size="small">
-            <el-option v-for="i in verified" :key="i.value" :label="i.label" :value="i.value" />
+          <el-select
+            v-model.trim="rejectForm.verifyStatus"
+            placeholder="请选择"
+            size="small"
+          >
+            <el-option
+              v-for="i in verified"
+              :key="i.value"
+              :label="i.label"
+              :value="i.value"
+            />
           </el-select>
         </el-form-item>
         <!-- <el-form-item label="支出附件上传" required>
 
         </el-form-item> -->
-        <el-form-item :label="rejectForm.verifyStatus == 2 ? '驳回原因' : '审核意见'" :prop="verifyRemark">
-          <el-input v-model.trim="rejectForm.verifyComment" type="textarea" maxlength="200" show-word-limit :rows="3"
-            placeholder="请输入审核意见" />
+        <el-form-item
+          :label="rejectForm.verifyStatus == 2 ? '驳回原因' : '审核意见'"
+          :prop="verifyRemark"
+        >
+          <el-input
+            v-model.trim="rejectForm.verifyComment"
+            type="textarea"
+            maxlength="200"
+            show-word-limit
+            :rows="3"
+            placeholder="请输入审核意见"
+          />
         </el-form-item>
       </el-form>
       <template #footer>
         <div class="dialog-footer">
-          <el-button type="primary" icon="Finished" size="small" @click="verifyUpload()">确 定</el-button>
-          <el-button icon="close" size="small" @click="rejectCancel">取 消</el-button>
+          <el-button
+            type="primary"
+            icon="Finished"
+            size="small"
+            @click="verifyUpload()"
+            >确 定</el-button
+          >
+          <el-button icon="close" size="small" @click="rejectCancel"
+            >取 消</el-button
+          >
         </div>
       </template>
     </el-dialog>
-    <el-dialog title="出纳审核详情" v-model="cashierOpen" width="500px" append-to-body draggable>
+    <el-dialog
+      title="出纳审核详情"
+      v-model="cashierOpen"
+      width="500px"
+      append-to-body
+      draggable
+    >
       <el-form ref="dictRef" :model="form" label-width="100" size="small">
         <el-form-item label="审核状态">
-          <el-select v-model.trim="cashierForm.verifyStatus" placeholder="请选择" size="small">
-            <el-option v-for="i in cashierVerified" :key="i.value" :label="i.label" :value="i.value" />
+          <el-select
+            v-model.trim="cashierForm.verifyStatus"
+            placeholder="请选择"
+            size="small"
+          >
+            <el-option
+              v-for="i in cashierVerified"
+              :key="i.value"
+              :label="i.label"
+              :value="i.value"
+            />
           </el-select>
         </el-form-item>
         <el-form-item label="实际支出时间" required>
-          <el-date-picker v-model.trim="cashierForm.actuallyDate" size="small" :clearable="true"
-            format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" align="center" type="datetime"
-            placeholder="实际付款时间" />
+          <el-date-picker
+            v-model.trim="cashierForm.actuallyDate"
+            size="small"
+            :clearable="true"
+            format="YYYY-MM-DD HH:mm:ss"
+            value-format="YYYY-MM-DD HH:mm:ss"
+            align="center"
+            type="datetime"
+            placeholder="实际付款时间"
+          />
         </el-form-item>
         <!-- <el-form-item label="支出附件上传" required>
         </el-form-item> -->
-        <el-form-item :label="cashierForm.verifyStatus == 4 ? '驳回原因' : '审核意见'" :prop="cashierVerifyComment">
-          <el-input v-model.trim="cashierForm.cashierVerifyComment" type="textarea" maxlength="200" show-word-limit
-            :rows="3" placeholder="请输入审核意见" />
+        <el-form-item
+          :label="cashierForm.verifyStatus == 4 ? '驳回原因' : '审核意见'"
+          :prop="cashierVerifyComment"
+        >
+          <el-input
+            v-model.trim="cashierForm.cashierVerifyComment"
+            type="textarea"
+            maxlength="200"
+            show-word-limit
+            :rows="3"
+            placeholder="请输入审核意见"
+          />
         </el-form-item>
       </el-form>
       <template #footer>
         <div class="dialog-footer">
-          <el-button type="primary" icon="Finished" size="small" @click="cashierVerifyUpload()">确 定</el-button>
-          <el-button icon="close" size="small" @click="cashierVerifyCancel">取 消</el-button>
+          <el-button
+            type="primary"
+            icon="Finished"
+            size="small"
+            @click="cashierVerifyUpload()"
+            >确 定</el-button
+          >
+          <el-button icon="close" size="small" @click="cashierVerifyCancel"
+            >取 消</el-button
+          >
         </div>
       </template>
     </el-dialog>
-    <dialog-contract-choice ref="contractChoiceRef" @choice="contractChoiceHandle" />
+    <dialog-contract-choice
+      ref="contractChoiceRef"
+      @choice="contractChoiceHandle"
+    />
   </div>
 </template>
 <script setup>
@@ -308,7 +598,7 @@ import { listSource } from "@/api/settings/source";
 import { listUser } from "@/api/system/user";
 import CustomerFormCom from "@/components/CustomerFormCom";
 import DialogContractChoice from "@/views/dialog/DialogContractChoice.vue";
-import { formatDate } from "@/utils/index";
+import { formatDate, rowNum } from "@/utils/index";
 import { ref } from "vue";
 import useUserStore from "@/store/modules/user";
 const { proxy } = getCurrentInstance();
@@ -318,7 +608,7 @@ const baseUrl = import.meta.env.VITE_APP_BASE_API;
 const props = defineProps({
   getList: {
     type: Function,
-    default: () => { },
+    default: () => {},
   },
 });
 const { getList } = toRefs(props);
@@ -334,9 +624,9 @@ const sourceCategories = ref([]);
 const type = ref("");
 
 const rejectOpen = ref(false);
-const rejectForm = ref({})
+const rejectForm = ref({});
 
-const cashierForm = ref({})
+const cashierForm = ref({});
 
 const detailEmpty = {
   id: null,
@@ -418,18 +708,21 @@ const data = reactive({
   cashierVerified: [
     {
       value: 1,
-      label: "未审核"
-    }, {
+      label: "未审核",
+    },
+    {
       value: 3,
-      label: "通过"
-    }, {
+      label: "通过",
+    },
+    {
       value: 4,
       label: "驳回",
-    }
+    },
   ],
-  cashierOpen: false
+  cashierOpen: false,
 });
-const { form, rules, timeOptions, verified, cashierVerified, cashierOpen } = toRefs(data);
+const { form, rules, timeOptions, verified, cashierVerified, cashierOpen } =
+  toRefs(data);
 /***********************  方法区  ****************************/
 /** 打开抽屉 */
 function open(id) {
@@ -532,22 +825,22 @@ function verifyHandler() {
 }
 
 function cashierVerifyHandler() {
-  cashierOpen.value = true
+  cashierOpen.value = true;
 }
 
 function rejectHandler() {
   rejectOpen.value = true;
-  rejectForm.value = proxy.deepClone(form.value)
+  rejectForm.value = proxy.deepClone(form.value);
 }
 
 function rejectCancel() {
   rejectOpen.value = false;
-  rejectForm.value = {}
+  rejectForm.value = {};
 }
 
 function cashierVerifyCancel() {
-  cashierOpen.value = false
-  cashierForm.value = proxy.deepClone(form.value)
+  cashierOpen.value = false;
+  cashierForm.value = proxy.deepClone(form.value);
 }
 
 function rejectSubmitHandler() {
@@ -567,7 +860,8 @@ function verifyUpload() {
   }
   if (
     rejectForm.value.verifyStatus === 2 &&
-    (rejectForm.value.verifyComment == null || rejectForm.value.verifyComment === "")
+    (rejectForm.value.verifyComment == null ||
+      rejectForm.value.verifyComment === "")
   ) {
     proxy.$modal.msgError("请输入审核意见");
     return;
@@ -586,18 +880,23 @@ function cashierVerifyUpload() {
     proxy.$modal.msgError("请选择审核结果");
     return;
   }
-  if (cashierForm.value.actuallyDate == null || cashierForm.value.actuallyDate === "") {
+  if (
+    cashierForm.value.actuallyDate == null ||
+    cashierForm.value.actuallyDate === ""
+  ) {
     proxy.$modal.msgError("0");
     return;
   }
   if (
     cashierForm.value.verifyStatus === 4 &&
-    (cashierForm.value.verifyComment == null || cashierForm.value.verifyComment === "")
+    (cashierForm.value.verifyComment == null ||
+      cashierForm.value.verifyComment === "")
   ) {
     proxy.$modal.msgError("请输入审核意见");
     return;
   }
-  cashierForm.value.paymentStatus = cashierForm.value.verifyStatus === 3 ? 1 : 0;
+  cashierForm.value.paymentStatus =
+    cashierForm.value.verifyStatus === 3 ? 1 : 0;
   verifyPayment(cashierForm.value).then((res) => {
     open(cashierForm.value.id);
     getList.value();
@@ -662,11 +961,11 @@ function querySearchCompanyAsync(queryString, cb) {
   const query =
     queryString.length > 0
       ? {
-        keyword: queryString,
-        pageSize: 50,
-        pageNum: 1,
-        orderByColumn: "create_time",
-      }
+          keyword: queryString,
+          pageSize: 50,
+          pageNum: 1,
+          orderByColumn: "create_time",
+        }
       : { pageSize: 50, pageNum: 1, orderByColumn: "create_time" };
   listCompany(query).then((res) => {
     cb(res.rows);
@@ -744,12 +1043,14 @@ function paymentSubjectChange(id) {
 
 function checkPermission(templatePermission) {
   const all_permission = "*:*:*";
-  const permissions = useUserStore().permissions
-  const hasPermissions = permissions.some(permission => {
-    return all_permission === permission || templatePermission.includes(permission)
-  })
-  console.log(hasPermissions)
-  return hasPermissions
+  const permissions = useUserStore().permissions;
+  const hasPermissions = permissions.some((permission) => {
+    return (
+      all_permission === permission || templatePermission.includes(permission)
+    );
+  });
+  console.log(hasPermissions);
+  return hasPermissions;
 }
 
 init();

+ 208 - 44
src/views/business/financial/payment/index.vue

@@ -2,98 +2,248 @@
   <div class="page-container list-container">
     <!-- 功能按钮区 -->
     <div class="list-btns-container">
-      <el-button type="primary" size="small" icon="Plus" @click="handleAdd"
-        v-hasPermi="['business:payment:add']">新增</el-button>
+      <el-button
+        type="primary"
+        size="small"
+        icon="Plus"
+        @click="handleAdd"
+        v-hasPermi="['business:payment:add']"
+        >新增</el-button
+      >
       <el-dropdown>
         <el-button type="primary" size="small">
           其它<el-icon class="el-icon--right"><arrow-down /></el-icon>
         </el-button>
         <template #dropdown>
           <el-dropdown-menu>
-            <el-dropdown-item icon="Download" @click="handleExport" v-hasPermi="['business:payment:export']">
-              导出</el-dropdown-item>
+            <el-dropdown-item
+              icon="Download"
+              @click="handleExport"
+              v-hasPermi="['business:payment:export']"
+            >
+              导出</el-dropdown-item
+            >
           </el-dropdown-menu>
         </template>
       </el-dropdown>
     </div>
     <!-- 搜索区 -->
-    <el-form class="list-search-container" size="small" :model="queryParams" ref="queryRef" :inline="true"
-      label-width="68px">
+    <el-form
+      class="list-search-container"
+      size="small"
+      :model="queryParams"
+      ref="queryRef"
+      :inline="true"
+      label-width="68px"
+    >
       <el-form-item label="客户名称:" prop="companyName">
-        <el-input v-model="queryParams.companyName" style="width: 150px" placeholder="请输入客户名称" clearable
-          @keyup.enter="handleQuery" />
+        <el-input
+          v-model="queryParams.companyName"
+          style="width: 150px"
+          placeholder="请输入客户名称"
+          clearable
+          @keyup.enter="handleQuery"
+        />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button type="primary" icon="Search" @click="handleQuery"
+          >搜索</el-button
+        >
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <!-- 列表区 -->
-    <el-table v-loading="loading" :data="orderList" size="small" border height="100%"
-      @selection-change="handleSelectionChange">
+    <el-table
+      v-loading="loading"
+      :data="orderList"
+      size="small"
+      border
+      height="100%"
+      @selection-change="handleSelectionChange"
+    >
       <el-table-column type="selection" width="55" align="center" />
       <!-- <el-table-column type="index" label="序号" width="50" align="center" /> -->
-      <el-table-column v-if="getShowStatus(2)" label="客户名称" prop="companyName" min-width="250" align="center" />
-      <el-table-column v-if="getShowStatus(16)" label="服务公司" prop="serviceCompanyName" width="200" align="center" />
-      <el-table-column v-if="getShowStatus(3)" label="订单号" prop="formNo" min-width="200" align="center" />
-      <el-table-column v-if="getShowStatus(4)" label="支出日期" prop="formDate" min-width="90" align="center">
+      <el-table-column
+        v-if="getShowStatus(2)"
+        label="客户名称"
+        prop="companyName"
+        min-width="250"
+        align="center"
+      />
+      <el-table-column
+        v-if="getShowStatus(16)"
+        label="服务公司"
+        prop="serviceCompanyName"
+        width="200"
+        align="center"
+      />
+      <el-table-column
+        v-if="getShowStatus(3)"
+        label="订单号"
+        prop="formNo"
+        min-width="200"
+        align="center"
+      />
+      <el-table-column
+        v-if="getShowStatus(4)"
+        label="支出日期"
+        prop="formDate"
+        min-width="90"
+        align="center"
+      >
         <template #default="scope">
           {{
             scope.row.formDate
-            ? moment(scope.row.formDate).format("YYYY-MM-DD")
-            : ""
+              ? moment(scope.row.formDate).format("YYYY-MM-DD")
+              : ""
           }}
         </template>
       </el-table-column>
       <!-- <el-table-column label="服务公司" prop="subsidiary" width="150" align="center" /> -->
-      <el-table-column v-if="getShowStatus(5)" label="支出事由" prop="paymentCause" min-width="90" align="center" />
-      <el-table-column v-if="getShowStatus(6)" label="支出科目" prop="paymentSubject" min-width="90" align="center"
-        show-overflow-tooltip />
-      <el-table-column v-if="getShowStatus(7)" label="支出金额" prop="sumAmount" width="80" header-align="center"
-        align="right" />
+      <el-table-column
+        v-if="getShowStatus(5)"
+        label="支出事由"
+        prop="paymentCause"
+        min-width="90"
+        align="center"
+      />
+      <el-table-column
+        v-if="getShowStatus(6)"
+        label="支出科目"
+        prop="paymentSubject"
+        min-width="90"
+        align="center"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        v-if="getShowStatus(7)"
+        label="支出金额"
+        prop="sumAmount"
+        width="80"
+        header-align="center"
+        align="right"
+      >
+        <template #default="scope">
+          <span>{{ rowNum(scope.row.sumAmount) }}</span>
+        </template>
+      </el-table-column>
       <!-- <el-table-column label="支出状态" prop="paymentStatus" width="90" align="center">
             <template #default="scope"> {{ scope.row.paymentStatus === 0 ? '未支出' : '已支出' }} </template>
           </el-table-column>
           <el-table-column label="审核状态" prop="verifyStatus" width="90" align="center">
             <template #default="scope"> {{ scope.row.verifyStatus === 0 ? '待审核' : scope.row.verifyStatus === 1 ? '审核通过' : '审核驳回' }} </template>
           </el-table-column> -->
-      <el-table-column v-if="getShowStatus(15)" label="审核日期" prop="verifyDate" width="150" align="center" />
-      <el-table-column v-if="getShowStatus(8)" label="审核状态" prop="status" min-width="100" align="center">
+      <el-table-column
+        v-if="getShowStatus(15)"
+        label="审核日期"
+        prop="verifyDate"
+        width="150"
+        align="center"
+      />
+      <el-table-column
+        v-if="getShowStatus(8)"
+        label="审核状态"
+        prop="status"
+        min-width="120"
+        align="center"
+      >
         <template #header>
           <!-- <el-badge v-if="unVerifiedNum > 0" is-dot>审核状态</el-badge> -->
           <div>审核状态</div>
         </template>
         <template #default="scope">
-          <span v-if="scope.row.verifyStatus === 0" style="color: #cd853f">未审核</span>
-          <span v-else-if="scope.row.verifyStatus === 1" style="color: #32cd32">财务审核通过</span>
-          <span v-else-if="scope.row.verifyStatus === 2" style="color: #dc143c">财务审核不通过</span>
-          <span v-else-if="scope.row.verifyStatus === 3" style="color: #32cd32">出纳审核通过</span>
-          <span v-else-if="scope.row.verifyStatus === 4" style="color: #dc143c">出纳审核不通过</span>
+          <span v-if="scope.row.verifyStatus === 0" style="color: #cd853f"
+            >未审核</span
+          >
+          <span v-else-if="scope.row.verifyStatus === 1" style="color: #32cd32"
+            >财务审核通过</span
+          >
+          <span v-else-if="scope.row.verifyStatus === 2" style="color: #dc143c"
+            >财务审核不通过</span
+          >
+          <span v-else-if="scope.row.verifyStatus === 3" style="color: #32cd32"
+            >出纳审核通过</span
+          >
+          <span v-else-if="scope.row.verifyStatus === 4" style="color: #dc143c"
+            >出纳审核不通过</span
+          >
         </template>
       </el-table-column>
-      <el-table-column v-if="getShowStatus(9)" label="支付状态" min-width="100" prop="arriveStatus" align="center">
+      <el-table-column
+        v-if="getShowStatus(9)"
+        label="支付状态"
+        min-width="100"
+        prop="arriveStatus"
+        align="center"
+      >
         <template #default="scope">
-          <span v-if="scope.row.paymentStatus === 0" style="color: #dc143c">未支付</span>
-          <span v-else-if="scope.row.paymentStatus === 1" style="color: #32cd32">已支付</span>
-          <span v-else-if="scope.row.paymentStatus === 2" style="color: #cd853f">部分支付</span>
+          <span v-if="scope.row.paymentStatus === 0" style="color: #dc143c"
+            >未支付</span
+          >
+          <span v-else-if="scope.row.paymentStatus === 1" style="color: #32cd32"
+            >已支付</span
+          >
+          <span v-else-if="scope.row.paymentStatus === 2" style="color: #cd853f"
+            >部分支付</span
+          >
         </template>
       </el-table-column>
-      <el-table-column v-if="getShowStatus(10)" label="收款账户名" prop="acceptAccount" min-width="100" align="center" />
-      <el-table-column v-if="getShowStatus(11)" label="收款账号" prop="acceptAccountNo" width="90" align="center" />
-      <el-table-column v-if="getShowStatus(12)" label="等待审核" prop="waitForVerify" min-width="90" align="center" />
-      <el-table-column v-if="getShowStatus(13)" label="申请人" prop="applierName" min-width="130" align="center" />
-      <el-table-column v-if="getShowStatus(14)" label="备注" prop="remark" align="center" />
+      <el-table-column
+        v-if="getShowStatus(10)"
+        label="收款账户名"
+        prop="acceptAccount"
+        min-width="100"
+        align="center"
+      />
+      <el-table-column
+        v-if="getShowStatus(11)"
+        label="收款账号"
+        prop="acceptAccountNo"
+        width="90"
+        align="center"
+      />
+      <el-table-column
+        v-if="getShowStatus(12)"
+        label="等待审核"
+        prop="waitForVerify"
+        min-width="90"
+        align="center"
+      />
+      <el-table-column
+        v-if="getShowStatus(13)"
+        label="申请人"
+        prop="applierName"
+        min-width="130"
+        align="center"
+      />
+      <el-table-column
+        v-if="getShowStatus(14)"
+        label="备注"
+        prop="remark"
+        align="center"
+      />
       <el-table-column label="操作" fixed="right" width="60" align="center">
         <template #default="scope">
-          <el-button link type="primary" size="small" @click="handleFormPageOpen(scope.row.id)">查看</el-button>
+          <el-button
+            link
+            type="primary"
+            size="small"
+            @click="handleFormPageOpen(scope.row.id)"
+            >查看</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
     <payment-form ref="paymentRef" :get-list="getList" />
     <!-- 分页 -->
-    <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
-      @pagination="getList" />
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize"
+      @pagination="getList"
+    />
   </div>
 </template>
 
@@ -200,6 +350,20 @@ function handleView(id) {
   proxy.$refs.paymentRef.open(id);
 }
 
+// 数字格式化
+function rowNum(num) {
+  if (!num) {
+    return;
+  }
+  num = num.toLocaleString(); // 3,000
+  if (num.indexOf(".") == -1) {
+    num = num + ".00"; //3,000.00
+  } else if (num.charAt(num.indexOf(".") == num.length - 2)) {
+    num = num + "0";
+  }
+  return num;
+}
+
 /** 删除按钮操作 */
 function handleDelete(row) {
   const _ids = row.id || ids.value;
@@ -212,7 +376,7 @@ function handleDelete(row) {
       getList();
       proxy.$modal.msgSuccess("删除成功!");
     })
-    .catch(() => { });
+    .catch(() => {});
 }
 
 function handleAlter(row) {
@@ -231,7 +395,7 @@ function handleDissolution() {
       getList();
       proxy.$modal.msgSuccess("删除成功!");
     })
-    .catch(() => { });
+    .catch(() => {});
 }
 
 /** 导出按钮操作 */
@@ -239,7 +403,7 @@ function handleExport() {
   exportOrder(queryParams.value);
 }
 
-function handleImport() { }
+function handleImport() {}
 
 function getShowStatus(key) {
   const index = showRows.value.findIndex((l) => l === key);

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff