소스 검색

应收账款,应收账款管理暂存

qymljy 6 달 전
부모
커밋
596a388a85
5개의 변경된 파일370개의 추가작업 그리고 0개의 파일을 삭제
  1. 13 0
      src/HManagement/actsRecMag/index.vue
  2. 231 0
      src/SManagement/actsRec/index.vue
  3. 106 0
      src/SManagement/actsRec/modules/detailInfo.vue
  4. 10 0
      src/router/HManagement.js
  5. 10 0
      src/router/SManagement.js

+ 13 - 0
src/HManagement/actsRecMag/index.vue

@@ -0,0 +1,13 @@
+<template>
+
+</template>
+
+<script>
+export default {
+  name: "index"
+}
+</script>
+
+<style scoped>
+
+</style>

+ 231 - 0
src/SManagement/actsRec/index.vue

@@ -0,0 +1,231 @@
+<template>
+  <div>
+    <normal-layout style="height: calc(100vh - 125px)">
+      <div slot="titleRight">
+        <exportFile :param="param" :columns="param.content.querytype == '0'?tablecolsSaler:tablecolsCustomer" fileName="应收账款" :dataid="param.content.dataid"></exportFile>
+      </div>
+      <div slot="content">
+        <div class="container">
+          <template>
+            <div class="mt-10 inline-16">
+              <label class="search__label">{{$t('查询方式')}}:</label>
+              <el-select v-model="param.content.point" :placeholder="$t('请选择')" size="small" @change="listData">
+                <el-option :label="$t(`出货`)" value="出货" ></el-option>
+                <el-option :label="$t(`开票`)" value="开票" ></el-option>
+              </el-select>
+<!--              <el-radio-group v-model="param.content.querytype" @change="listData">-->
+<!--                <el-radio :label="0">{{$t('按业务员')}}</el-radio>-->
+<!--                <el-radio :label="1">{{$t('按客户')}}</el-radio>-->
+<!--              </el-radio-group>-->
+            </div>
+            <div class="mt-10 inline-16" style="margin-left: 20px">
+              <departmentSalesperson ref="departmentSalesperson" class="inline-16" @depSelect="depSelect" @personSelect="personSelect" ></departmentSalesperson>
+            </div>
+            <div>
+              <el-row :gutter="20">
+                <el-col :span="6" class="mt-10">
+                  <div class="acccounet__panel" style="border:1px solid #d8dde8">
+                    <p class="normal-margin">{{$t('总应收')}}</p>
+                    <p class="normal-title" style="font-size:29px;color:#151515" >
+                      <small>{{allList.sumallaoverduemount || allList.sumallaoverduemount == '0'?'¥':''}}</small>
+                      {{allList.sumallaoverduemount || allList.sumallaoverduemount == 0?tool.formatAmount(allList.sumallaoverduemount,2):'--'}}
+                    </p>
+                  </div>
+                </el-col>
+              </el-row>
+            </div>
+            <div style="flex:0 1 auto;width: 100%;">
+              <tableMainLayout :layout="param.content.querytype == '0'?tablecolsSaler:tablecolsCustomer" height="calc(100vh - 410px)" :data="list" fixedName="operation" :width="true" :custom="true">
+                <template v-slot:customcol="scope">
+                  <div v-if="scope.column.columnname === 'allaoverduemount'">
+                    <span><small>¥</small>{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'onemonthamount'">
+                    <span><small>¥</small>{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'threemonthamount'">
+                    <span><small>¥</small>{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'upthreemonthamount'">
+                    <span><small>¥</small>{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
+                  </div>
+                  <p v-else>{{scope.column.data[scope.column.columnname] || scope.column.columnname === 'operation'?$t(scope.column.data[scope.column.columnname]):'--'}}</p>
+                </template>
+                <template v-slot:opreation="scope">
+                  <detailInfo :data="scope.data" :items="param.content"></detailInfo>
+                </template>
+              </tableMainLayout>
+            </div>
+            <div class="container normal-panel" style="text-align:right">
+              <el-pagination
+                  background
+                  @size-change="handleSizeChange"
+                  @current-change="handleCurrentChange"
+                  :current-page="currentPage"
+                  :page-sizes="[100, 50, 100, 200]"
+                  :page-size="100"
+                  layout="total,sizes, prev, pager, next, jumper"
+                  :total="total">
+              </el-pagination>
+            </div>
+          </template>
+        </div>
+      </div>
+    </normal-layout>
+  </div>
+</template>
+
+<script>
+import departmentSalesperson from "@/views/salesData/components/departmentSalesperson";
+import detailInfo from './modules/detailInfo'
+import exportFile from '@/components/export_file/index'
+export default {
+  name: "index",
+  components:{departmentSalesperson,detailInfo,exportFile},
+  data(){
+    return {
+      value:'全部',
+      options:[],
+      tablecolsSaler:[],
+      tablecolsCustomer:[],
+      list:[],
+      currentPage:0,
+      total:0,
+      allList:{},
+      depmentParam:{
+        "id": 20230620102004,
+        "content": {
+        }
+      },
+      param:{
+        "id": 20241217135803,
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 100,
+          "type":"0",//1按部门 0按人员
+          "dataid":JSON.parse(sessionStorage.getItem('active_account')).userid,//部门人员id
+          "querytype":1,//0按业务员 1按客户
+          "point":"开票",// 入账节点
+          "where": {
+            "condition": ""
+          }
+        }
+      }
+    }
+  },
+  methods:{
+    async listData(){
+      const res = await this.$api.requested(this.param)
+      console.log(res.data,'数据')
+      this.list = res.data
+      this.allList = res.data.length > 0 ? res.data[0]:{}
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    async departmentrtment() {
+      const res = await this.$api.requested(this.depmentParam)
+      this.$refs.departmentSalesperson.deplist = this.createMenu(res.data.dep)
+      this.$refs.departmentSalesperson.personnelList = res.data.hr
+      const name = JSON.parse(sessionStorage.getItem('active_account')).name
+      this.$refs.departmentSalesperson.person = name
+    },
+    createMenu (array) {
+      var that = this
+      let arr = []
+      function convertToElementTree(node) {
+        // 新节点
+        if (node.subdep.length === 0){
+          var elNode = {
+            label: node["depname"],
+            parentid:node['parentid'],
+            parentname:node['parentname'],
+            departmentid:node["departmentid"],
+            value:node["departmentid"],
+            remarks:node["remarks"],
+            isused:node["isused"],
+            changedate:node['changedate'],
+            changeby:node['changeby'],
+            createdate:node['createdate'],
+            createby:node['createby'],
+            depno:node['depno'],
+            disabled:that.pageOnlyRead,
+          }
+        }else {
+          var elNode = {
+            label: node["depname"],
+            parentid:node['parentid'],
+            parentname:node['parentname'],
+            departmentid:node["departmentid"],
+            value:node["departmentid"],
+            remarks:node["remarks"],
+            isused:node["isused"],
+            changedate:node['changedate'],
+            changeby:node['changeby'],
+            createdate:node['createdate'],
+            createby:node['createby'],
+            depno:node['depno'],
+            disabled:that.pageOnlyRead,
+            children: []
+          }
+        }
+        if (node.subdep && node.subdep.length > 0) {
+          // 如果存在子节点
+          for (var index = 0; index < node.subdep.length; index++) {
+            // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
+            elNode.children.push(convertToElementTree(node.subdep[index]));
+          }
+        }
+        return elNode;
+      }
+      array.forEach((element) => {
+        arr.push(convertToElementTree(element))
+      });
+      return arr
+    },
+    /*选择部门*/
+    depSelect(val){
+      console.log(val,'val3333')
+      this.param.content.type = 1
+      this.param.content.dataid = val
+      this.dataid = val
+      this.listData()
+    },
+    /*选择业务员*/
+    personSelect(val){
+      this.param.content.type = 0
+      this.param.content.dataid = val
+      this.dataid = val
+      this.listData()
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+  },
+  mounted() {
+    this.departmentrtment()
+    this.listData()
+  },
+  created() {
+    this.tablecolsSaler = this.tool.tabelCol(this.$route.name).accountsReceivableSalerTable.tablecols
+    this.tablecolsCustomer = this.tool.tabelCol(this.$route.name).accountsReceivableCustomerTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+.acccounet__panel{
+  padding: 10px;
+  line-height: 30px;
+  border:1px solid #f1f2f3;
+  color:#666;
+  border-radius: 5px;
+  cursor: pointer;
+}
+</style>

+ 106 - 0
src/SManagement/actsRec/modules/detailInfo.vue

@@ -0,0 +1,106 @@
+<template>
+  <div>
+    <el-button size="mini" type="text" @click="onShow(dialogVisible = true)">{{$t('明细')}}</el-button>
+    <el-drawer
+        :title="param.content.querytype == '0'?$t('业务员逾期订单明细'):$t('客户逾期订单明细')"
+        :visible.sync="dialogVisible"
+        size="80%"
+        direction="rtl"
+        append-to-body
+        :show-close="false"
+        >
+      <div class="drawer__panel" style="margin-bottom: 0 !important;">
+        <exportFile style="margin-bottom: 20px" :param="param" :columns="param.content.querytype == '0'?tablecolsSaler:tablecolsCustomer" :fileName="param.content.querytype == '0'?$t('业务员逾期订单明细'):$t('客户逾期订单明细')" :dataid="param.content.dataid"></exportFile>
+        <tableNewLayout :layout="param.content.querytype == '0'?tablecolsSaler:tablecolsCustomer"  height="calc(100vh - 165px)" :data="list" fixedName="operation" :width="true" :custom="true">
+          <template v-slot:customcol="scope">
+            <div v-if="scope.column.columnname === 'overdueamount'">
+              <span><small>¥</small>{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
+            </div>
+            <div v-else-if="scope.column.columnname === 'amount'">
+              <span><small>¥</small>{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
+            </div>
+            <p v-else>{{scope.column.data[scope.column.columnname] || scope.column.columnname === 'operation'?$t(scope.column.data[scope.column.columnname]):'--'}}</p>
+          </template>
+          <template v-slot:opreation="scope"></template>
+        </tableNewLayout>
+<!--        <div class="container normal-panel" style="text-align:right">
+          <el-pagination
+              background
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="currentPage"
+              :page-sizes="[100,150, 200]"
+              :page-size="100"
+              layout="total,sizes, prev, pager, next, jumper"
+              :total="total">
+          </el-pagination>
+        </div>-->
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import departmentSalesperson from "@/views/salesData/components/departmentSalesperson";
+import exportFile from '@/components/export_file/index'
+export default {
+  name: "detailInfo",
+  components:{departmentSalesperson,exportFile},
+  props:['data','items'],
+  data(){
+    return {
+      dialogVisible:false,
+      tablecolsSaler:[],
+      tablecolsCustomer:[],
+      list:[],
+      currentPage:0,
+      total:0,
+      param:{
+        "id": 202400321085104,
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 100,
+          "dataid":"",// 按业务员时 传userid 按客户时传 sa_customersid
+          "querytype":"",//0按业务员 1按客户
+          "point":"",//入账节点
+          "where": {
+            "condition": ""
+          }
+        }
+      }
+    }
+  },
+  methods:{
+    onShow(){
+      this.param.content.dataid = this.items.querytype == '0'?this.data.userid:this.data.sa_customersid
+      this.param.content.querytype = this.items.querytype
+      this.param.content.point = this.items.point
+      this.listData()
+    },
+    async listData(){
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+  },
+  created() {
+    this.tablecolsSaler = this.tool.tabelCol(this.$route.name).salerDetailTable.tablecols
+    this.tablecolsCustomer = this.tool.tabelCol(this.$route.name).customerDetailTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 10 - 0
src/router/HManagement.js

@@ -703,6 +703,16 @@ const HManagement = [
       keeproute: true
     },
     component: () => import(/* webpackChunkName: "about" */ '@/HManagement/serviceDataScreen/index')
+  },
+  {
+    path: '/actsRecMag',
+    name: 'actsRecMag',
+    meta: {
+      title: '应收账款管理',
+      ast_nav: true,
+      keeproute: true
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/HManagement/actsRecMag/index')
   }
 
 ]

+ 10 - 0
src/router/SManagement.js

@@ -273,5 +273,15 @@ const SManagement = [{
     },
   ]
 },
+  {
+    path: '/actsRec',
+    name: 'actsRec',
+    meta: {
+      title: '应收账款',
+      ast_nav: true,
+      keeproute: true
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/SManagement/actsRec/index')
+  }
 ]
 export default SManagement