cz пре 1 година
родитељ
комит
33c2625cec

+ 1 - 1
src/assets/styles/mixin.scss

@@ -63,4 +63,4 @@
     border-top: $transparent-border-style;
     border-bottom: $transparent-border-style;
   }
-}
+}

+ 40 - 131
src/components/byTable/index.vue

@@ -1,31 +1,16 @@
 <template>
   <div class="header-actions" v-if="getActionList.length != 0">
     <div class="overflow-box">
-      <el-button
-        v-for="(item, index) in getActionList"
-        :key="index"
-        :type="item.type || 'primary'"
-        :plain="item.plain || false"
-        v-bind="getHeaderActions(item)"
-        @click="item.action"
-        :disabled="item.disabled || false"
-      >
+      <el-button v-for="(item, index) in getActionList" :key="index" :type="item.type || 'primary'" :plain="item.plain || false"
+                 v-bind="getHeaderActions(item)" @click="item.action" :disabled="item.disabled || false">
         {{ item.text }}
       </el-button>
     </div>
   </div>
   <!-- statWarpHeight > 200 &&  -->
-  <div
-    class="stat-warp"
-    v-if="statConfig.length != 0"
-    :class="isMore ? 'show-more' : ''"
-  >
+  <div class="stat-warp" v-if="statConfig.length != 0" :class="isMore ? 'show-more' : ''">
     <div class="title">
-      <select
-        v-model="statSelectVal"
-        v-if="statConfig.length > 1"
-        @change="changeStatData"
-      >
+      <select v-model="statSelectVal" v-if="statConfig.length > 1" @change="changeStatData">
         <option :value="index" v-for="(i, index) in statConfig" :key="index">
           {{ i.label }}
         </option>
@@ -33,34 +18,21 @@
       <div v-if="statConfig.length === 1">{{ statConfig[0].label }}</div>
     </div>
     <!-- v-if="statWarpHeight > 200" -->
-    <div class="more-btn"  @click="isMore = !isMore" >
+    <div class="more-btn" @click="isMore = !isMore">
       <span>
         <i v-if="!isMore" class="iconfont icon-btn_xiala22"></i>
         <i v-else class="iconfont icon-btn_shouqi22"></i>
-        
+
       </span>
     </div>
     <ul id="statWarp">
-      <li
-        v-show="!i.data"
-        :class="'theme' + i.type"
-        v-for="(i, index) in statConfig[statSelectVal].data"
-        :key="index"
-        @click="i.click ? i.click(i, index) : ''"
-        :style="i.click ? 'cursor: pointer' : ''"
-      >
+      <li v-show="!i.data" :class="'theme' + i.type" v-for="(i, index) in statConfig[statSelectVal].data" :key="index"
+          @click="i.click ? i.click(i, index) : ''" :style="i.click ? 'cursor: pointer' : ''">
         <div class="label">{{ i.label }}</div>
         <div class="num">{{ i.num }}</div>
       </li>
-      <li
-        v-show="i.data"
-        v-for="(i, index) in statConfig[statSelectVal].data"
-        :key="index"
-        class="multi-data"
-        :class="'theme' + i.type"
-        @click="i.click ? i.click(i, index) : ''"
-        :style="i.click ? 'cursor: pointer' : ''"
-      >
+      <li v-show="i.data" v-for="(i, index) in statConfig[statSelectVal].data" :key="index" class="multi-data" :class="'theme' + i.type"
+          @click="i.click ? i.click(i, index) : ''" :style="i.click ? 'cursor: pointer' : ''">
         <div class="label">{{ i.label }}</div>
         <div class="num-warp">
           <div class="num-box" v-for="(j, jindex) in i.data" :key="jindex">
@@ -80,12 +52,7 @@
     </header>
     <div class="by-search" v-if="!hideSearch">
       <div style="display: flex">
-        <div
-          class="by-dropdown"
-          v-for="(i, index) in selectConfigCopy"
-          :key="i.prop"
-          style="margin-right: 10px"
-        >
+        <div class="by-dropdown" v-for="(i, index) in selectConfigCopy" :key="i.prop" style="margin-right: 10px">
           <div class="by-dropdown-title">
             {{
               pagination[i.prop]
@@ -98,19 +65,10 @@
             <i style="margin-left: 5px" class="iconfont icon-iconm_xialan1"></i>
           </div>
           <ul class="by-dropdown-lists">
-            <li
-              @click="searchItemSelct('all', i, index)"
-              v-if="i.isShowAll === false ? i.isShowAll : true"
-              style=""
-            >
+            <li @click="searchItemSelct('all', i, index)" v-if="i.isShowAll === false ? i.isShowAll : true" style="">
               {{ $t("common.all") }}
             </li>
-            <li
-              v-for="j in i.data"
-              :key="j.value"
-              @click="searchItemSelct(j, i)"
-              style=""
-            >
+            <li v-for="j in i.data" :key="j.value" @click="searchItemSelct(j, i)" style="">
               {{ j.label }}
             </li>
           </ul>
@@ -118,26 +76,11 @@
       </div>
 
       <div style="display: flex">
-        <el-input
-          :placeholder="$t('common.pleaseEnterKeywords')"
-          suffix-icon="search"
-          size="mini"
-          v-model="pagination.keyword"
-          @keyup.enter="searchFn"
-        >
+        <el-input :placeholder="$t('common.pleaseEnterKeywords')" suffix-icon="search" size="mini" v-model="pagination.keyword"
+                  @keyup.enter="searchFn">
         </el-input>
-        <el-button
-          type="primary"
-          style="margin-left: 10px"
-          size="default"
-          v-no-double-click="searchFn"
-          >{{ $t("common.search") }}</el-button
-        >
-        <div
-          class="more-icon"
-          @click="retrievalModalFn"
-          v-if="$attrs.onMoreSearch"
-        >
+        <el-button type="primary" style="margin-left: 10px" size="default" v-no-double-click="searchFn">{{ $t("common.search") }}</el-button>
+        <div class="more-icon" @click="retrievalModalFn" v-if="$attrs.onMoreSearch">
           <i class="iconfont icon-iconx_saixuan"></i>
         </div>
       </div>
@@ -147,52 +90,25 @@
         <slot />
       </div>
 
-      <el-table
-        ref="hocElTable"
-        
-        :data="source"
-        v-if="!hideTable"
-        style="width: 100%"
-        v-bind="$attrs"
-        v-on="tableEvents"
-        row-key="id"
-        lazy
-        :load="load"
-        :tree-props="{
+      <el-table ref="hocElTable" :data="source" v-if="!hideTable" style="width: 100%" v-bind="$attrs" v-on="tableEvents" row-key="id" lazy
+                :load="load" :tree-props="{
           children: 'children',
           hasChildren: 'hasChildren',
-        }"
-        :height="tableHeight"
-      >
-        <el-table-column
-          v-for="(item, index) in config"
-          :key="index"
-          v-bind="getAttrsValue(item)"
-          :type="item.type || ''"
-          :selectable="
+        }" :height="tableHeight">
+        <el-table-column v-for="(item, index) in config" :key="index" v-bind="getAttrsValue(item)" :type="item.type || ''" :selectable="
             (rowData, rowIndex) => isSelectable(rowData, rowIndex, item)
-          "
-        >
+          ">
           <template #default="scope" v-if="!item.type">
-            <slot
-              :name="item.attrs.slot"
-              :item="scope.row"
-              v-if="item.attrs.slot"
-            >
+            <slot :name="item.attrs.slot" :item="scope.row" v-if="item.attrs.slot">
               插槽占位符
             </slot>
             <div v-else-if="isFunction(getValue(scope, item))">
-              <component
-                :is="renderTypeList[getMatchRenderFunction(item)].target"
-                :cell-list="getValue(scope, item)()"
-                :row="scope.row"
-                :parent="getParent"
-                @click="
+              <component :is="renderTypeList[getMatchRenderFunction(item)].target" :cell-list="getValue(scope, item)()" :row="scope.row"
+                         :parent="getParent" @click="
                   ($event) => {
                     handleNativeClick(getAttrsValue(item), $event, item);
                   }
-                "
-              />
+                " />
             </div>
             <div v-else>
               {{ getValue(scope, item) }}
@@ -201,21 +117,10 @@
         </el-table-column>
       </el-table>
 
-      <el-row
-        v-if="!hidePagination"
-        class="table-pagination"
-        justify="end"
-        type="flex"
-      >
-        <el-pagination
-          background
-          layout="total, sizes, prev, pager, next, jumper"
-          :current-page="getPagination.pageNum"
-          :page-size="getPagination.pageSize"
-          :total="getPagination.total"
-          @size-change="handleSizeChange"
-          @current-change="handlePageChange"
-        />
+      <el-row v-if="!hidePagination" class="table-pagination" justify="end" type="flex">
+        <el-pagination background layout="total, sizes, prev, pager, next, jumper" :current-page="getPagination.pageNum"
+                       :page-size="getPagination.pageSize" :page-sizes="[10,50,100,500,1000]" :total="getPagination.total"
+                       @size-change="handleSizeChange" @current-change="handlePageChange" />
       </el-row>
     </component>
   </div>
@@ -360,7 +265,7 @@ export default defineComponent({
     const changeStatData = () => {
       statWarpHeight.value = document.getElementById("statWarp").offsetHeight;
     };
-    
+
     let statWarpHeight = ref(0);
     watch(
       proxy.statConfig,
@@ -370,7 +275,7 @@ export default defineComponent({
           statWarpHeight.value =
             document.getElementById("statWarp").offsetHeight;
         }, 500);
-      }, 
+      },
       { immediate: true }
     );
     let statSelectVal = ref(0);
@@ -449,7 +354,7 @@ export default defineComponent({
       return isFn(fn);
     };
     const searchFn = (val) => {
-      if(props.loading) return;
+      if (props.loading) return;
       proxy.$emit(
         "getList",
         Object.assign(props.filterParams, {
@@ -597,9 +502,13 @@ export default defineComponent({
     font-size: 12px;
     line-height: 30px;
     text-align: center;
-    background: linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.8) 100%);
-    i{
-      color:#999;
+    background: linear-gradient(
+      180deg,
+      rgba(255, 255, 255, 0) 0%,
+      rgba(255, 255, 255, 0.8) 100%
+    );
+    i {
+      color: #999;
     }
   }
   .title {

+ 35 - 161
src/components/process/SendPurchase.vue

@@ -1,12 +1,6 @@
 <template>
   <div style="width: 100%; padding: 0px 15px">
-    <el-form
-      :model="formData.data"
-      :rules="rules"
-      ref="formDom"
-      label-position="top"
-      :disabled="judgeStatus()"
-    >
+    <el-form :model="formData.data" :rules="rules" ref="formDom" label-position="top" :disabled="judgeStatus()">
       <div class="_t">基础信息</div>
       <el-row :gutter="10">
         <el-col :span="6">
@@ -23,50 +17,23 @@
         </el-col>
         <el-col :span="6">
           <el-form-item label="采购时间" prop="purchaseTime">
-            <el-date-picker
-              v-model="formData.data.purchaseTime"
-              type="datetime"
-              placeholder="请选择"
-              style="width: 100%"
-            />
+            <el-date-picker v-model="formData.data.purchaseTime" type="datetime" placeholder="请选择" style="width: 100%" />
           </el-form-item>
         </el-col>
       </el-row>
       <el-row :gutter="10">
         <el-col :span="6">
           <el-form-item label="供应商" prop="supplyId">
-            <el-select
-              v-model="formData.data.supplyId"
-              placeholder="请选择"
-              @change="handleChangeSupplier"
-              filterable
-              style="width: 100%"
-            >
-              <el-option
-                v-for="item in supplierData"
-                :label="item.name"
-                :value="item.id"
-                :key="item.id"
-              >
+            <el-select v-model="formData.data.supplyId" placeholder="请选择" @change="handleChangeSupplier" filterable style="width: 100%">
+              <el-option v-for="item in supplierData" :label="item.name" :value="item.id" :key="item.id">
               </el-option>
             </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="6">
           <el-form-item label="发票类型" prop="invoiceType">
-            <el-select
-              v-model="formData.data.invoiceType"
-              placeholder="请选择"
-              @change="handleChangeInvoiceType"
-              filterable
-              style="width: 100%"
-            >
-              <el-option
-                v-for="item in invoiceTypeData"
-                :label="item.label"
-                :value="item.value"
-                :key="item.value"
-              >
+            <el-select v-model="formData.data.invoiceType" placeholder="请选择" @change="handleChangeInvoiceType" filterable style="width: 100%">
+              <el-option v-for="item in invoiceTypeData" :label="item.label" :value="item.value" :key="item.value">
               </el-option>
             </el-select>
           </el-form-item>
@@ -82,96 +49,48 @@
         </el-col>
       </el-row>
       <el-form-item label="采购说明" prop="purchaseContent">
-        <el-input
-          v-model="formData.data.purchaseContent"
-          placeholder="请输入"
-          type="textarea"
-        >
+        <el-input v-model="formData.data.purchaseContent" placeholder="请输入" type="textarea">
         </el-input>
       </el-form-item>
       <div class="_t">采购明细</div>
       <el-form-item>
-        <el-button
-          type="primary"
-          @click="openProduct = true"
-          style="margin: 10px 0"
-          v-if="ids.length == 0"
-        >
+        <el-button type="primary" @click="openProduct = true" style="margin: 10px 0" v-if="ids.length == 0">
           添加货品
         </el-button>
         <el-table :data="formData.data.purchaseDetailList">
-          <el-table-column
-            prop="goodType"
-            label="货品类型"
-            :formatter="(row) => (row.goodType == 1 ? '产品' : '物料')"
-          />
+          <el-table-column prop="goodType" label="货品类型" :formatter="(row) => (row.goodType == 1 ? '产品' : '物料')" />
           <el-table-column prop="productCode" label="货品编码" />
           <el-table-column prop="productName" label="货品名称" />
           <el-table-column prop="productSpec" label="规格型号" />
-          <el-table-column
-            prop="productUnit"
-            label="单位"
-            :formatter="
+          <el-table-column prop="productUnit" label="单位" :formatter="
               (row) =>
                 row.goodType == 1
                   ? dictValueLabel(row.productUnit, productUnit)
                   : dictValueLabel(row.productUnit, productUnitOne)
-            "
-          />
-          <el-table-column
-            prop="subscribeCount"
-            label="申购数量"
-            v-if="ids.length > 0"
-          />
-          <el-table-column
-            prop="purchaseCount"
-            label="已采购数量"
-            v-if="ids.length > 0"
-          />
+            " />
+          <el-table-column prop="subscribeCount" label="申购数量" v-if="ids.length > 0" />
+          <el-table-column prop="purchaseCount" label="已采购数量" v-if="ids.length > 0" />
           <el-table-column prop="count" label="本次采购" min-width="150">
             <template #default="{ row, $index }">
-              <el-form-item
-                :prop="'purchaseDetailList.' + $index + '.count'"
-                :rules="rules.count"
-                :inline-message="true"
-              >
-                <el-input-number
-                  onmousewheel="return false;"
-                  v-model="formData.data.purchaseDetailList[$index].count"
-                  :controls="false"
-                  :min="0"
-                  @change="(e) => handleChangeMoney(e, $index, 'count')"
-                />
+              <el-form-item :prop="'purchaseDetailList.' + $index + '.count'" :rules="rules.count" :inline-message="true">
+                <el-input-number onmousewheel="return false;" v-model="formData.data.purchaseDetailList[$index].count" :controls="false" :min="0"
+                                 @change="(e) => handleChangeMoney(e, $index, 'count')" />
               </el-form-item>
             </template>
           </el-table-column>
           <el-table-column prop="price" label="单价" min-width="150">
             <template #default="{ row, $index }">
-              <el-form-item
-                :prop="'purchaseDetailList.' + $index + '.price'"
-                :rules="rules.price"
-                :inline-message="true"
-              >
-                <el-input-number
-                  onmousewheel="return false;"
-                  v-model="formData.data.purchaseDetailList[$index].price"
-                  :controls="false"
-                  :min="0"
-                  @change="(e) => handleChangeMoney(e, $index, 'price')"
-                />
+              <el-form-item :prop="'purchaseDetailList.' + $index + '.price'" :rules="rules.price" :inline-message="true">
+                <el-input-number onmousewheel="return false;" v-model="formData.data.purchaseDetailList[$index].price" :controls="false" :min="0"
+                                 @change="(e) => handleChangeMoney(e, $index, 'price')" />
               </el-form-item>
             </template>
           </el-table-column>
           <el-table-column prop="amount" label="金额" />
           <el-table-column prop="zip" label="操作" width="100">
             <template #default="{ $index }">
-              <el-button
-                type="primary"
-                link
-                @click="handleRemove($index, 20)"
-                :disabled="formData.data.purchaseDetailList.length === 1"
-                >删除</el-button
-              >
+              <el-button type="primary" link @click="handleRemove($index, 20)"
+                         :disabled="formData.data.purchaseDetailList.length === 1">删除</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -179,11 +98,7 @@
       <el-row>
         <el-col :span="4">
           <el-form-item label="商品金额小计" prop="productAmount">
-            <el-input
-              v-model="formData.data.productAmount"
-              placeholder="请输入"
-              disabled
-            />
+            <el-input v-model="formData.data.productAmount" placeholder="请输入" disabled />
           </el-form-item>
         </el-col>
       </el-row>
@@ -195,55 +110,32 @@
         <el-table :data="formData.data.otherFeeList">
           <el-table-column prop="name" label="收费项目" min-width="150">
             <template #default="{ row, $index }">
-              <el-form-item
-                :prop="'otherFeeList.' + $index + '.name'"
-                :rules="rulesOne.name"
-                :inline-message="true"
-              >
-                <el-autocomplete
-                  v-model="row.name"
-                  :fetch-suggestions="querySearchPerson"
-                  clearable
-                  class="inline-input w-50"
-                  placeholder="请输入"
-                  @select="(val) => handlePerson(val, $index)"
-                >
+              <el-form-item :prop="'otherFeeList.' + $index + '.name'" :rules="rulesOne.name" :inline-message="true">
+                <el-autocomplete v-model="row.name" :fetch-suggestions="querySearchPerson" clearable class="inline-input w-50" placeholder="请输入"
+                                 @select="(val) => handlePerson(val, $index)">
                 </el-autocomplete>
               </el-form-item>
             </template>
           </el-table-column>
           <el-table-column prop="price" label="金额" min-width="150">
             <template #default="{ row, $index }">
-              <el-form-item
-                :prop="'otherFeeList.' + $index + '.price'"
-                :rules="rulesOne.price"
-                :inline-message="true"
-              >
-                <el-input-number
-                  onmousewheel="return false;"
-                  v-model="formData.data.otherFeeList[$index].price"
-                  :controls="false"
-                  @change="(e) => handleChangeOtherMoney(e, $index, 'price')"
-                />
+              <el-form-item :prop="'otherFeeList.' + $index + '.price'" :rules="rulesOne.price" :inline-message="true">
+                <el-input-number onmousewheel="return false;" v-model="formData.data.otherFeeList[$index].price" :controls="false"
+                                 @change="(e) => handleChangeOtherMoney(e, $index, 'price')" />
               </el-form-item>
             </template>
           </el-table-column>
 
           <el-table-column prop="remark" label="备注" min-width="150">
             <template #default="{ row, $index }">
-              <el-form-item
-                :prop="'otherFeeList.' + $index + '.remark'"
-                :inline-message="true"
-              >
+              <el-form-item :prop="'otherFeeList.' + $index + '.remark'" :inline-message="true">
                 <el-input v-model="row.remark" placeholder="请输入" />
               </el-form-item>
             </template>
           </el-table-column>
           <el-table-column prop="zip" label="操作" width="100">
             <template #default="{ $index }">
-              <el-button type="primary" link @click="handleRemove($index, 10)"
-                >删除</el-button
-              >
+              <el-button type="primary" link @click="handleRemove($index, 10)">删除</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -251,11 +143,7 @@
       <el-row>
         <el-col :span="4">
           <el-form-item label="其他收费小计" prop="otherAmount">
-            <el-input
-              v-model="formData.data.otherAmount"
-              placeholder="请输入"
-              disabled
-            />
+            <el-input v-model="formData.data.otherAmount" placeholder="请输入" disabled />
           </el-form-item>
         </el-col>
       </el-row>
@@ -263,27 +151,13 @@
       <el-row>
         <el-col :span="4">
           <el-form-item label="采购总金额" prop="amount">
-            <el-input
-              v-model="formData.data.amount"
-              placeholder="请输入"
-              disabled
-            />
+            <el-input v-model="formData.data.amount" placeholder="请输入" disabled />
           </el-form-item>
         </el-col>
       </el-row>
     </el-form>
-    <el-dialog
-      v-if="openProduct"
-      v-model="openProduct"
-      title="选择货品"
-      width="70%"
-      append-to-body
-    >
-      <SelectGoods
-        :selectList="acquireSelectList()"
-        @cancel="openProduct = false"
-        @pushGoods="pushGoods"
-      ></SelectGoods>
+    <el-dialog v-if="openProduct" v-model="openProduct" title="选择货品" width="70%" append-to-body>
+      <SelectGoods :selectList="acquireSelectList()" @cancel="openProduct = false" @pushGoods="pushGoods"></SelectGoods>
     </el-dialog>
   </div>
 </template>
@@ -691,7 +565,7 @@ const handleChangeSupplier = (val) => {
         } else {
           for (let i = 0; i < formData.data.purchaseDetailList.length; i++) {
             const e = formData.data.purchaseDetailList[i];
-            e.price = 0;
+            e.price = null;
           }
         }
         handleChangeAmount();

+ 17 - 4
src/views/JXSK/salesMange/contract/index.vue

@@ -15,6 +15,14 @@
             <span style="color: #409eff; cursor: pointer" @click="getDtl(item)">{{ item.code }}</span>
           </div>
         </template>
+        <template #isSettled="{item}">
+          <div style="width: 100%">
+            <span style="padding: 4px" :class="[item.isSettled == 1 ? 'active' : '']">
+              {{
+                proxy.dictValueLabel(item.isSettled, isSettled)
+              }}</span>
+          </div>
+        </template>
 
         <template #remark="{ item }">
           <div style="width: 100%">
@@ -322,12 +330,12 @@ const config = computed(() => {
     {
       attrs: {
         label: "是否已结清",
-        prop: "isSettled",
+        slot: "isSettled",
         width: 100,
       },
-      render(type) {
-        return proxy.dictValueLabel(type, isSettled.value);
-      },
+      // render(type) {
+      //   return proxy.dictValueLabel(type, isSettled.value);
+      // },
     },
     {
       attrs: {
@@ -728,4 +736,9 @@ const clickDownload = () => {
 ::v-deep(.el-input-number .el-input__inner) {
   text-align: left;
 }
+.active {
+  background: #a6dd82;
+  color: #fff;
+  border-radius: 4px;
+}
 </style>

+ 36 - 5
src/views/process/processApproval/index.vue

@@ -43,7 +43,7 @@
         <SendSubscribeWDLY ref="makeDom" v-else-if="flowForm.flowKey == 'wdly_apply_purchase'" :queryData="queryData.data"></SendSubscribeWDLY>
         <SendPurchaseWDLY ref="makeDom" v-else-if="flowForm.flowKey == 'wdly_purchase'" :queryData="queryData.data"></SendPurchaseWDLY>
       </div>
-      <div class="bottom" v-if="route.query.processType != 20">
+      <!-- <div class="bottom" v-if="route.query.processType != 20">
         <div class="commons-title title">处理意见</div>
         <el-form :model="flowForm" :rules="flowRules" ref="flowFormDom">
           <el-form-item prop="remark" label-width="0px" label="">
@@ -67,11 +67,42 @@
                        @click="handleSubmit(i.type)">{{ i.name }}</el-button>
           </el-form-item>
         </el-form>
-      </div>
+      </div> -->
     </div>
     <div class="right-card">
       <el-tabs v-model="activeName" class="demo-tabs">
-        <el-tab-pane label="审批记录" name="first">
+        <el-tab-pane label="处理意见" name="first">
+          <div style="overflow: auto; height: calc(100vh - 240px)">
+            <el-form :model="flowForm" :rules="flowRules" ref="flowFormDom">
+              <el-form-item prop="remark" label-width="0px" label="">
+                <el-input type="textarea" placeholder="请输入" :rows="10" v-model="flowForm.remark">
+                </el-input>
+              </el-form-item>
+              <el-form-item prop="remark" label-width="80px" label="附件上传">
+                <div style="width:100%">
+                  <el-upload v-model:fileList="flowForm.fileList" action="https://winfaster.obs.cn-south-1.myhuaweicloud.com" :data="uploadData"
+                             multiple :before-upload="uploadFile" :on-success="handleSuccess" :on-preview="onPreviewFile">
+                    <el-button>选择</el-button>
+                  </el-upload>
+                </div>
+
+              </el-form-item>
+              <el-form-item>
+                <el-button type="primary" v-if="approvalRecordData.buttonInfoList.length == 0" @click="handleSubmit"
+                           :loading="btnLoading">提交</el-button>
+                <el-button type="primary" v-if="
+                approvalRecordData.buttonInfoList.length == 0 &&
+                StagFlowKey.includes(flowForm.flowKey)
+              " @click="handleSubmitStag" :loading="btnLoading">暂存</el-button>
+
+                <el-button type="primary" v-else v-for="i in approvalRecordData.buttonInfoList" :key="i.type" :loading="btnLoading"
+                           @click="handleSubmit(i.type)">{{ i.name }}</el-button>
+              </el-form-item>
+            </el-form>
+          </div>
+        </el-tab-pane>
+
+        <el-tab-pane label="审批记录" name="second">
           <ul class="flow-chart">
             <li v-for="(item, index) in recordList" :key="item.id" :class="
                 !route.query.id
@@ -690,7 +721,7 @@ onMounted(async () => {
 });
 </script>
 <style>
-.el-upload-list {
+/* .el-upload-list {
   float: left;
   margin: 0 !important;
 }
@@ -699,7 +730,7 @@ onMounted(async () => {
 }
 .el-upload--text {
   float: left;
-}
+} */
 </style>
 <style lang="scss" scoped>
 .processApproval {

+ 123 - 42
src/views/salesMange/salesMange/profitSettlement/index.vue

@@ -27,22 +27,26 @@
             </div>
           </template>
         </el-table-column>
-        <el-table-column label="收入总计" prop="totalIncome" width="110" fixed>
+        <el-table-column label="收入总计" prop="totalIncome" width="110" sortable fixed>
           <template #default="{ row }">
             <div> {{ moneyFormat(row.totalIncome) }}</div>
           </template>
         </el-table-column>
-        <el-table-column label="支出总计" prop="totalExpenditure" width="110" fixed>
+        <el-table-column label="支出总计" prop="totalExpenditure" width="110" sortable fixed>
           <template #default="{ row }">
             <div> {{ moneyFormat(row.totalExpenditure) }}</div>
           </template>
         </el-table-column>
-        <el-table-column label="毛利率" width="110" fixed>
+        <el-table-column label="毛利率" prop="grossProfitMargin" width="110" sortable fixed>
           <template #default="{ row }">
             <div>{{ parseFloat(row.grossProfitMargin).toFixed(2) }}%</div>
           </template>
         </el-table-column>
-        <el-table-column label="毛利" prop="grossProfit" width="110" fixed />
+        <el-table-column label="毛利" prop="grossProfit" width="110" sortable fixed>
+          <template #default="{ row }">
+            <div :style="{'color':row.grossProfit<0 ? '#04cb04' : ''}">{{ moneyFormat(row.grossProfit,2)}}</div>
+          </template>
+        </el-table-column>
 
         <el-table-column label="合同到账金额" width="110">
           <template #default="{ row }">
@@ -61,6 +65,13 @@
             </div>
           </template>
         </el-table-column>
+        <el-table-column label="请款金额" width="110">
+          <template #default="{ row }">
+            <div>
+              <span style="color: #409eff; cursor: pointer" @click="handleOpenFundRecords(row)"> {{ moneyFormat(row.requestFundsAmount) }}</span>
+            </div>
+          </template>
+        </el-table-column>
 
         <el-table-column label="拖车费" width="110">
           <template #default="{ row }">
@@ -97,8 +108,8 @@
       </el-table>
       <el-row style="padding: 20px" justify="end" type="flex">
         <el-pagination background layout="total, sizes, prev, pager, next, jumper" :current-page="sourceList.pagination.pageNum"
-                       :page-size="sourceList.pagination.pageSize" :total="sourceList.pagination.total" @size-change="handleSizeChange"
-                       @current-change="handlePageChange" />
+                       :page-size="sourceList.pagination.pageSize" :page-sizes="[10,50,100,500,1000]" :total="sourceList.pagination.total"
+                       @size-change="handleSizeChange" @current-change="handlePageChange" />
       </el-row>
     </div>
 
@@ -180,6 +191,16 @@
         <el-button @click="afterSalesRecorDialog = false" size="large">取 消</el-button>
       </template>
     </el-dialog>
+
+    <el-dialog title="请款记录" v-if="fundRecorDialog" v-model="fundRecorDialog" width="60%">
+      <byTable :source="fundRecordData" :hidePagination="true" :hideSearch="true" :config="configTwo" :pagination="pagination" highlight-current-row
+               :selectConfig="[]">
+      </byTable>
+      <template #footer>
+        <el-button @click="fundRecorDialog = false" size="large">取 消</el-button>
+      </template>
+    </el-dialog>
+
   </div>
 </template>
 
@@ -281,6 +302,11 @@ const statConfig = computed(() => [
             color: "#FF6F67",
           },
           {
+            label: "请款金额",
+            num: proxy.moneyFormat(headerData.value.requestFundsAmount, 2),
+            color: "#FF6F67",
+          },
+          {
             label: "拖车费",
             num: proxy.moneyFormat(headerData.value.trailerFee, 2),
             color: "#FF6F67",
@@ -305,41 +331,48 @@ const statConfig = computed(() => [
     ],
   },
 ]);
+const fundsCostType = ref([]);
 const getDict = () => {
-  proxy
-    .post("/dictTenantData/page", {
-      pageNum: 1,
-      pageSize: 999,
-      dictCode: "account_currency",
-      tenantId: useUserStore().user.tenantId,
-    })
-    .then((res) => {
-      if (res.rows && res.rows.length > 0) {
-        accountCurrency.value = res.rows.map((item) => {
-          return {
-            label: item.dictValue,
-            value: item.dictKey,
-          };
-        });
-        judgeRate();
-      } else {
-        ElMessage("请先添加货币");
-      }
-    });
-  proxy
-    .get("/tenantUser/list", {
-      pageNum: 1,
-      pageSize: 10000,
-      tenantId: useUserStore().user.tenantId,
-    })
-    .then((res) => {
-      userList.value = res.rows.map((item) => {
-        return {
-          label: item.nickName,
-          value: item.userId,
-        };
-      });
-    });
+  // proxy
+  //   .post("/dictTenantData/page", {
+  //     pageNum: 1,
+  //     pageSize: 999,
+  //     dictCode: "account_currency",
+  //     tenantId: useUserStore().user.tenantId,
+  //   })
+  //   .then((res) => {
+  //     if (res.rows && res.rows.length > 0) {
+  //       accountCurrency.value = res.rows.map((item) => {
+  //         return {
+  //           label: item.dictValue,
+  //           value: item.dictKey,
+  //         };
+  //       });
+  //       judgeRate();
+  //     } else {
+  //       ElMessage("请先添加货币");
+  //     }
+  //   });
+  // proxy
+  //   .get("/tenantUser/list", {
+  //     pageNum: 1,
+  //     pageSize: 10000,
+  //     tenantId: useUserStore().user.tenantId,
+  //   })
+  //   .then((res) => {
+  //     userList.value = res.rows.map((item) => {
+  //       return {
+  //         label: item.nickName,
+  //         value: item.userId,
+  //       };
+  //     });
+  //   });
+  proxy.getDictOne(["funds_cost_type"]).then((res) => {
+    fundsCostType.value = res["funds_cost_type"].map((x) => ({
+      label: x.dictValue,
+      value: x.dictKey,
+    }));
+  });
 };
 const getList = async (req) => {
   sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
@@ -389,7 +422,7 @@ const judgeRate = () => {
   );
 };
 getList();
-// getDict();
+getDict();
 const handleSizeChange = (val) => {
   sourceList.value.pagination.pageNum = 1;
   sourceList.value.pagination.pageSize = val;
@@ -796,7 +829,6 @@ const configOne = computed(() => {
   ];
 });
 const afterSalesRecordData = ref([]);
-
 const afterSalesRecorDialog = ref(false);
 const handleOpenRecords = (row) => {
   afterSalesRecorDialog.value = true;
@@ -810,6 +842,55 @@ const handleOpenRecords = (row) => {
       afterSalesRecordData.value = res.rows;
     });
 };
+const configTwo = computed(() => {
+  return [
+    {
+      attrs: {
+        label: "合同号",
+        prop: "contractCode",
+        width: 110,
+      },
+    },
+    {
+      attrs: {
+        label: "费用类型",
+        prop: "costType",
+        width: 160,
+      },
+      render(costType) {
+        return proxy.dictValueLabel(costType, fundsCostType.value);
+      },
+    },
+    {
+      attrs: {
+        label: "请款金额",
+        prop: "amount",
+        width: 110,
+      },
+    },
+    {
+      attrs: {
+        label: "请款说明",
+        prop: "remarks",
+      },
+    },
+  ];
+});
+
+const fundRecordData = ref([]);
+const fundRecorDialog = ref(false);
+const handleOpenFundRecords = (row) => {
+  fundRecorDialog.value = true;
+  proxy
+    .post("/accountRequestFundsDetail/list", {
+      pageNum: 1,
+      pageSize: 9999,
+      contractId: row.id,
+    })
+    .then((res) => {
+      fundRecordData.value = res;
+    });
+};
 </script>
 
 <style lang="scss" scoped>