collectDetail.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. <template>
  2. <div class="page-container list-container">
  3. <div class="list-btns-container">
  4. <el-button type="primary" size="small" icon="Download" @click="handleExport">导出</el-button>
  5. </div>
  6. <el-form ref="queryForm" class="list-search-container" :model="queryParams" :inline="true" label-width="68px">
  7. <el-form-item label="客户名称:" prop="bizCollection.companyName">
  8. <el-input v-model="queryParams.bizCollection.companyName" size="small" placeholder="请输入客户名称" style="width: 150px"
  9. clearable @keyup.enter="handleQuery" />
  10. </el-form-item>
  11. <el-form-item label="合同编号:" prop="bizArchiveInput.contractNo">
  12. <el-input v-model="queryParams.bizArchiveInput.contractNo" size="small" placeholder="请输入合同编号" style="width: 150px"
  13. clearable @keyup.enter="handleQuery" />
  14. </el-form-item>
  15. <el-form-item label="任务名称:" prop="taskTypeId">
  16. <el-select size="small" v-model="queryParams.taskTypeId" placeholder="任务名称" clearable
  17. style="width: 150px">
  18. <el-option v-for="item in taskTypeList " :key="item.id" :label="item.name" :value="item.id" />
  19. </el-select>
  20. </el-form-item>
  21. <el-form-item label="确认所属时间:" label-width="95px" prop="bizArchiveInput.map.receiptDateFilter">
  22. <el-date-picker v-model="queryParams.bizArchiveInput.map.receiptDateFilter" size="small" type="daterange" clearable
  23. format="YYYY - MM - DD " value-format="YYYY-MM-DD" range-separator="至" start-placeholder="业务日期"
  24. end-placeholder="业务日期" style="width: 100%;"></el-date-picker>
  25. </el-form-item>
  26. <el-form-item label="甲方:" prop="bizArchiveInput.boss">
  27. <el-input v-model="queryParams.bizArchiveInput.boss" size="small" placeholder="请输入甲方" style="width: 150px"
  28. clearable @keyup.enter="handleQuery" />
  29. </el-form-item>
  30. <el-form-item label="乙方:" prop="bizArchiveInput.party">
  31. <el-input v-model="queryParams.bizArchiveInput.party" size="small" placeholder="请输入乙方" style="width: 150px"
  32. clearable @keyup.enter="handleQuery" />
  33. </el-form-item>
  34. <el-form-item label="申请人:" prop="bizCollection.applierName">
  35. <el-input v-model="queryParams.bizCollection.applierName" size="small" placeholder="请输入申请人" style="width: 150px"
  36. clearable @keyup.enter="handleQuery" />
  37. </el-form-item>
  38. <el-form-item label="审核人:" prop="bizCollection.verifyName">
  39. <el-input v-model="queryParams.bizCollection.verifyName" size="small" placeholder="请输入审核人名称" style="width: 150px"
  40. clearable @keyup.enter="handleQuery" />
  41. </el-form-item>
  42. <div style="margin-top: 10px;" >
  43. <el-form-item label="是否是项目:" prop="bizCollection.isProject" label-width="auto">
  44. <el-select size="small" v-model="queryParams.bizCollection.isProject" placeholder="是否是项目" clearable
  45. style="width: 145px">
  46. <el-option v-for="item in projectTypes" :key="item.value" :label="item.label"
  47. :value="item.value" />
  48. </el-select>
  49. </el-form-item>
  50. <el-form-item label="新签/续签:" prop="bizArchiveInput.contractType">
  51. <el-select size="small" v-model="queryParams.bizArchiveInput.contractType" placeholder="新签/续签" clearable
  52. style="width: 150px">
  53. <el-option v-for="item in contractTypes" :key="item.value" :label="item.label"
  54. :value="item.value" />
  55. </el-select>
  56. </el-form-item>
  57. <el-form-item label="项目名称:" prop="bizCollection.projectName">
  58. <el-input v-model="queryParams.bizCollection.projectName" size="small" placeholder="请输入审核人名称" style="width: 150px"
  59. clearable @keyup.enter="handleQuery" />
  60. </el-form-item>
  61. <el-form-item label="项目主体名称:" prop="bizCollection.projectMainName">
  62. <el-input v-model="queryParams.bizCollection.projectMainName" size="small" placeholder="请输入审核人名称" style="width: 150px"
  63. clearable @keyup.enter="handleQuery" />
  64. </el-form-item>
  65. <el-form-item label="请选择到账时间:" prop="bizArchiveInput.map.actuallyDateFilter">
  66. <el-date-picker v-model="queryParams.bizArchiveInput.map.actuallyDateFilter" type="daterange" clearable size="small"
  67. format="YYYY - MM - DD " value-format="YYYY-MM-DD" range-separator="至" start-placeholder="业务日期"
  68. end-placeholder="业务日期" style="width: 100%;"></el-date-picker>
  69. </el-form-item>
  70. <el-form-item style="margin-left: 40px;">
  71. <el-button type="primary" icon="Search" @click="handleQuery" size="small">搜索</el-button>
  72. <el-button icon="Refresh" @click="resetQuery" size="small">重置</el-button>
  73. </el-form-item>
  74. </div>
  75. </el-form>
  76. <!-- 列表区 -->
  77. <el-table v-loading="loading" :data="DataList" size="small" border height="100%">
  78. <el-table-column type="index" width="55" align="center" />
  79. <el-table-column label="客户名称" align="center" prop="bizCollection.companyName" >
  80. </el-table-column>
  81. <el-table-column label="合同编号" align="center" prop="bizArchiveInput.contractNo">
  82. </el-table-column>
  83. <el-table-column label="甲方" align="center" prop="bizArchiveInput.boss">
  84. </el-table-column>
  85. <el-table-column label="乙方" align="center" prop="bizArchiveInput.party">
  86. </el-table-column>
  87. <el-table-column label="任务名称" align="center" prop="taskTypeId">
  88. <template #default="scope">
  89. {{taskType[scope.row.taskTypeId]}}
  90. </template>
  91. </el-table-column>
  92. <el-table-column label="任务金额" align="center" prop="bizArchiveInput.amount">
  93. </el-table-column>
  94. <el-table-column label="本次收款金额" align="center" prop="arriveAmount">
  95. </el-table-column>
  96. <el-table-column label="合同类型" align="center" prop="bizArchiveInput.contractType">
  97. <template #default="scope">
  98. {{scope.row.bizArchiveInput.contractType == null?'':scope.row.bizArchiveInput.contractType === 0?'新签':'续签'}}
  99. </template>
  100. </el-table-column>
  101. <el-table-column label="是否是项目" align="center" prop="bizCollection.isProject">
  102. <template #default="scope">
  103. {{scope.row.bizCollection.isProject == null?'':scope.row.bizCollection.isProject === 0?'项目':'非项目'}}
  104. </template>
  105. </el-table-column>
  106. <el-table-column label="确认所属时间" align="center" prop="bizCollection.actuallyDate">
  107. </el-table-column>
  108. <el-table-column label="已收款金额" align="center" prop="arrived">
  109. </el-table-column>
  110. <el-table-column label="收款账户" align="center" prop="bizCollection.subsidiaryName">
  111. </el-table-column>
  112. <el-table-column label="申请人" align="center" prop="bizCollection.applierName">
  113. </el-table-column>
  114. <el-table-column label="审核人" align="center" prop="bizCollection.verifyName" >
  115. </el-table-column>
  116. <el-table-column label="审核时间" align="center" prop="bizCollection.verifyDate" >
  117. </el-table-column>
  118. <el-table-column label="项目名称" align="center" prop="bizCollection.projectName" >
  119. </el-table-column>
  120. <el-table-column label="项目主体名称" align="center" prop="bizCollection.projectMainName" >
  121. </el-table-column>
  122. <el-table-column label="到账日期" align="center" prop="bizCollection.arriveDate" >
  123. </el-table-column>
  124. </el-table>
  125. <!-- 分页 -->
  126. <pagination v-show="total > 0" :total="total" v-model:page="queryParams.params.pageNum"
  127. v-model:limit="queryParams.params.pageSize" @pagination="getList" />
  128. </div>
  129. </template>
  130. <script lang="ts" setup name="Business/collect/detail">
  131. import {ref} from "@vue/reactivity";
  132. import {defineComponent, getCurrentInstance, onActivated, onBeforeUpdate, reactive} from "vue";
  133. import { getToken, getTenant } from "@/utils/auth";
  134. import {
  135. statistics, listTask, exportStatistics, getByContract
  136. } from "@/api/business/financial/collection";
  137. import {listCollection,exportCollection} from "@/api/business/financial/collectDetail"
  138. import {onMounted} from "@vue/runtime-core";
  139. import integer from "async-validator/dist-types/validator/integer";
  140. const { proxy } = getCurrentInstance();
  141. interface ICollectionDetail {
  142. params:{
  143. pageNum?: number;
  144. pageSize?: number;
  145. }
  146. tenantId?: number;
  147. id?:number;
  148. bizCollection?:ICollection;
  149. bizArchiveInput?:IArchive;
  150. taskTypeName?:string;
  151. taskTypeId?:string;
  152. arriveAmount?:number;
  153. arrived?:number;
  154. }
  155. interface IArchive{
  156. Id?:number;
  157. party?:string;
  158. boss?:string;
  159. amount?:number;
  160. contractType?:string;
  161. contractNo?:string;
  162. map:{
  163. receiptDateFilter?:Array<string>;
  164. actuallyDateFilter?:Array<string>;
  165. }
  166. reqStatisticsVo?:any;
  167. }
  168. interface ICollection{
  169. companyName?:string;
  170. isProject?:number;
  171. arriveDate?:Date;
  172. actuallyDate?:Date;
  173. subsidiaryName?:string;
  174. applierName?:string;
  175. verifyName?:string;
  176. verifyDate?:Date;
  177. projectName?:string;
  178. projectMainName?:string;
  179. }
  180. const queryParams = ref<ICollectionDetail>({
  181. tenantId:getTenant(),
  182. bizArchiveInput:{
  183. map:{}
  184. },
  185. bizCollection:{},
  186. params:{
  187. pageNum: 1,
  188. pageSize: 20
  189. }
  190. });
  191. const taskType = ref<Map<string, string>>();
  192. const projectTypes = ref([
  193. {
  194. label: "是",
  195. value: 0,
  196. },
  197. {
  198. label: "否",
  199. value: 1,
  200. },
  201. ]);
  202. const contractTypes = ref([
  203. {
  204. label: "新签",
  205. value: 0,
  206. },
  207. {
  208. label: "续签",
  209. value: 1,
  210. },
  211. ]);
  212. const loading = ref(true);
  213. const total = ref(0);
  214. const DataList = ref<ICollectionDetail[]>();
  215. const taskTypeList = ref();
  216. function listTasks() {
  217. listTask().then((res:any) => {
  218. taskTypeList.value = res as any[]
  219. taskType.value = taskTypeList.value.reduce((pre, cur) => {
  220. pre[cur.id] = cur.name;
  221. return pre
  222. }, {})
  223. })
  224. }
  225. const getList = () => {
  226. loading.value = true;
  227. listCollection(queryParams.value).then((res:any) => {
  228. DataList.value = res.rows;
  229. total.value = res.total;
  230. loading.value = false;
  231. }).catch(e=>{
  232. loading.value = false;
  233. })
  234. }
  235. /** 搜索按钮操作 */
  236. function handleQuery() {
  237. queryParams.value.params.pageNum = 1;
  238. getList();
  239. }
  240. function resetQuery() {
  241. proxy.$refs.queryForm.resetFields();
  242. handleQuery();
  243. }
  244. const handleExport = () =>{
  245. exportCollection(queryParams.value,'收款明细导出.xlsx');
  246. }
  247. //组件激活时调用
  248. onMounted(() => {
  249. // 你的逻辑
  250. getList();
  251. listTasks();
  252. });
  253. </script>
  254. <style scoped>
  255. </style>