Explorar el Código

Merge branch 'dev' of http://www.baoxianzhanggui.com:8090/sxzgd/vue-insagent-pc into dev

@dongkboy hace 2 años
padre
commit
91ab57900b

+ 60 - 1
src/http/moudules/expense.js

@@ -6,6 +6,14 @@ import axios from '../axios'
  * 
  */
 
+//获取账户信息列表
+export const updateUserExcel = (data) => {
+    return axios({
+        url: '/invAccount/excel',
+        method: "post",
+        data
+    })
+}
 //获取账户信息列表
 export const getAccount = (data) => {
     return axios({
@@ -198,6 +206,14 @@ export const deleteAccountExpenses = (id) => {
  * 费用记录
  * 
  */
+//导出转账记录excel
+export const accountOperateExcel = (data) => {
+    return axios({
+        url: '/accountOperate/excel',
+        method: "post",
+        data
+    })
+}
 //获取账户记录列表
 export const getAccountOperate = (data) => {
     return axios({
@@ -275,4 +291,47 @@ export const invAccountExcel = (data) => {
         method: "post",
         data
     })
-}
+}
+
+/**
+ * 利润管理
+*/
+//利润管理列表分页
+export const getPageList = (data) => {
+    return axios({
+        url: '/invAccountProfit/getPageList',
+        method: "post",
+        data
+    })
+}
+//利润管理列表
+export const getList = (data) => {
+    return axios({
+        url: '/invAccountProfit/getList',
+        method: "get",
+        data
+    })
+}
+//新增利润管理
+export const addInsert = (data) => {
+    return axios({
+        url: '/invAccountProfit/insert',
+        method: "post",
+        data
+    })
+}
+//修改利润管理
+export const updateProfit = (data) => {
+    return axios({
+        url: '/invAccountProfit/update',
+        method: "post",
+        data
+    })
+}
+//删除利润管理
+export const deleteProfit = (id) => {
+    return axios({
+        url: '/invAccountProfit/delete?id='+id,
+        method: "delete",
+    })
+}

+ 236 - 70
src/views/Core/KtCommonTable.vue

@@ -1,86 +1,249 @@
 <template>
   <div style="position: relative" ref="commonTable">
     <!--表格栏-->
-    <el-table id="commonTable" :data="data.content" :highlight-current-row="highlightCurrentRow"
-      @selection-change="selectionChange" @row-click="rowClick" @current-change="handleCurrentChange"
-      :element-loading-text="$t('action.loading')" :border="border" :stripe="stripe"
-      :show-overflow-tooltip="showOverflowTooltip" :height="tableHeight" :size="size" :align="align" :header-cell-style="{
+    <el-table
+      id="commonTable"
+      ref="doLayout"
+      :data="data.content"
+      :highlight-current-row="highlightCurrentRow"
+      @selection-change="selectionChange"
+      @row-click="rowClick"
+      @current-change="handleCurrentChange"
+      :element-loading-text="$t('action.loading')"
+      :border="border"
+      :stripe="stripe"
+      :show-overflow-tooltip="showOverflowTooltip"
+      :height="tableHeight"
+      :size="size"
+      :align="align"
+      :header-cell-style="{
         background: '#F2F7FC',
         fontWeight: '900',
         color: '#606266',
-      }" style="width: 100%" :row-class-name="tableRowClassName">
-      <el-table-column type="selection" width="40" fixed
-        v-if="showBatchDelete || showBatchSettled || showBatchPrint"></el-table-column>
-      <el-table-column v-if="SerialShow" label="序号" type="index" width="50" align="center"></el-table-column>
+      }"
+      style="width: 100%"
+      :row-class-name="tableRowClassName"
+    >
+      <el-table-column
+        type="selection"
+        width="40"
+        fixed
+        v-if="showBatchDelete || showBatchSettled || showBatchPrint"
+      ></el-table-column>
+      <el-table-column
+        v-if="SerialShow"
+        label="序号"
+        type="index"
+        width="50"
+        align="center"
+      ></el-table-column>
       <template v-for="column in columns">
-        <el-table-column header-align="center" align="center" :prop="column.prop" :label="column.label"
-          :width="column.width" :min-width="column.minWidth" :fixed="column.fixed" :key="column.prop" :type="column.type"
-          :formatter="column.formatter" :sortable="column.sortable  ? column.sortable : false"
-          v-if="column.signIcon || column.isImg || column.isBtn">
+        <el-table-column
+          header-align="center"
+          align="center"
+          :prop="column.prop"
+          :label="column.label"
+          :width="column.width"
+          :min-width="column.minWidth"
+          :fixed="column.fixed"
+          :key="column.prop"
+          :type="column.type"
+          :formatter="column.formatter"
+          :sortable="column.sortable ? column.sortable : false"
+          v-if="column.signIcon || column.isImg || column.isBtn"
+        >
           <template slot-scope="scope">
-            <el-switch :disabled="column.isDisabled" v-if="column.signIcon" v-model="scope.row[column.prop]"
-              active-value="1" inactive-value="0" @change="signStateChanged(scope.$index, scope.row)"></el-switch>
-            <img v-if="column.isImg" :width="column.imgWidth" :height="column.imgHeight" :src="scope.row[column.prop]" />
-            <kt-button v-if="column.isBtn" icon="fa fa-edit" :label="column.btnName" :size="size"
-              :perms="column.permsEdit" @click="handleBtnEdit(scope.$index, scope.row)" />
+            <el-switch
+              :disabled="column.isDisabled"
+              v-if="column.signIcon"
+              v-model="scope.row[column.prop]"
+              active-value="1"
+              inactive-value="0"
+              @change="signStateChanged(scope.$index, scope.row)"
+            ></el-switch>
+            <img
+              v-if="column.isImg"
+              :width="column.imgWidth"
+              :height="column.imgHeight"
+              :src="scope.row[column.prop]"
+            />
+            <kt-button
+              v-if="column.isBtn"
+              icon="fa fa-edit"
+              :label="column.btnName"
+              :size="size"
+              :perms="column.permsEdit"
+              @click="handleBtnEdit(scope.$index, scope.row)"
+            />
           </template>
         </el-table-column>
-        <el-table-column header-align="center" align="center" :prop="column.prop" :label="column.label"
-          :width="column.width" :min-width="column.minWidth" :fixed="column.fixed" :key="column.prop" :type="column.type"
-          :formatter="column.formatter" :sortable="column.sortable  ? column.sortable : false " v-else>
+        <el-table-column
+          header-align="center"
+          align="center"
+          :prop="column.prop"
+          :label="column.label"
+          :width="column.width"
+          :min-width="column.minWidth"
+          :fixed="column.fixed"
+          :key="column.prop"
+          :type="column.type"
+          :formatter="column.formatter"
+          :sortable="column.sortable ? column.sortable : false"
+          v-else
+        >
           <template v-for="columnchildren in column.children">
-            <el-table-column v-if="columnchildren" header-align="center" align="center" :prop="columnchildren.prop"
-              :label="columnchildren.label" :width="columnchildren.width" :min-width="columnchildren.minWidth"
-              :fixed="columnchildren.fixed" :key="columnchildren.prop" :type="columnchildren.type"
-              :formatter="columnchildren.formatter" :sortable="columnchildren.sortable == null ? true : columnchildren.sortable
-                ">
+            <el-table-column
+              v-if="columnchildren"
+              header-align="center"
+              align="center"
+              :prop="columnchildren.prop"
+              :label="columnchildren.label"
+              :width="columnchildren.width"
+              :min-width="columnchildren.minWidth"
+              :fixed="columnchildren.fixed"
+              :key="columnchildren.prop"
+              :type="columnchildren.type"
+              :formatter="columnchildren.formatter"
+              :sortable="
+                columnchildren.sortable == null ? true : columnchildren.sortable
+              "
+            >
             </el-table-column>
           </template>
         </el-table-column>
       </template>
-      <el-table-column :label="$t('action.operation')" :width="operationWidth" fixed="right" v-if="showOperation"
-        header-align="center" align="center">
+      <el-table-column
+        :label="$t('action.operation')"
+        :width="operationWidth"
+        fixed="right"
+        v-if="showOperation"
+        header-align="center"
+        align="center"
+      >
         <template slot-scope="scope">
-          <kt-button style="
+          <kt-button
+            style="
               background: #1e87ed;
               border: 1px solid #1e87ed;
               color: #ffffff;
-            " v-if="editButtonName" icon="fa fa-edit" :label="editButtonName" :perms="permsEdit" :size="size"
-            @click="handleEdit(scope.$index, scope.row)" />
-          <kt-button v-if="deleteButtonName" icon="fa fa-trash" :label="deleteButtonName" :perms="permsDelete"
-            :size="size" type="danger" @click="handleDeleteFlag(scope.$index, scope.row)" />
-          <kt-button :style="{ background: button1Background+'', border: '1px solid'+button1Background, color:'#fff'}"  v-if="button1Name" :label="button1Name" :perms="permsButton1" :size="size" :icon="button1Icon"
-            @click="handleButton1(scope.$index, scope.row)" />
-            <kt-button :style="{ background: button2Background, border: '1px solid'+button2Background, color:'#fff'}"  v-if="button2Name" :label="button2Name" :perms="permsButton2" :size="size" :icon="button2Icon"
-            @click="handleButton2(scope.$index, scope.row)" />
-            <kt-button :style="{ background: button3Background, border: '1px solid'+button3Background, color:'#fff'}" v-if="button3Name" :label="button3Name" :perms="permsButton3"  :size="size" :icon="button3Icon"
-             @click="handleButton3(scope.$index, scope.row)" />
-            <kt-button :style="{
-              background:button4Background,
-              border: '1px solid '+button4Background,
-              color:'#ffffff',
-            }
-            " v-if="button4Name" :icon="button4Icon" :label="button4Name" :perms="permsButton4" :size="size"
-            @click="handleButton4(scope.$index, scope.row)" />
+            "
+            v-if="editButtonName"
+            icon="fa fa-edit"
+            :label="editButtonName"
+            :perms="permsEdit"
+            :size="size"
+            @click="handleEdit(scope.$index, scope.row)"
+          />
+          <kt-button
+            v-if="deleteButtonName"
+            icon="fa fa-trash"
+            :label="deleteButtonName"
+            :perms="permsDelete"
+            :size="size"
+            type="danger"
+            @click="handleDeleteFlag(scope.$index, scope.row)"
+          />
+          <kt-button
+            :style="{
+              background: button1Background + '',
+              border: '1px solid' + button1Background,
+              color: '#fff',
+            }"
+            v-if="button1Name"
+            :label="button1Name"
+            :perms="permsButton1"
+            :size="size"
+            :icon="button1Icon"
+            @click="handleButton1(scope.$index, scope.row)"
+          />
+          <kt-button
+            :style="{
+              background: button2Background,
+              border: '1px solid' + button2Background,
+              color: '#fff',
+            }"
+            v-if="button2Name"
+            :label="button2Name"
+            :perms="permsButton2"
+            :size="size"
+            :icon="button2Icon"
+            @click="handleButton2(scope.$index, scope.row)"
+          />
+          <kt-button
+            :style="{
+              background: button3Background,
+              border: '1px solid' + button3Background,
+              color: '#fff',
+            }"
+            v-if="button3Name"
+            :label="button3Name"
+            :perms="permsButton3"
+            :size="size"
+            :icon="button3Icon"
+            @click="handleButton3(scope.$index, scope.row)"
+          />
+          <kt-button
+            :style="{
+              background: button4Background,
+              border: '1px solid ' + button4Background,
+              color: '#ffffff',
+            }"
+            v-if="button4Name"
+            :icon="button4Icon"
+            :label="button4Name"
+            :perms="permsButton4"
+            :size="size"
+            @click="handleButton4(scope.$index, scope.row)"
+          />
         </template>
       </el-table-column>
     </el-table>
     <!--分页栏-->
     <!-- 底部分页 -->
     <div class="bottomFixed" ref="bottomFixed">
-      <kt-button class="debutton" :label="$t('action.batchDelete')" :perms="permsDelete" :size="size" type="danger"
-        @click="handleBatchDelete()" :disabled="selections.length === 0" style="float: left"
-        v-if="showBatchDelete & showOperation" />
-      <kt-button :label="settledName" :perms="permsDelete" :size="size" type="danger" @click="handleBatchSettled()"
-        :disabled="selections.length === 0" style="float: left" v-if="showBatchSettled" />
+      <kt-button
+        class="debutton"
+        :label="$t('action.batchDelete')"
+        :perms="permsDelete"
+        :size="size"
+        type="danger"
+        @click="handleBatchDelete()"
+        :disabled="selections.length === 0"
+        style="float: left"
+        v-if="showBatchDelete & showOperation"
+      />
+      <kt-button
+        :label="settledName"
+        :perms="permsDelete"
+        :size="size"
+        type="danger"
+        @click="handleBatchSettled()"
+        :disabled="selections.length === 0"
+        style="float: left"
+        v-if="showBatchSettled"
+      />
       <!-- <kt-button label="导出Excel" :perms="permsDelete" :size="size" type="danger" @click="handleBatchPrint()"
         :disabled="selections.length === 0" style="float: left" v-if="showBatchPrint" /> -->
-        <kt-button label="导出Excel" :perms="permsDelete" :size="size" type="danger" @click="handleBatchPrint()"
-        style="float: left" v-if="showBatchPrint" />
-      <el-pagination @size-change="handleSizeChange" layout="total, sizes, prev, pager, next, jumper"
-        @current-change="refreshPageRequest" :current-page="data.pageNum" :page-size="data.pageSize"
-        :page-sizes="[10, 20, 50, 100, 200, 300, 400, 500]" :total="data.totalSize" style="float: left; margin-left: 20px"
-        v-if="isshowpagination">
+      <kt-button
+        label="导出Excel"
+        :perms="permsDelete"
+        :size="size"
+        type="danger"
+        @click="handleBatchPrint()"
+        style="float: left"
+        v-if="showBatchPrint"
+      />
+      <el-pagination
+        @size-change="handleSizeChange"
+        layout="total, sizes, prev, pager, next, jumper"
+        @current-change="refreshPageRequest"
+        :current-page="data.pageNum"
+        :page-size="data.pageSize"
+        :page-sizes="[10, 20, 50, 100, 200, 300, 400, 500]"
+        :total="data.totalSize"
+        style="float: left; margin-left: 20px"
+        v-if="isshowpagination"
+      >
       </el-pagination>
     </div>
   </div>
@@ -102,14 +265,14 @@ export default {
       type: Boolean,
       default: false,
     },
-    SerialShow:{
+    SerialShow: {
       type: Boolean,
       default: true,
     },
-   settledName:{
-    //批量按钮name
-    type: String,
-   },
+    settledName: {
+      //批量按钮name
+      type: String,
+    },
     showBatchPrint: {
       //显示批量导出
       type: Boolean,
@@ -263,6 +426,10 @@ export default {
       this.loading = true;
       let callback = (res) => {
         this.loading = false;
+        //解决操作栏位置偏移问题
+        this.$nextTick(() => {
+          this.$refs.doLayout.doLayout();
+        },200);
       };
       this.$emit("findPage", {
         pageRequest: this.pageRequest,
@@ -402,7 +569,7 @@ export default {
     },
     // 批量删除
     handleBatchDelete: function () {
-      let idlist=[];
+      let idlist = [];
       this.selections.map((item) => idlist.push(item.id));
       this.$emit("handleDelete", idlist);
     },
@@ -444,8 +611,7 @@ export default {
             callback: callback,
           });
         })
-        .catch(() => {
-        });
+        .catch(() => {});
     },
     //批量结算
     handleBatchSettled: function () {
@@ -453,7 +619,7 @@ export default {
       if (!!this.keyName) {
         _keyName = this.keyName;
       }
-      let idlist=[];
+      let idlist = [];
       this.selections.map((item) => idlist.push(item[_keyName]));
       this.$emit("handleSettled", idlist);
     },
@@ -477,11 +643,11 @@ export default {
       let bottomTop = that.$refs.bottomFixed.offsetTop;
       that.tableHeight = bottomTop - tableTop - 120 + "px";
     }, 10);
-      // window.onresize = function () {
-      //   let tableTop = that.$refs.commonTable.offsetTop;
-      //   let bottomTop = that.$refs.bottomFixed.offsetTop;
-      //   that.tableHeight = bottomTop - tableTop - 120 + "px";
-      // };
+    // window.onresize = function () {
+    //   let tableTop = that.$refs.commonTable.offsetTop;
+    //   let bottomTop = that.$refs.bottomFixed.offsetTop;
+    //   that.tableHeight = bottomTop - tableTop - 120 + "px";
+    // };
   },
 };
 </script>

+ 357 - 234
src/views/FinancialManagement/ExpenseManagement/ExpenseApplyFor.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div class="table_btnbox">
     <!-- 搜索 -->
     <el-row class="top">
       <el-form
@@ -87,21 +87,19 @@
       <div class="dialog-body">
         <el-form
           :model="tableForm"
+          :rules="tableFormRules"
           ref="tableForm"
-          label-width="0px"
-          class="demo-tableForm"
+          label-width="130px"
+          size="small"
+          class="tableForm"
         >
           <el-row>
             <el-col :span="12">
-              <el-form-item
-                label="单位:"
-                label-width="50px"
-                prop="company"
-              >
+              <el-form-item label="支出单位:" prop="company">
                 <el-select
                   v-model="tableForm.company"
                   filterable
-                  placeholder="单位"
+                  placeholder="支出单位"
                 >
                   <el-option
                     v-for="(item, index) in innerCollectionData"
@@ -113,42 +111,28 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col style="display: flex; justify-content: end" :span="12">
-              <!-- <el-button type="primary" @click="addUserFn" size="small"
-                >新增账户信息</el-button
-              > -->
-            </el-col>
-          </el-row>
-          <table
-            class="expense-table"
-            width="100%"
-            height="500"
-            border="1"
-            bordercolor="#71787f"
-            align="center"
-            cellspacing=""
-            cellpadding="10"
-            style="border-collapse: collapse"
-          >
-            <tr>
-              <td class="td-title" colspan="1">申请人</td>
-              <td class="td-content" colspan="1">
+            <el-col :span="12">
+              <el-form-item label="申请人" prop="applicant">
                 <el-input
                   type="text"
                   resize="none"
                   v-model="tableForm.applicant"
                 ></el-input>
-              </td>
-              <td class="td-title" colspan="1">申请部门</td>
-              <td class="td-content" colspan="1">
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="申请部门" prop="applySector">
                 <el-input
                   type="text"
                   resize="none"
                   v-model="tableForm.applySector"
                 ></el-input>
-              </td>
-              <td class="td-title" colspan="1">申请日期</td>
-              <td class="td-content" colspan="1">
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="申请日期" prop="applyTime">
                 <el-date-picker
                   v-model="tableForm.applyTime"
                   align="right"
@@ -157,11 +141,16 @@
                   :picker-options="pickerOptions"
                 >
                 </el-date-picker>
-              </td>
-            </tr>
-            <tr>
-              <td class="td-title" colspan="1">收款单位信息</td>
-              <td class="td-content" colspan="5">
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row class="collec">
+            <el-col :span="12">
+              <el-form-item
+                label="收款单位信息"
+                style="width: 100%"
+                prop="collectionMessage"
+              >
                 <el-select
                   v-model="tableForm.collectionMessage"
                   filterable
@@ -175,47 +164,10 @@
                   >
                   </el-option>
                 </el-select>
-              </td>
-            </tr>
-            <tr>
-              <td class="td-title" colspan="1">资金流程</td>
-              <td class="td-content" colspan="5">
-                <div style="display: flex; align-items: center">
-                  <el-select
-                    v-model="tableForm.company"
-                    filterable
-                    disabled
-                    placeholder=""
-                  >
-                    <el-option
-                      v-for="(item, index) in collectionData"
-                      :key="item.accountId + 'ac' + index"
-                      :label="item.name"
-                      :value="item.bankCardNum"
-                    >
-                    </el-option>
-                  </el-select>
-                  <i class="el-icon-right"></i>
-                  <el-select
-                    v-model="tableForm.collectionMessage"
-                    filterable
-                    disabled
-                    placeholder=""
-                  >
-                    <el-option
-                      v-for="(item, index) in collectionData"
-                      :key="item.accountId + 'avb' + index"
-                      :label="item.name"
-                      :value="item.bankCardNum"
-                    >
-                    </el-option>
-                  </el-select>
-                </div>
-              </td>
-            </tr>
-            <tr>
-              <td class="td-title" colspan="1">资金用途</td>
-              <td class="td-content" colspan="3">
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="资金用途" prop="fundUse">
                 <el-cascader
                   v-model="tableForm.fundUse"
                   :show-all-levels="false"
@@ -229,26 +181,50 @@
                     children: 'child',
                     label: 'category',
                     value: 'category',
-                    checkStrictly: true,
+                    checkStrictly: false,
                   }"
                 ></el-cascader>
-              </td>
-              <td class="td-title" colspan="1">备注</td>
-              <td class="td-content" colspan="1">
-                <el-select v-model="tableForm.remark" placeholder="" allow-create filterable>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <el-form-item label="资金流程" prop="payMethod" class="paymethod">
+                <el-select
+                  v-model="tableForm.company"
+                  filterable
+                  placeholder=""
+                  disabled
+                >
+                  <el-option
+                    v-for="(item, index) in innerCollectionData"
+                    :key="item.accountId + '' + index"
+                    :label="item.name"
+                    :value="item.bankCardNum"
+                  >
+                  </el-option>
+                </el-select>
+                <i class="el-icon-right"></i>
+                <el-select
+                  v-model="tableForm.collectionMessage"
+                  filterable
+                  placeholder=""
+                  disabled
+                >
                   <el-option
-                    v-for="item in use_fundsData"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.label"
+                    v-for="(item, index) in collectionData"
+                    :key="item.accountId + 'aa' + index"
+                    :label="item.name"
+                    :value="item.bankCardNum"
                   >
                   </el-option>
                 </el-select>
-              </td>
-            </tr>
-            <tr>
-              <td class="td-title" colspan="1">申请金额(元)</td>
-              <td class="td-content" colspan="2">
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="申请金额(元)" prop="applyAmount">
                 <el-input-number
                   v-model="tableForm.applyAmount"
                   :min="0"
@@ -257,20 +233,22 @@
                   :max="99999999999999999"
                   label=""
                 ></el-input-number>
-              </td>
-              <td class="td-title" colspan="1">大写金额</td>
-              <td class="td-content idea-box" colspan="2">
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="大写金额" prop="bigApplyAmount">
                 <el-input
                   type="text"
                   resize="none"
                   v-model="tableForm.bigApplyAmount"
                   disabled
                 ></el-input>
-              </td>
-            </tr>
-            <tr>
-              <td class="td-title" colspan="1">支付方式</td>
-              <td class="td-content" colspan="5">
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="支付方式" prop="payMethod">
                 <el-checkbox-group v-model="tableForm.payMethod">
                   <el-checkbox
                     v-for="payItem in payment_methodsData"
@@ -280,41 +258,72 @@
                     :disabled="payItem.value == 2"
                   ></el-checkbox>
                 </el-checkbox-group>
-              </td>
-            </tr>
-            <tr>
-              <td class="td-title" rowspan="2" colspan="1">审核意见</td>
-              <td class="td-title" colspan="2">公司领导</td>
-              <td class="td-title" colspan="1">财务部</td>
-              <td class="td-title" colspan="2">部门领导</td>
-            </tr>
-            <tr class="idea-box">
-              <td class="td-content" colspan="2">
-                <el-input
-                  type="text"
-                  resize="none"
-                  v-model="tableForm.desc"
-                  disabled
-                ></el-input>
-              </td>
-              <td class="td-content" colspan="1">
-                <el-input
-                  type="text"
-                  resize="none"
-                  v-model="tableForm.desc"
-                  disabled
-                ></el-input>
-              </td>
-              <td class="td-content" colspan="2">
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="备注" prop="remark">
                 <el-input
                   type="text"
                   resize="none"
-                  v-model="tableForm.desc"
-                  disabled
+                  v-model="tableForm.remark"
                 ></el-input>
-              </td>
-            </tr>
-          </table>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="收入方资金归属" prop="entProfit">
+                <el-select
+                  v-model="profitObj.entProfitName"
+                  filterable
+                  @change="profitChange($event, 1)"
+                  placeholder=""
+                >
+                  <el-option
+                    v-for="(item, index) in affiliationData"
+                    :key="item.profitId + 'ent' + index"
+                    :label="item.profitName"
+                    :value="item.profitEng"
+                  >
+                  </el-option>
+                </el-select>
+                <el-input-number
+                  v-model="profitObj.entProfitValue"
+                  :min="0"
+                  @blur="profitBlur($event, 1)"
+                  placeholder="请输入利润(%)"
+                  :max="100"
+                  label=""
+                ></el-input-number>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="支出方资金归属" prop="outFlag">
+                <el-select
+                  v-model="profitObj.outProfitName"
+                  filterable
+                  @change="profitChange($event, 2)"
+                  placeholder=""
+                >
+                  <el-option
+                    v-for="(item, index) in affiliationData"
+                    :key="item.profitId + 'out' + index"
+                    :label="item.profitName"
+                    :value="item.profitEng"
+                  >
+                  </el-option>
+                </el-select>
+                <el-input-number
+                  v-model="profitObj.outProfitValue"
+                  :min="0"
+                  @blur="profitBlur($event, 2)"
+                  placeholder="请输入利润(%)"
+                  :max="100"
+                  label=""
+                ></el-input-number>
+              </el-form-item>
+            </el-col>
+          </el-row>
         </el-form>
       </div>
       <div slot="footer" class="dialog-footer">
@@ -339,7 +348,7 @@
       :visible.sync="expenseaaa"
       width="60%"
     > -->
-      <!-- <ExpenseManagement></ExpenseManagement> -->
+    <!-- <ExpenseManagement></ExpenseManagement> -->
     <!-- </el-dialog> -->
     <!-- 新增账户弹框 -->
     <!-- <expense-component
@@ -362,10 +371,18 @@ import KtCommonTable from "@/views/Core/KtCommonTable.vue"; //表格组件
 import { toChies } from "../../../utils/moneyTransition";
 export default {
   name: "ExpenseApplyFor",
-  components: { KtCommonTable, ExpenseComponent,},
+  components: { KtCommonTable, ExpenseComponent },
   data() {
+    //开票金额自定义校验
+    let applyAmountRules = (rule, value, callback) => {
+      if (value == 0) {
+        callback(new Error("申请金额不能小于0"));
+      } else {
+        callback();
+      }
+    };
     return {
-      expenseaaa:true,
+      expenseaaa: true,
       expendTitle: "新增资金使用申请单", //弹框标题
       operationWidth: 200, //操作单元格宽度
       queryFrom: {}, //查询form表单
@@ -377,11 +394,12 @@ export default {
       dialogFormVisible: false, //账户信息弹出框状态
       title: "新增账户信息", //账户信息弹框标题
       expenseDialog: false, //申请单显示状态
-      pageResult: {//表格参数
+      pageResult: {
+        //表格参数
         pageNo: 1,
         pageSize: 10,
         content: [],
-      }, 
+      },
       formData: {
         outerFlag: "0", //账户类别
         accountName: "", //户名
@@ -477,7 +495,6 @@ export default {
           minWidth: 100,
           sortable: false,
         },
-
         {
           prop: "payMethod",
           label: "支付方式",
@@ -516,36 +533,36 @@ export default {
         ],
       },
       payment_methodsData: [], //支付方式字典数据
-      use_fundsData: [], //备注字典数据
+      affiliationData: [], //归属字典数据
       collectionData: [], //收款单位信息数据
       innerCollectionData: [], //内部账户单位信息数据
       account_qualityData: [], //账户性质字典
       fundFlowData: [], //资金用途字典数据
-      tableRules: {
+      tableFormRules: {
         //资金申请单规则
-        name: [
-          { required: true, message: "请输入活动名称", trigger: "blur" },
-          { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
-        ],
-        region: [
-          { required: true, message: "请选择活动区域", trigger: "change" },
-        ],
-        date1: [
+        company: [
           {
-            type: "date",
             required: true,
-            message: "请选择日期",
+            message: "请至少选择一个支出单位",
             trigger: "change",
           },
         ],
-        date2: [
+        applicant: [
+          { required: true, message: "申请人不能为空", trigger: "blur" },
+        ],
+        applySector: [
+          { required: true, message: "申请部门不能为空", trigger: "blur" },
+        ],
+        applyTime: [
           {
-            type: "date",
+            type: "string",
             required: true,
-            message: "请选择时间",
+            message: "请选择申请日期",
             trigger: "change",
           },
         ],
+        applyAmount: [{ validator: applyAmountRules, trigger: "blur" }],
+        remark: [{ required: true, message: "备注不能为空", trigger: "blur" }],
         type: [
           {
             type: "array",
@@ -554,10 +571,12 @@ export default {
             trigger: "change",
           },
         ],
-        resource: [
-          { required: true, message: "请选择活动资源", trigger: "change" },
+        collectionMessage: [
+          { required: true, message: "请选择收款单位信息", trigger: "change" },
+        ],
+        fundUse: [
+          { required: true, message: "请选择资金用途", trigger: "change" },
         ],
-        desc: [{ required: true, message: "请填写活动形式", trigger: "blur" }],
       },
       companyItem: {}, //选择单位整条数据
       collectionMessageItem: {}, //选择收款单位整条数据
@@ -577,6 +596,12 @@ export default {
         bigApplyAmount: "", //大写金额
         payMethod: [], //支付方式
       },
+      profitObj: {
+        outProfitValue: "", //支出资金归属
+        outProfitName: "", //支出利润
+        entProfitValue: "", //收入资金归属
+        entProfitName: "", //收入利润
+      },
     };
   },
   watch: {
@@ -595,6 +620,12 @@ export default {
           bigApplyAmount: "", //大写金额
           payMethod: [], //支付方式
         };
+        this.profitObj = {
+          outProfitValue: "", //支出资金归属
+          outProfitName: "", //支出利润
+          entProfitValue: "", //收入资金归属
+          entProfitName: "", //收入利润
+        };
         this.tableForm.payMethod = [
           this.payment_methodsData.find((item) => item.value == 2).label,
         ];
@@ -608,12 +639,57 @@ export default {
     this.business("account_quality"); //账户性质字典
     this.getTreeList(); //获取资金用途树字典
     this.getAllUser(); //获取所有银行账户信息
+    this.getAffiliationData(); //获取归属数据
   },
   mounted() {},
   methods: {
+    //收入资金归属change事件
+    profitChange(e, num) {
+      if (num == 1) {
+        //收入
+        this.profitObj.entProfitName = e;
+        this.tableForm.entProfit = {
+          [this.profitObj.entProfitName]: this.profitObj.entProfitValue,
+        };
+      } else {
+        //支出
+        this.profitObj.outProfitName = e;
+        this.tableForm.outProfit = {
+          [this.profitObj.outProfitName]: this.profitObj.outProfitValue,
+        };
+      }
+    },
+    //收入资金归属利润事件
+    profitBlur(e, num) {
+      this.tableForm.entProfit = {
+        [this.profitObj.entProfitName]: this.profitObj.entProfitValue,
+      };
+      this.tableForm.outProfit = {
+        [this.profitObj.outProfitName]: this.profitObj.outProfitValue,
+      };
+    },
+    //获取归属数据
+    getAffiliationData() {
+      this.$api.expense.getList().then((res) => {
+        if (res.code == 200) {
+          this.affiliationData = res.data;
+          res.data.forEach((item) => {
+            this.columns.push({
+              prop: item.profitEng,
+              label: item.profitName,
+              minWidth: 60,
+              sortable: false,
+            });
+          });
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
+    },
     //导出
     expendDataup(idList) {
-      if (this.expendDataId) { //编辑查看直接导出
+      if (this.expendDataId) {
+        //编辑查看直接导出
         let url = process.env.BASE_URL + "/upload/" + this.tableForm.uplodePath; // 3.创建一个临时的url指向blob对象
         // 4.创建url之后可以模拟对此文件对象的一系列操作,例如:预览、下载
         let a = document.createElement("a");
@@ -624,7 +700,8 @@ export default {
         window.URL.revokeObjectURL(url);
         this.resetForm();
         this.findPage();
-      } else { //新增并导出
+      } else {
+        //新增并导出
         this.$api.expense.excel(idList).then((response) => {
           if (response.code == 200) {
             response.data.forEach((data) => {
@@ -661,16 +738,18 @@ export default {
             this.tableForm.payMethod = this.tableForm.payMethod.split(",");
             this.tableForm.collectionMessage = res.data.enterCardNum;
             this.tableForm.company = res.data.outCardNum;
-            let obj = this.fundFlowData.find((item) =>
-              item.child.find(
-                (chidlItem) => chidlItem.category == this.tableForm.fundUse
-              )
-            );
             this.tableForm.fundUse = [
-              obj.category,
-              obj.child.find((item) => item.category == this.tableForm.fundUse)
-                .category,
+              this.tableForm.fundUse,
+              this.tableForm.fundFen,
             ];
+            for (let key in res.data.outProfit) {
+              this.profitObj.outProfitName = key;
+              this.profitObj.outProfitValue = res.data.outProfit[key];
+            }
+            for (let key in res.data.entProfit) {
+              this.profitObj.entProfitName = key;
+              this.profitObj.entProfitValue = res.data.entProfit[key];
+            }
           } else {
             this.$message.error(res.msg);
           }
@@ -706,9 +785,25 @@ export default {
     //获取资金用途树数据
     getTreeList() {
       this.$api.expense.getAccountExpensesTreeList().then((res) => {
-        this.fundFlowData = res.data;
+        if (res.code == 200) {
+          this.fundFlowData = res.data;
+          this.fundFlowSet();
+        } else {
+          this.$message.error(res.msg);
+        }
       });
     },
+    //资金用途数据转换     如果最后一项child数组长度为0把值变为null
+    fundFlowSet(data) {
+      data = data || this.fundFlowData;
+      for (var i = 0; i < data.length; i++) {
+        if (data[i].child.length) {
+          this.fundFlowSet(data[i].child);
+        } else {
+          data[i].child = null;
+        }
+      }
+    },
     //搜索列表功能
     queryStaffInfo() {
       this.findPage();
@@ -724,6 +819,12 @@ export default {
         .getAccountExcel(obj)
         .then((res) => {
           res.data.records.forEach((element) => {
+            for (let key in element.outProfit) {
+              element[key] = element.outProfit[key];
+            }
+            for (let key in element.entProfit) {
+              element[key] = element.entProfit[key];
+            }
             element.transferFlagName =
               element.transferFlag == 0 ? "已转账" : "未转账";
           });
@@ -846,7 +947,7 @@ export default {
       this.$api.expense.getAccountByAccountName().then((res) => {
         if (res.code == 200) {
           let arr = [];
-          let newarr = []
+          let newarr = [];
           res.data.forEach((item, index) => {
             if (item.invAccountCardList != null) {
               item.invAccountCardList.forEach((it) => {
@@ -865,8 +966,8 @@ export default {
               });
               arr.push(...item.invAccountCardList);
               //获取全部内部用户
-              if(item.outerFlag == 0){
-                newarr.push(...item.invAccountCardList)
+              if (item.outerFlag == 0) {
+                newarr.push(...item.invAccountCardList);
               }
             }
           });
@@ -903,64 +1004,77 @@ export default {
     //导出事件
     submitForm() {
       let params = JSON.parse(JSON.stringify(this.tableForm));
-      //校验
-      if (!params.company) {
-        this.$message.error("请选择单位");
-        return;
-      } else if (!params.applicant) {
-        this.$message.error("申请人不能为空");
-        return;
-      } else if (!params.applySector) {
-        this.$message.error("申请部门不能为空");
-        return;
-      } else if (!params.applyTime) {
-        this.$message.error("请填写申请日期");
-        return;
-      } else if (!params.collectionMessage) {
-        this.$message.error("请选择收款单位信息");
-        return;
-      } else if (!params.fundUse) {
-        this.$message.error("请选择资金用途");
-        return;
-      } else if (params.applyAmount == 0) {
-        this.$message.error("请填写金额");
-        return;
+      if( !this.profitObj.entProfitName||!this.profitObj.outProfitName){
+        this.$message.error('请选择资金归属!');
+        return
       }
-      params.payMethod = this.toPayment(params.payMethod); //支付方式转换
-      let companyItem = this.collectionData.find((item) => {
-        return item.bankCardNum === params.company;
-      });
-      let collectionMessageItem = this.collectionData.find(
-        (item) => item.bankCardNum === params.collectionMessage
-      );
-      params.company = companyItem.nameValue; //单位
-      params.outCardNum = companyItem.bankCardNum; //支出账户id
-      params.outFlag = collectionMessageItem.outerFlag; //支出账户性质
-      params.collectionMessage = collectionMessageItem.nameValue; //收入账户信息
-      params.enterCardNum = collectionMessageItem.bankCardNum; //收入账户id
-      params.fundUse = params.fundUse[params.fundUse.length - 1]; //资金用途
-      params.fundFlow = params.company + "→" + params.collectionMessage; //资金流程
-      if (this.expendDataId) {
-        //修改
-        params.expendDataId = this.expendDataId;
-        this.$api.expense.update(params).then((res) => {
-          if (res.code == 200) {
-            this.resetForm();
-            this.findPage();
-          } else {
-            this.$message.error(res.msg);
-          }
-        });
-      } else {
-        //新增+导出
-        this.$api.expense.insert(params).then((res) => {
-          if (res.code == 200) {
-            this.expendDataup([res.data]);
+      this.$refs.tableForm.validate((valid) => {
+        if (valid) {
+          params.payMethod = this.toPayment(params.payMethod); //支付方式转换
+          let companyItem = this.collectionData.find((item) => {
+            return item.bankCardNum === params.company;
+          });
+          let collectionMessageItem = this.collectionData.find(
+            (item) => item.bankCardNum === params.collectionMessage
+          );
+          params.company = companyItem.nameValue; //单位
+          params.outCardNum = companyItem.bankCardNum; //支出账户id
+          params.outFlag = collectionMessageItem.outerFlag; //支出账户性质
+          params.collectionMessage = collectionMessageItem.nameValue; //收入账户信息
+          params.enterCardNum = collectionMessageItem.bankCardNum; //收入账户id
+          params.fundUse =
+            this.tableForm.fundUse[this.tableForm.fundUse.length - 2]; //资金用途
+          params.fundFen =
+            this.tableForm.fundUse[this.tableForm.fundUse.length - 1]; //资金用途分项
+          params.fundFlow = params.company + "→" + params.collectionMessage; //资金流程
+          if (this.expendDataId) {
+            //修改
+            params.expendDataId = this.expendDataId;
+            this.$api.expense.update(params).then((res) => {
+              if (res.code == 200) {
+                this.resetForm();
+                this.findPage();
+              } else {
+                this.$message.error(res.msg);
+              }
+            });
           } else {
-            this.$message.error(res.msg);
+            //新增+导出
+            this.$api.expense.insert(params).then((res) => {
+              if (res.code == 200) {
+                this.expendDataup([res.data]);
+              } else {
+                this.$message.error(res.msg);
+              }
+            });
           }
-        });
-      }
+        } else {
+          return false;
+        }
+      });
+      //校验
+      // if (!params.company) {
+      //   this.$message.error("请选择单位");
+      //   return;
+      // } else if (!params.applicant) {
+      //   this.$message.error("申请人不能为空");
+      //   return;
+      // } else if (!params.applySector) {
+      //   this.$message.error("申请部门不能为空");
+      //   return;
+      // } else if (!params.applyTime) {
+      //   this.$message.error("请填写申请日期");
+      //   return;
+      // } else if (!params.collectionMessage) {
+      //   this.$message.error("请选择收款单位信息");
+      //   return;
+      // } else if (!params.fundUse) {
+      //   this.$message.error("请选择资金用途");
+      //   return;
+      // } else if (params.applyAmount == 0) {
+      //   this.$message.error("请填写金额");
+      //   return;
+      // }
     },
     //支付方式转换
     toPayment(list) {
@@ -1006,14 +1120,13 @@ export default {
   margin: 0;
   padding: 0;
 }
-.expense-table >>> .el-checkbox-group,
-.expense-table >>> .el-date-editor,
-.expense-table >>> .el-select,
-.expense-table >>> .el-input-number,
-.expense-table >>> .el-cascader,
-.demo-tableForm >>> .el-select {
+.tableForm >>> .el-checkbox-group,
+.tableForm >>> .el-date-editor,
+.tableForm >>> .el-select,
+.tableForm >>> .el-input-number,
+.tableForm >>> .el-cascader,
+.tableForm >>> .el-select {
   width: 100%;
-  text-align: center;
 }
 .demo-tableForm >>> .el-input__inner {
   border: none;
@@ -1054,4 +1167,14 @@ export default {
 .operation {
   margin-bottom: 15px;
 }
+.paymethod >>> .el-form-item__content {
+  display: flex;
+  align-items: center;
+}
+.el-icon-right {
+  margin: 0 10px;
+}
+.table_btnbox {
+  position: relative;
+}
 </style>

+ 4 - 89
src/views/FinancialManagement/ExpenseManagement/ExpenseComponent.vue

@@ -194,16 +194,6 @@
           </el-col>
         </el-row>
         <el-row v-if="formData.outerFlag == 0 && type == 2">
-          <el-col :span="12">
-            <el-form-item label="结算卡" prop="clearingProfit">
-              <el-input-number
-                v-model="formData.clearingProfit"
-                :min="0"
-                :max="99999999999999999"
-                label=""
-              ></el-input-number>
-            </el-form-item>
-          </el-col>
           <el-col :span="12">
             <el-form-item label="单日转账笔数限制" prop="dayStrokeNum">
               <el-input-number
@@ -214,62 +204,6 @@
               ></el-input-number>
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row v-if="formData.outerFlag == 0 && type == 2">
-          <el-col :span="12">
-            <el-form-item label="外部过账金额" prop="exteriorProfit">
-              <el-input-number
-                v-model="formData.exteriorProfit"
-                :min="0"
-                :max="99999999999999999"
-                label=""
-              ></el-input-number>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="财税公司利润" prop="fiscalProfit">
-              <el-input-number
-                v-model="formData.fiscalProfit"
-                :min="0"
-                :max="99999999999999999"
-                label=""
-              ></el-input-number>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row v-if="formData.outerFlag == 0 && type == 2">
-          <el-col :span="12">
-            <el-form-item label="保险公司回款" prop="insuranceProfit">
-              <el-input-number
-                v-model="formData.insuranceProfit"
-                :min="0"
-                :max="99999999999999999"
-                label=""
-              ></el-input-number>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="其他利润" prop="otherProfit">
-              <el-input-number
-                v-model="formData.otherProfit"
-                :min="0"
-                :max="99999999999999999"
-                label=""
-              ></el-input-number>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row v-if="formData.outerFlag == 0 && type == 2">
-          <el-col :span="12">
-            <el-form-item label="园区利润" prop="parkProfit">
-              <el-input-number
-                v-model="formData.parkProfit"
-                :min="0"
-                :max="99999999999999999"
-                label=""
-              ></el-input-number>
-            </el-form-item>
-          </el-col>
           <el-col :span="12">
             <el-form-item label="对私单日限额" prop="priDayLines">
               <el-input-number
@@ -327,9 +261,9 @@
         </el-row>
         <el-row v-if="formData.outerFlag == 0 && type == 2">
           <el-col :span="12">
-            <el-form-item label="对公年额度" prop="pubYearLines">
+            <el-form-item label="余额" prop="balance">
               <el-input-number
-                v-model="formData.pubYearLines"
+                v-model="formData.balance"
                 :min="0"
                 :max="99999999999999999"
                 label=""
@@ -337,9 +271,9 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="天勤利润" prop="tianqinProfit">
+            <el-form-item label="对公年额度" prop="pubYearLines">
               <el-input-number
-                v-model="formData.tianqinProfit"
+                v-model="formData.pubYearLines"
                 :min="0"
                 :max="99999999999999999"
                 label=""
@@ -413,18 +347,6 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row v-if="formData.outerFlag == 0 && type == 2">
-          <el-col :span="12">
-            <el-form-item label="余额" prop="balance">
-              <el-input-number
-                v-model="formData.balance"
-                :min="0"
-                :max="99999999999999999"
-                label=""
-              ></el-input-number>
-            </el-form-item>
-          </el-col>
-        </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="resetForm()" size="small">取 消</el-button>
@@ -477,13 +399,7 @@ export default {
         bankName: "", //开户行名称
         bankNum: "", //开户行号
         certExpirationDate: "", //证书有效期
-        clearingProfit: "", //结算卡
         dayStrokeNum: "", //单日转账笔数限制
-        exteriorProfit: "", //外部过账金额
-        fiscalProfit: "", //财税公司利润
-        insuranceProfit: "", //保险公司回款
-        otherProfit: "", //其他利润
-        parkProfit: "", //园区利润
         priDayLines: "", //对私单日限额
         priSingleLines: "", //对私单笔限额
         priYearExcess: "", //对私年剩余额度
@@ -492,7 +408,6 @@ export default {
         pubSingleLines: "", //对公单笔限额
         pubYearExcess: "", //对公年剩余额度
         pubYearLines: "", //对公年额度
-        tianqinProfit: "", //天勤利润
         dayStrokeNumExcess: "", //单日转账笔数剩余
         priDayLinesExcess: "", //对私单日限额剩余
         pubDayLinesExcess: "", //对公单日限额剩余

+ 126 - 83
src/views/FinancialManagement/ExpenseManagement/ExpenseManagement.vue

@@ -60,6 +60,14 @@
       @click="addAmount"
       >新增账户</el-button
     >
+    <el-button
+      class="operation"
+      type="primary"
+      plain
+      size="medium"
+      @click="expentData"
+      >导出</el-button
+    >
     <!-- 表格 -->
     <el-table
       :data="accountData"
@@ -330,26 +338,6 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="备注" prop="remark">
-              <el-select
-                v-model="inComeFormData.remark"
-                allow-create
-                filterable
-                placeholder=""
-              >
-                <el-option
-                  v-for="item in use_fundsData"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.label"
-                >
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
           <el-col :span="12">
             <el-form-item label="资金用途" prop="fundUse">
               <el-cascader
@@ -365,12 +353,54 @@
                   children: 'child',
                   label: 'category',
                   value: 'category',
-                  checkStrictly: true,
+                  checkStrictly: false,
                 }"
               ></el-cascader>
             </el-form-item>
           </el-col>
         </el-row>
+        <el-row>
+          <el-col :span="12" style="text-align: center"
+            ><h3>收入方资金归属</h3></el-col
+          >
+          <el-col :span="12" style="text-align: center"
+            ><h3>支出方资金归属</h3></el-col
+          >
+        </el-row>
+        <el-row class="profit_box">
+          <el-col :span="12">
+            <el-form-item
+              v-for="item in affiliationData"
+              :key="item.profitId + 'sr'"
+              :label="item.profitName"
+              prop="entProfit"
+            >
+              <el-input-number
+                v-model="item.profit"
+                :min="0"
+                placeholder="请输入利润(%)"
+                :max="100"
+                label=""
+              ></el-input-number>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              v-for="item in affiliationData2"
+              :key="item.profitId + 'zc'"
+              :label="item.profitName"
+              prop="entProfit"
+            >
+              <el-input-number
+                v-model="item.profit"
+                :min="0"
+                placeholder="请输入利润(%)"
+                :max="100"
+                label=""
+              ></el-input-number>
+            </el-form-item>
+          </el-col>
+        </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="incomeResetForm()" size="small">取 消</el-button>
@@ -392,7 +422,6 @@ export default {
   components: { KtCommonTable, KtButton, ExpenseComponent },
   created() {
     this.business("account_quality"); //账户性质字典;
-    this.business("use_funds"); //备注字典
     this.business("payment_methods"); //支付方式字典
     this.business("nature_business"); //营业性质字典
     this.getTreeList(); //获取资金用途字典
@@ -407,7 +436,6 @@ export default {
       incomeDialogVisible: false, //收入 弹出框状态
       collectionData: [], //收入  转账方下拉菜单数组
       fundFlowData: [], //资金用途字典数据
-      use_fundsData: [], //收入  备注字典数据
       payment_methodsData: [], //收入  支付方式字典数据
       inComeFormData: {
         //收入form表单
@@ -415,7 +443,6 @@ export default {
         fundFlow: "", //资金流向
         applyAmount: "", //金额
         bigApplyAmount: "", //大写金额
-        remark: "", //备注
         company: "", //转账方
         payMethod: [], //转账方
         fundUse: "", //资金用途
@@ -425,7 +452,6 @@ export default {
         company: [
           { required: true, message: "转账方不能为空", trigger: "change" },
         ],
-        remark: [{ required: true, message: "请选择备注", trigger: "change" }],
         payMethod: [
           { required: true, message: "请选择支付方式", trigger: "change" },
         ],
@@ -509,7 +535,7 @@ export default {
         {
           prop: "establishTime",
           label: "成立日期",
-          minWidth: 80,
+          minWidth: 90,
           sortable: false,
         },
         {
@@ -571,48 +597,18 @@ export default {
           minWidth: 120,
           sortable: false,
         },
-        {
-          prop: "clearingProfit",
-          label: "结算卡",
-          minWidth: 120,
-          sortable: false,
-        },
         {
           prop: "dayStrokeNum",
           label: "单日转账笔数限制",
           minWidth: 120,
           sortable: false,
         },
-        {
-          prop: "exteriorProfit",
-          label: "外部过账金额",
-          minWidth: 120,
-          sortable: false,
-        },
-        {
-          prop: "fiscalProfit",
-          label: "财税公司利润",
-          minWidth: 120,
-          sortable: false,
-        },
         {
           prop: "insuranceProfit",
           label: "保险公司回款",
           minWidth: 120,
           sortable: false,
         },
-        {
-          prop: "otherProfit",
-          label: "其他利润",
-          minWidth: 120,
-          sortable: false,
-        },
-        {
-          prop: "parkProfit",
-          label: "园区利润",
-          minWidth: 120,
-          sortable: false,
-        },
         {
           prop: "priDayLines",
           label: "对私单日限额",
@@ -661,12 +657,6 @@ export default {
           minWidth: 120,
           sortable: false,
         },
-        {
-          prop: "tianqinProfit",
-          label: "天勤利润",
-          minWidth: 120,
-          sortable: false,
-        },
       ],
       //账户信息form
       accountFormData: {
@@ -690,14 +680,10 @@ export default {
         bankNum: "", //开户行号
         balance: "", //余额
         certExpirationDate: "", //证书有效期
-        clearingProfit: 0, //结算卡
         dayStrokeNum: 0, //单日转账笔数限制
         dayStrokeNumExcess: 0, //单日转账笔数剩余
-        exteriorProfit: 0, //外部过账金额
         fiscalProfit: 0, //	财务公司利润
         insuranceProfit: 0, //保险公司回款
-        otherProfit: 0, //其他利润
-        parkProfit: 0, //园区利润
         priDayLines: 0, //对私单日限额
         priDayLinesExcess: 0, //对私单日限额剩余
         priSingleLines: 0, //对私单笔限额
@@ -709,7 +695,6 @@ export default {
         pubYearExcess: 0, //对公年剩余额度
         pubYearLines: 0, //对公年额度
         spend: 0, //支出金额
-        tianqinProfit: 0, //天勤利润
       },
       /**
        * 支出模块
@@ -756,6 +741,8 @@ export default {
       outCardNum: "", //点击支出按钮当条数据支出id
       companyItem: {}, //选择单位整条数据
       typeName: "card", //账户信息 跟 卡信息
+      affiliationData: [], //归属字典数据
+      affiliationData2: [], //归属字典数据
     };
   },
   watch: {
@@ -775,7 +762,6 @@ export default {
           fundFlow: "", //资金流向
           applyAmount: "", //金额
           bigApplyAmount: "", //大写金额
-          remark: "", //备注
           company: "", //转账方
           payMethod: [], //支付方式
         };
@@ -783,12 +769,59 @@ export default {
     },
   },
   methods: {
+    //获取归属数据
+    getAffiliationData() {
+      this.$api.expense.getList().then((res) => {
+        if (res.code == 200) {
+          res.data.forEach((item) => {
+            item.profit = 0;
+          });
+          this.affiliationData = JSON.parse(JSON.stringify(res.data));
+          this.affiliationData2 = JSON.parse(JSON.stringify(res.data));
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
+    },
+    //导出开票记录
+    expentData() {
+      this.$api.expense.updateUserExcel(this.queryFrom).then((res) => {
+        if (res.code == 200) {
+          let url = process.env.BASE_URL + "/upload/" + res.data; // 3.创建一个临时的url指向blob对象
+          // 4.创建url之后可以模拟对此文件对象的一系列操作,例如:预览、下载
+          let a = document.createElement("a");
+          a.href = url;
+          a.download = "导出订单.xlsx";
+          a.click();
+          // 5.释放这个临时的对象url
+          window.URL.revokeObjectURL(url);
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
+    },
     //获取资金用途树数据
     getTreeList() {
       this.$api.expense.getAccountExpensesTreeList().then((res) => {
-        this.fundFlowData = res.data;
+        if (res.code == 200) {
+          this.fundFlowData = res.data;
+          this.fundFlowSet();
+        } else {
+          this.$message.error(res.msg);
+        }
       });
     },
+    //资金用途数据转换     如果最后一项child数组长度为0把值变为null
+    fundFlowSet(data) {
+      data = data || this.fundFlowData;
+      for (var i = 0; i < data.length; i++) {
+        if (data[i].child.length) {
+          this.fundFlowSet(data[i].child);
+        } else {
+          data[i].child = null;
+        }
+      }
+    },
     //展开事件
     handleRowChange(e, row) {
       if (row.length > 0) {
@@ -827,8 +860,8 @@ export default {
         if (res.code == 200) {
           let arr = [];
           /**获取所有外部用户 */
-          let outArr = res.data.filter((item) => item.outerFlag == 1);
-          outArr.forEach((item) => {
+          // let outArr = res.data.filter((item) => item.outerFlag == 1);
+          res.data.forEach((item) => {
             if (item.invAccountCardList != null) {
               item.invAccountCardList.forEach((it) => {
                 it.name =
@@ -863,15 +896,26 @@ export default {
       obj.fundFlow = obj.company + "→" + obj.collectionMessage;
       obj.payMethod = obj.payMethod.join(",");
       obj.revenueOutlay = "0";
-      obj.fundUse = obj.fundUse[obj.fundUse.length - 1]; //资金用途
+      obj.fundUse = obj.fundUse[obj.fundUse.length - 2]; //资金用途
+      obj.fundFen = obj.fundUse[obj.fundUse.length - 1]; //资金用途分项
+      //转化资金归属
+      obj.entProfit = {};
+      obj.outProfit = {};
+      this.affiliationData.forEach((item) => {
+        obj.entProfit[item.profitEng] = item.profit;
+      });
+      this.affiliationData2.forEach((item) => {
+        obj.outProfit[item.profitEng] = item.profit;
+      });
+      //转化资金归属
       this.$refs.inComeFormData.validate((valid) => {
         if (valid) {
           this.$api.expense.insertAccountOperate(obj).then((res) => {
-            this.incomeDialogVisible = false;
             if (res.code == 200) {
               this.$message.success("添加成功!");
+              this.incomeDialogVisible = false;
             } else {
-              this.$message.success(res.msg);
+              this.$message.error(res.msg);
             }
           });
         } else {
@@ -881,6 +925,7 @@ export default {
     },
     //点击页面收入按钮
     handleTableIncome(row, rows) {
+      this.getAffiliationData(); //获取归属数据
       if (row.outerFlag == 1) {
         this.$message.error("请选择内部账户");
         return;
@@ -1104,14 +1149,10 @@ export default {
           bankNum: "", //开户行号
           balance: 0, //余额
           certExpirationDate: "", //证书有效期
-          clearingProfit: 0, //结算卡
           dayStrokeNum: 0, //单日转账笔数限制
           dayStrokeNumExcess: 0, //单日转账笔数剩余
-          exteriorProfit: 0, //外部过账金额
           fiscalProfit: 0, //	财务公司利润
           insuranceProfit: 0, //保险公司回款
-          otherProfit: 0, //其他利润
-          parkProfit: 0, //园区利润
           priDayLines: 0, //对私单日限额
           priDayLinesExcess: 0, //对私单日限额剩余
           priSingleLines: 0, //对私单笔限额
@@ -1123,7 +1164,6 @@ export default {
           pubYearExcess: 0, //对公年剩余额度
           pubYearLines: 0, //对公年额度
           spend: 0, //支出金额
-          tianqinProfit: 0, //天勤利润
         };
       }
     },
@@ -1150,7 +1190,7 @@ export default {
                 res.data[0].startCertExpirationDate,
                 res.data[0].endCertExpirationDate,
               ];
-            }else{
+            } else {
               res.data[0].certExpirationDate = [];
             }
             this.accountCardFormData = res.data[0];
@@ -1174,7 +1214,7 @@ export default {
       this.type = 1; //账户类型
       this.formDataId = row.accountId;
       this.$api.expense
-        .getAccount({ accountId: this.formDataId })
+        .getAccount({ accountId: this.formDataId,pageNo:1,pageSize:10 })
         .then((res) => {
           if (res.code == 200) {
             this.accountFormData = JSON.parse(
@@ -1195,7 +1235,6 @@ export default {
         if (this.formDataId) {
           //修改
           params.accountId = this.formDataId;
-          // delete params.invAccountCardList;
           this.$api.expense.updateAccoount(params).then((res) => {
             if (res.code == 200) {
               this.$message({
@@ -1378,7 +1417,8 @@ export default {
 .inComeForm >>> .el-input-number__increase {
   display: none;
 }
-.inComeForm >>> .el-input-number {
+.inComeForm >>> .el-input-number,
+.inComeForm >>> .el-cascader {
   width: 100%;
 }
 .inComeForm >>> .el-input.is-disabled .el-input__inner {
@@ -1395,5 +1435,8 @@ export default {
 .expendDialog >>> .cell .el-button {
   width: auto;
 }
+.profit_box .el-form-item {
+  margin-bottom: 15px !important;
+}
 </style>
   

+ 170 - 44
src/views/FinancialManagement/ExpenseManagement/PaymentManagement.vue

@@ -165,10 +165,10 @@
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="卡号" prop="bankCardNum">
+                <el-form-item label="收入卡号" prop="revBankCardNum">
                   <el-input
                     disabled
-                    v-model="formData.bankCardNum"
+                    v-model="formData.revBankCardNum"
                     autocomplete="off"
                   ></el-input>
                 </el-form-item>
@@ -258,6 +258,7 @@
                     placeholder=""
                     clearable
                     value-key="bankCardNum"
+                    @change="outherChange"
                   >
                     <el-option
                       v-for="(item, index) in allCollectionData"
@@ -269,6 +270,17 @@
                   </el-select>
                 </el-form-item>
               </el-col>
+              <el-col :span="12">
+                <el-form-item label="支出卡号" prop="outBankCardNum">
+                  <el-input
+                    disabled
+                    v-model="formData.outBankCardNum"
+                    autocomplete="off"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
               <el-col :span="12">
                 <el-form-item label="税率(%)" prop="rate">
                   <el-input-number
@@ -280,26 +292,6 @@
                 </el-form-item>
               </el-col>
             </el-row>
-            <el-row>
-              <el-col :span="12">
-                <el-form-item label="备注" prop="remark">
-                  <el-select
-                    v-model="formData.remark"
-                    placeholder="请选择备注"
-                    clearable
-                    allow-create
-                    filterable
-                  >
-                    <el-option
-                      v-for="item in use_fundsData"
-                      :key="item.value + 'km'"
-                      :label="item.label"
-                      :value="item.label"
-                    ></el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col>
-            </el-row>
           </div>
           <div v-else>
             <el-row>
@@ -358,9 +350,85 @@
                       children: 'child',
                       label: 'category',
                       value: 'category',
-                      checkStrictly: true,
+                      checkStrictly: false,
                     }"
                   ></el-cascader>
+                  <!-- <el-select
+                    v-model="formData.fundUse"
+                    placeholder=""
+                  >
+                    <el-option
+                      v-for="item in fundFlowData"
+                      :key="item.value"
+                      :label="item.category"
+                      :value="item.category"
+                    >
+                    </el-option>
+                  </el-select> -->
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <!-- <el-row>
+              <el-col :span="12">
+                <el-form-item label="资金用途分项" prop="fundFen">
+                  <el-cascader
+                    v-model="formData.fundFen"
+                    :show-all-levels="false"
+                    :clearable="true"
+                    :checkStrictly="true"
+                    :emitPath="false"
+                    placeholder=""
+                    :options="fundFlowData"
+                    filterable
+                    :props="{
+                      children: 'child',
+                      label: 'category',
+                      value: 'category',
+                      checkStrictly: false,
+                    }"
+                  ></el-cascader>
+                </el-form-item>
+              </el-col>
+            </el-row> -->
+            <el-row>
+              <el-col :span="12" style="text-align: center"
+                ><h3>收入方资金归属</h3></el-col
+              >
+              <el-col :span="12" style="text-align: center"
+                ><h3>支出方资金归属</h3></el-col
+              >
+            </el-row>
+            <el-row class="profit_box">
+              <el-col :span="12">
+                <el-form-item
+                  v-for="item in affiliationData"
+                  :key="item.profitId + 'sr'"
+                  :label="item.profitName"
+                  prop="entProfit"
+                >
+                  <el-input-number
+                    v-model="item.profit"
+                    :min="0"
+                    placeholder="请输入利润(%)"
+                    :max="100"
+                    label=""
+                  ></el-input-number>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item
+                  v-for="item in affiliationData2"
+                  :key="item.profitId + 'zc'"
+                  :label="item.profitName"
+                  prop="entProfit"
+                >
+                  <el-input-number
+                    v-model="item.profit"
+                    :min="0"
+                    placeholder="请输入利润(%)"
+                    :max="100"
+                    label=""
+                  ></el-input-number>
                 </el-form-item>
               </el-col>
             </el-row>
@@ -387,16 +455,15 @@ export default {
   created() {
     // this.business("subjects"); //开票科目
     this.business("invoice_type"); //开票类型
-    this.business("use_funds"); //备注
     this.business("payment_methods"); //支付方式字典
     this.getTreeList(); //资金用途字典数据
+    this.getAffiliationData(); //获取归属数据
   },
   mounted() {
     this.getAllUser();
   },
   data() {
     let invoiceSubjectsRules = (rule, value, callback) => {
-      console.log(this.formData.invoiceSubjects1);
       if (!this.formData.invoiceSubjects1 || !this.formData.invoiceSubjects2) {
         callback(new Error("开票科目不能为空!"));
       } else {
@@ -404,11 +471,12 @@ export default {
       }
     };
     return {
+      affiliationData: [], //归属字典数据
+      affiliationData2: [], //归属字典数据
       allNumObj: {}, //合计对象
       subjectsData: [], //开票科目数据
       invoice_typeData: [], //发票类型数据
       fundFlowData: [], //资金用途字典数据
-      use_fundsData: [], //备注数据
       payment_methodsData: [], //支付方式数据
       title: "开票新增",
       loading: true,
@@ -504,7 +572,8 @@ export default {
       },
       modelText: "提 交",
       formData: {
-        bankCardNum: "", //卡号
+        revBankCardNum: "", //收入卡号
+        outBankCardNum: "", //支出卡号
         biller: "", //开票员
         invoiceBy: "", //开票方
         invoiceMoney: "", //开票金额
@@ -518,7 +587,6 @@ export default {
         payoutMoney: 0, //进账金额
         payoutTime: "", //进账日期
         rate: 0, //税率
-        remark: "", //备注
         payMethod: [], //支付方式
         fundUse: "", //资金用途
       },
@@ -549,7 +617,6 @@ export default {
           { required: true, message: "进账金额不能为空", trigger: "blur" },
         ],
         rate: [{ required: true, message: "税率不能为空", trigger: "blur" }],
-        remark: [{ required: true, message: "请选择备注", trigger: "change" }],
         payMethod: [
           { required: true, message: "请选择支付方式", trigger: "change" },
         ],
@@ -574,13 +641,15 @@ export default {
       collectionData: [], //所有内部账户信息列表
       allCollectionData: [], //所有账户信息列表
       formDataId: "", //编辑数据id
+      profitObj: {},
     };
   },
   watch: {
     detailDialog(n) {
       if (!n) {
         this.formData = {
-          bankCardNum: "", //卡号
+          revBankCardNum: "", //收入卡号
+          outBankCardNum: "", //支出卡号
           biller: "", //开票员
           invoiceBy: "", //开票方
           invoiceMoney: "", //开票金额
@@ -592,9 +661,14 @@ export default {
           payoutMoney: 0, //进账金额
           payoutTime: "", //进账日期
           rate: 0, //税率
-          remark: "", //备注
           payMethod: [], //支付方式
         };
+        this.affiliationData.forEach(item=>{
+          item.profit = 0
+        });
+        this.affiliationData2.forEach(item=>{
+          item.profit = 0
+        });
         this.formDataId = "";
         this.$nextTick(() => {
           this.$refs.formData.clearValidate();
@@ -603,15 +677,37 @@ export default {
     },
   },
   methods: {
+    //转换
+    businessZh(data, label, value) {
+      let obj = data.find((item) => item[value] == label);
+      if (obj) {
+        return obj;
+      } else {
+        return {};
+      }
+    },
+    //获取归属数据
+    getAffiliationData() {
+      this.$api.expense.getList().then((res) => {
+        if (res.code == 200) {
+          res.data.forEach(item=>{
+            item.profit = 0
+          })
+          this.affiliationData = JSON.parse(JSON.stringify(res.data));
+          this.affiliationData2 = JSON.parse(JSON.stringify(res.data));
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
+    },
     //导出开票记录
     expentData() {
       let params = {
-       ...JSON.parse(JSON.stringify(this.pageRequest))
+        ...JSON.parse(JSON.stringify(this.pageRequest)),
       };
       delete params.pageNo;
       delete params.pageSize;
       this.$api.expense.invAccountExcel(params).then((res) => {
-        console.log(res);
         if (res.code == 200) {
           let url = process.env.BASE_URL + "/upload/" + res.data; // 3.创建一个临时的url指向blob对象
           // 4.创建url之后可以模拟对此文件对象的一系列操作,例如:预览、下载
@@ -629,9 +725,25 @@ export default {
     //获取资金用途树数据
     getTreeList() {
       this.$api.expense.getAccountExpensesTreeList().then((res) => {
-        this.fundFlowData = res.data;
+        if(res.code == 200){
+          this.fundFlowData = res.data;
+          this.fundFlowSet()
+        }else{
+          this.$message.error(res.msg);
+        }
       });
     },
+    //资金用途数据转换     如果最后一项child数组长度为0把值变为null
+    fundFlowSet(data){
+      data = data || this.fundFlowData
+      for(var i = 0; i <data.length;i++) {
+        if(data[i].child.length){
+          this.fundFlowSet(data[i].child)
+        }else{
+          data[i].child = null;
+        }
+      }
+    },
     //撤销开票数据
     handleTableDelete(index) {
       let row = index.row;
@@ -654,16 +766,19 @@ export default {
     },
     //选择开票方change事件
     companyChange(item) {
-      this.formData.bankCardNum = item.bankCardNum;
+      this.formData.revBankCardNum = item.bankCardNum;
       this.formData.biller = item.biller;
       this.formData.accountId = item.accountId;
     },
+    //选择开票方change事件
+    outherChange(item) {
+      this.formData.outBankCardNum = item.bankCardNum;
+    },
     //获取所有内部账户信息
     getAllUser() {
       this.$api.expense.getAccountByAccountName().then((res) => {
         if (res.code == 200) {
           let arr = [];
-
           res.data.forEach((item, index) => {
             if (item.invAccountCardList != null) {
               item.invAccountCardList.forEach((it) => {
@@ -707,24 +822,32 @@ export default {
       this.title = "开票新增";
       this.detailDialog = true;
     },
-    //转化备注
-    businessZh(data, value, label) {
-      return data.find((item) => item[label] == value);
-    },
     //新增编辑开票信息
     submitInfo() {
       let params = JSON.parse(JSON.stringify(this.formData));
       this.$refs.formData.validate((valid) => {
         if (valid) {
           if (this.formDataId) {
+            //转化资金归属
+            params.entProfit = {};
+            params.outProfit = {};
+            this.affiliationData.forEach((item) => { 
+              params.entProfit[item.profitEng] = item.profit;
+            });
+            this.affiliationData2.forEach((item) => {
+              params.outProfit[item.profitEng] = item.profit;
+            });
+            //转化资金归属
             let obj = {
               invoiceId: this.formDataId, //id
               payoutMoney: this.formData.payoutMoney, //进账金额
-              fundFlow:
-                params.otherUnit + "→" + this.formData.invoiceBy.nameValue, //资金流向
+              fundFlow: params.otherUnit + "→" + this.formData.invoiceBy, //资金流向
               payMethod: params.payMethod.join(","), //支付方式
-              fundUse: params.fundUse[params.fundUse.length - 1], //资金用途
+              fundUse: this.formData.fundUse[this.formData.fundUse.length - 2], //资金用途
+              fundFen: this.formData.fundUse[this.formData.fundUse.length - 1], //资金用途分项
               payoutTime: params.payoutTime, //进账日期
+              entProfit:params.entProfit, //收入方资金归属
+              outProfit:params.outProfit, //支出方资金归属
             };
             this.$api.expense.putInvAccountIncoice(obj).then((res) => {
               if (res.code == 200) {
@@ -735,7 +858,7 @@ export default {
               }
             });
           } else {
-            params.invoiceBy = this.formData.invoiceBy.accountName; //开票方
+            params.invoiceBy = this.formData.invoiceBy.nameValue; //开票方
             params.bigApplyAmount = toChies(params.invoiceMoney); //大写金额
             params.invoiceSubjects =
               params.invoiceSubjects1 + "*" + params.invoiceSubjects2; //开票科目
@@ -957,5 +1080,8 @@ export default {
 .invoic >>> .el-input {
   width: 45%;
 }
+.profit_box .el-form-item {
+  margin-bottom: 15px !important;
+}
 </style>
         

+ 375 - 0
src/views/FinancialManagement/ExpenseManagement/Profit.vue

@@ -0,0 +1,375 @@
+<template>
+  <!--布局容器-->
+  <div class="container" style="width: 99%; margin-top: 0px">
+    <!-- 新增 -->
+    <el-button
+      class="operation"
+      type="primary"
+      plain
+      size="medium"
+      @click="addAmount"
+      >新增利润</el-button
+    >
+
+    <!-- 表格 -->
+    <el-table
+      class="expendtable"
+      :stripe="true"
+      default-expand-all
+      :header-cell-style="{
+        background: '#F2F7FC',
+        fontWeight: '900',
+        color: '#606266',
+      }"
+      :data="tableData"
+      style="width: 100%; margin-bottom: 20px; margin-top: 30px"
+      row-key="expensesId"
+      border
+      :tree-props="{ children: 'child', hasChildren: 'hasChildren' }"
+    >
+      <el-table-column prop="profitId" align="center" label="归属id">
+      </el-table-column>
+      <el-table-column prop="profitEng" align="center" label="归属标识">
+      </el-table-column>
+      <el-table-column prop="profitName" align="center" label="归属名称">
+      </el-table-column>
+      <el-table-column align="center" label="操作">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            @click="handleTableEdit(scope.$index, scope.row)"
+            >编辑</el-button
+          >
+          <el-button
+            size="mini"
+            type="danger"
+            @click="handleDelete(scope.$index, scope.row)"
+            >删除</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+      :current-page="searchParams.pageNo"
+      :page-sizes="[10, 200, 300, 400]"
+      :page-size="searchParams.pageSize"
+      layout="total, sizes, prev, pager, next, jumper"
+      :total="searchParams.totalSize"
+    >
+    </el-pagination>
+    <!-- 新增弹出框 -->
+    <el-dialog
+      class="dialog"
+      :title="title"
+      :close-on-click-modal="false"
+      :before-close="handleClose"
+      :visible.sync="dialogFormVisible"
+      width="50%"
+    >
+      <el-form
+        :model="formData"
+        :rules="rules"
+        ref="formData"
+        label-width="120px"
+        size="small"
+        class="frame"
+      >
+        <el-row>
+          <el-col :span="12">
+            <el-form-item
+              label="归属标识"
+              :label-width="formLabelWidth"
+              prop="profitEng"
+            >
+              <el-input
+                v-model="formData.profitEng"
+                autocomplete="off"
+                placeholder="请填写英文标识"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              label="归属名称"
+              :label-width="formLabelWidth"
+              prop="profitName"
+            >
+              <el-input
+                v-model="formData.profitName"
+                autocomplete="off"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="resetForm('formData')" size="small">取 消</el-button>
+        <el-button type="primary" @click="submitForm('formData')" size="small"
+          >确 定</el-button
+        >
+      </div>
+    </el-dialog>
+  </div>
+</template>
+    <script>
+import KtCommonTable from "@/views/Core/KtCommonTable.vue"; //表格组件
+import KtButton from "@/views/Core/KtButton"; // 按钮权限组件
+import CommonUtil from "@/utils/comutil.js";
+
+export default {
+  name: "ExpenseMessage",
+  components: { KtCommonTable, KtButton },
+  created() {
+    // this.business();
+  },
+  mounted() {
+    this.findPage();
+  },
+  data() {
+    return {
+      searchParams: {
+        pageNo: 1,
+        pageSize: 10,
+      },
+      title: "新增利润",
+      tableData: [], //表格数据
+      button3Name: "删除",
+      button3Background: "rgb(222, 80, 76)",
+      button2Background: "rgb(14, 194, 22)",
+      button2Name: "新建子类",
+      dialogFormVisible: false, //弹出框状态
+      formLabelWidth: "120px",
+      formData: {
+        profitName: "",
+      },
+      rules: {
+        profitEng: [
+          { required: true, message: "归属标识不能为空", trigger: "blur" },
+          {pattern:/[a-zA-z]$/,message:'请输入英文'}
+        ],
+        profitName: [
+          { required: true, message: "归属名称不能为空", trigger: "blur" },
+        ],
+      },
+      formDataId: "", //编辑id
+    };
+  },
+  watch: {
+    dialogFormVisible(n) {
+      if (!n) {
+        this.handleClose();
+      }
+    },
+  },
+  methods: {
+    //切换条数
+    handleSizeChange(val) {
+      this.searchParams.pageSize = val
+      this.findPage()
+    },
+    //切换页数
+    handleCurrentChange(val) {
+      this.searchParams.pageNo = val
+      this.findPage()
+    },
+    //删除
+    handleDelete(index, row) {
+      let id = row.profitId;
+      this.$confirm("确认删除该记录吗?", "提示", {
+        type: "warning",
+      })
+        .then(() => {
+          this.$api.expense.deleteProfit(id).then((res) => {
+            if (res.code == 200) {
+              this.$message.success("删除成功");
+              this.findPage();
+            } else {
+              this.$message.error(res.msg);
+            }
+          });
+        })
+        .catch(() => {});
+    },
+    //获取列表数据
+    findPage(data) {
+      this.$api.expense
+        .getPageList(this.searchParams)
+        .then((res) => {
+          this.tableData = res.data.records;
+          this.searchParams.pageNo = res.data.current;
+          this.searchParams.pageSize = res.data.size;
+          this.searchParams.totalPages = res.data.pages;
+          this.searchParams.totalSize = res.data.total;
+        })
+        .then(data != null ? data.callback : "");
+    },
+    //新增事件
+    addAmount() {
+      this.title = "新增利润";
+      this.dialogFormVisible = true;
+    },
+    //弹框取消
+    handleClose() {
+      this.formDataId = ""; //编辑id
+      this.dialogFormVisible = false;
+      this.formData = {
+        profitName: "",
+      };
+      this.$refs.formData.resetFields();
+    },
+    //新增取消重置
+    resetForm(formData) {
+      this.dialogFormVisible = false;
+      this.$refs[formData].resetFields();
+    },
+    //修改
+    handleTableEdit(index, row) {
+      this.title = "编辑利润";
+      this.formDataId = row.profitId;
+      this.$api.expense.getPageList({ profitId: this.formDataId }).then((res) => {
+        if (res.code == 200) {
+          this.formData = JSON.parse(JSON.stringify(res.data.records[0]));
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
+      this.dialogFormVisible = true;
+    },
+    //提交
+    submitForm(formData) {
+      let params = JSON.parse(JSON.stringify(this.formData));
+      this.$refs[formData].validate((valid) => {
+        if (valid) {
+          if (this.formDataId) {
+            //修改
+            this.$api.expense.updateProfit(params).then((res) => {
+              if (res.code == 200) {
+                this.$message({
+                  message: "修改成功",
+                  type: "success",
+                });
+              } else {
+                this.$message({
+                  message: `修改失败, ${res.msg}`,
+                  type: "error",
+                });
+              }
+              this.dialogFormVisible = false;
+              this.findPage();
+            });
+          } else {
+            //新增
+            this.$api.expense.addInsert(params).then((res) => {
+              if (res.code == 200) {
+                this.$message({
+                  message: "添加成功",
+                  type: "success",
+                });
+              } else {
+                this.$message({
+                  message: `添加失败, ${res.msg}`,
+                  type: "error",
+                });
+              }
+              this.dialogFormVisible = false;
+              this.findPage();
+            });
+          }
+        } else {
+          return false;
+        }
+      });
+    },
+  },
+};
+</script>
+    
+    <style scoped>
+.operation {
+  margin-left: 14px !important;
+  margin-top: 15px !important ;
+}
+.form {
+  display: flex;
+  margin-top: 14px;
+  align-items: center;
+  margin-left: -12px;
+  margin-bottom: 20px;
+}
+.el-pagination {
+  font-weight: normal;
+}
+.el-card__body {
+  padding: 12px !important;
+}
+.footer .footerdiv {
+  display: flex;
+  align-items: center;
+}
+.container .el-form-item {
+  margin-bottom: -14px !important;
+}
+.form .el-form-item__label {
+  font-size: 15px !important;
+  font-weight: 600 !important;
+}
+
+.ktTable {
+  margin-top: 20px;
+}
+.el-row {
+  margin-top: 18px;
+}
+.top {
+  margin-top: 0px;
+}
+
+.el-date-editor--daterange.el-input__inner {
+  width: 300px;
+}
+/deep/ .el-select--small {
+  width: 100%;
+}
+.frame {
+  width: 100%;
+  background-color: #fff;
+  padding: 20px;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+  margin-bottom: 15px;
+  border-radius: 6px;
+  border: 1px solid #ebeef5;
+  -webkit-transition: all 0.2s ease-in-out;
+  transition: all 0.2s ease-in-out;
+  -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+}
+/deep/ .el-dialog__body {
+  overflow-y: scroll;
+  max-height: 500px;
+}
+.addremove-box {
+  width: 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  font-size: 25px;
+  margin-top: 10px;
+  /* position: absolute;
+      bottom:0;
+      left: 0; */
+}
+.addremove-box > i {
+  cursor: pointer;
+}
+.frame >>> .el-date-editor {
+  width: 100%;
+}
+.expendtable >>> .el-table__body-wrapper {
+  overflow-y: auto;
+  height: 600px;
+}
+</style>
+    

+ 62 - 14
src/views/FinancialManagement/ExpenseManagement/TransferRecord.vue

@@ -3,7 +3,12 @@
   <div class="container" style="width: 99%; margin-top: 0px">
     <!-- 顶部查询 -->
     <el-row class="top">
-      <el-form v-model="pageRequest" size="small" label-width="95px" class="form">
+      <el-form
+        v-model="pageRequest"
+        size="small"
+        label-width="95px"
+        class="form"
+      >
         <el-form-item label="转账类型" label-width="95px" prop="revenueOutlay">
           <el-select
             v-model="pageRequest.revenueOutlay"
@@ -37,6 +42,14 @@
         </el-form-item>
       </el-form>
     </el-row>
+    <el-button
+      class="operation"
+      type="primary"
+      plain
+      size="medium"
+      @click="expentData"
+      >导出</el-button
+    >
     <!-- 表格 -->
     <kt-common-table
       :operationWidth="operationWidth"
@@ -55,7 +68,6 @@
     <script>
 import KtCommonTable from "@/views/Core/KtCommonTable.vue"; //表格组件
 import KtButton from "@/views/Core/KtButton"; // 按钮权限组件
-import CommonUtil from "@/utils/comutil.js";
 
 export default {
   name: "InvoiceInformation",
@@ -69,13 +81,16 @@ export default {
       operationWidth: 200, //操作列宽度
       queryFrom: {
         //查询条件
-        revenueOutlay:""
+        revenueOutlay: "",
       },
       pageResult: {}, //表格参数
       pageRequest: {
         // 列表查询条件
         pageNo: 1,
         pageSize: 10,
+        company: "",
+        fundUse: "",
+        revenueOutlay: "",
       },
       columns: [
         // 数据列
@@ -88,17 +103,17 @@ export default {
         {
           prop: "company",
           label: "支出单位",
-          minWidth: 150,
+          minWidth: 350,
           sortable: false,
         },
-        { prop: "fundFlow", label: "资金流向", minWidth: 260, sortable: false },
+        { prop: "fundFlow", label: "资金流向", minWidth: 350, sortable: false },
         {
           prop: "payMethod",
           label: "支付方式",
-          minWidth: 150,
+          minWidth: 100,
           sortable: false,
         },
-        { prop: "applyAmount", label: "金额", minWidth: 150, sortable: false },
+        { prop: "applyAmount", label: "金额", minWidth: 100, sortable: false },
         {
           prop: "fundUse",
           label: "资金用途",
@@ -106,8 +121,8 @@ export default {
           sortable: false,
         },
         {
-          prop: "remark",
-          label: "备注",
+          prop: "fundFen",
+          label: "资金用途分项",
           minWidth: 150,
           sortable: false,
         },
@@ -116,7 +131,31 @@ export default {
     };
   },
   methods: {
-    //获取页面数据
+    /**
+     * 导出
+     */
+    expentData() {
+      let params = JSON.parse(JSON.stringify(this.pageRequest));
+      delete params.pageNo;
+      delete params.pageSize;
+      this.$api.expense.accountOperateExcel(params).then((res) => {
+        if (res.code == 200) {
+          let url = process.env.BASE_URL + "/upload/" + res.data; // 3.创建一个临时的url指向blob对象
+          // 4.创建url之后可以模拟对此文件对象的一系列操作,例如:预览、下载
+          let a = document.createElement("a");
+          a.href = url;
+          a.download = "导出订单.xlsx";
+          a.click();
+          // 5.释放这个临时的对象url
+          window.URL.revokeObjectURL(url);
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
+    },
+    /**
+     * 获取页面数据
+     */
     findPage(data) {
       if (data && data.pageRequest) {
         this.pageRequest.pageNo = data.pageRequest.pageNum;
@@ -126,8 +165,13 @@ export default {
         .getAccountOperate(this.pageRequest)
         .then((res) => {
           res.data.records.forEach((item) => {
-            if(item.revenueOutlay!=null&&item.revenueOutlay!=undefined&&item.revenueOutlay!=''){
-              item.revenueOutlayName = item.revenueOutlay == 0 ? "收入" : "支出";
+            if (
+              item.revenueOutlay != null &&
+              item.revenueOutlay != undefined &&
+              item.revenueOutlay != ""
+            ) {
+              item.revenueOutlayName =
+                item.revenueOutlay == 0 ? "收入" : "支出";
             }
           });
           this.pageResult = {
@@ -140,14 +184,18 @@ export default {
         })
         .then(data != null ? data.callback : "");
     },
-    //数据字典
+    /**
+     * 数据字典
+     */
     business() {
       let typeName = "account_quality";
       this.$api.dict.findByLableName(typeName).then((res) => {
         this.dictionariesData = res.data;
       });
     },
-    // 查询
+    /**
+     * 查询
+     */
     queryStaffInfo() {
       this.findPage();
     },