SettlementCollect.vue 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. <template>
  2. <div>
  3. <div class="p-2">
  4. <el-form
  5. :inline="true"
  6. size="small"
  7. :model="pageRequest"
  8. class="demo-form-inline"
  9. >
  10. <el-form-item label="选择月份:">
  11. <el-date-picker
  12. v-model="pageRequest.monthValue"
  13. type="month"
  14. value-format="yyyy-MM"
  15. placeholder="选择月"
  16. >
  17. </el-date-picker>
  18. </el-form-item>
  19. <el-form-item label="保险公司:">
  20. <el-select
  21. v-model="insuranceIdlist"
  22. filterable
  23. class="widths"
  24. clearable
  25. @change="companySelectChange"
  26. collapse-tags
  27. >
  28. <el-option
  29. v-for="val in companyList"
  30. :key="val.id"
  31. :label="val.name"
  32. :value="val.id"
  33. ></el-option>
  34. </el-select>
  35. </el-form-item>
  36. <el-form-item>
  37. <el-button type="primary" @click="formQuery">查询</el-button>
  38. </el-form-item>
  39. </el-form>
  40. </div>
  41. <el-main ref="elMain" style="padding: 0px">
  42. <el-table
  43. :data="pageResult"
  44. size="small"
  45. stripe
  46. height="700"
  47. :header-cell-style="{
  48. background: '#F2F7FC',
  49. fontWeight: '900',
  50. color: '#606266',
  51. }"
  52. >
  53. <el-table-column
  54. prop="signDate"
  55. label="签单日期"
  56. header-align="center"
  57. align="center"
  58. width="150"
  59. ></el-table-column>
  60. <el-table-column label="总计" header-align="center">
  61. <el-table-column
  62. prop="signPremium"
  63. label="签单保费"
  64. header-align="center"
  65. width="100"
  66. align="center"
  67. ></el-table-column>
  68. <el-table-column
  69. prop="signReceivableAmount"
  70. label="总应收金额"
  71. header-align="center"
  72. width="100"
  73. align="center"
  74. ></el-table-column>
  75. </el-table-column>
  76. <el-table-column label="已结算" header-align="center">
  77. <el-table-column
  78. v-for="(item,index) in settlementColumns"
  79. :key=" index"
  80. :label="item.settlementDate"
  81. header-align="center"
  82. >
  83. <el-table-column
  84. label="签单保费"
  85. header-align="center"
  86. width="100"
  87. align="center"
  88. >
  89. <template slot-scope="scope">
  90. <div>
  91. {{ scope.row.settlementData[index].agentCommission}}
  92. </div>
  93. </template>
  94. </el-table-column>
  95. <el-table-column
  96. label="代理人佣金"
  97. header-align="center"
  98. width="100"
  99. align="center"
  100. >
  101. <template slot-scope="scope">
  102. <div>
  103. {{ scope.row.settlementData[index].settlementPremium }}
  104. </div>
  105. </template>
  106. </el-table-column>
  107. </el-table-column>
  108. </el-table-column>
  109. <el-table-column label="未结算预计" header-align="center">
  110. <el-table-column
  111. prop="unCalculatedAmount"
  112. label="签单保费"
  113. header-align="center"
  114. width="100"
  115. align="center"
  116. ></el-table-column>
  117. <el-table-column
  118. prop="agentAmount"
  119. label="代理人佣金"
  120. header-align="center"
  121. width="100"
  122. align="center"
  123. ></el-table-column>
  124. </el-table-column>
  125. <el-table-column label="利润" header-align="center">
  126. <el-table-column
  127. prop="settledProfit"
  128. label="已结算利润"
  129. header-align="center"
  130. width="100"
  131. align="center"
  132. ></el-table-column>
  133. <el-table-column
  134. prop="unsettledProfitCalculation"
  135. label="未结算利润测算"
  136. header-align="center"
  137. width="150"
  138. align="center"
  139. ></el-table-column>
  140. </el-table-column>
  141. <!-- 使用v-for动态生成每个月的结算数据列 -->
  142. </el-table>
  143. </el-main>
  144. </div>
  145. </template>
  146. <script>
  147. import CommonUtil from "@/utils/comutil.js";
  148. export default {
  149. data() {
  150. return {
  151. //地区编码数据
  152. regionalCode: [],
  153. insuranceIdlist: [],
  154. companyList: [],
  155. pageRequest: {
  156. //查询的默认条件
  157. monthValue: "",
  158. insuranceId: "",
  159. },
  160. dateTime: [],
  161. institutionOptions: [],
  162. dialogVisible: false,
  163. docOrderid: "",
  164. plyNoList: [],
  165. // 右侧列表查询数据Start
  166. pageResult: [],
  167. settlementColumns: [], //数据列标题
  168. };
  169. },
  170. created() {
  171. this.companyInt();
  172. },
  173. mounted() {
  174. },
  175. methods: {
  176. //查询
  177. formQuery() {
  178. this.findPage();
  179. },
  180. //保险公司查询
  181. companyInt() {
  182. this.$api.letter.gainTopList().then((res) => {
  183. this.companyList = res.data;
  184. });
  185. },
  186. companySelectChange(val) {
  187. this.pageRequest.insuranceId = val.toString();
  188. },
  189. handleTableSettled(ids) {
  190. this.plyNoList = ids;
  191. this.dialogVisible11 = true;
  192. },
  193. inscompanyFormatter(row, column) {
  194. //协议类型
  195. let inscompany = row.inscompany;
  196. return CommonUtil.getDataName({
  197. dataList: this.global.insCompanyList,
  198. value: "code",
  199. label: "name",
  200. data: inscompany,
  201. });
  202. },
  203. timeFormatter(row, column) {
  204. let time = this.transformTime(row.createTime);
  205. return time;
  206. },
  207. totalmoenyFormatter(row, column) {
  208. //协议类型
  209. let inscompany = row.inscompany;
  210. return (row.feeamount + row.disamount).toFixed(2);
  211. },
  212. //点击查询按钮
  213. //--数据字典 begin --
  214. getDictItems: function (typeName) {
  215. let that = this;
  216. that.$api.dict
  217. .findByLableName(typeName)
  218. .then(function (res) {
  219. console.log(res);
  220. that[typeName + "options"] = res.data; // 把获取到的数据赋给this.data
  221. })
  222. .catch(function (error) {
  223. that[typeName + "options"] = [];
  224. });
  225. },
  226. //--数据字典 end --
  227. // 右侧列表的方法Start
  228. findPage(data) {
  229. // 获取分页数据
  230. let that = this;
  231. that.$api.task
  232. .settlementSourceResult(
  233. this.pageRequest.monthValue,
  234. this.pageRequest.insuranceId
  235. )
  236. .then((res) => {
  237. if (res.code == "200") {
  238. that.pageResult = res.data.content;
  239. if (res.data.content.length > 0) {
  240. this.settlementColumns = res.data.content[0].settlementData;
  241. }
  242. } else {
  243. this.$message({
  244. type: "error",
  245. message: res.msg,
  246. });
  247. }
  248. })
  249. .then(data != null ? data.callback : "");
  250. },
  251. },
  252. };
  253. </script>
  254. <style lang="scss" scoped>
  255. .widths {
  256. width: 220px;
  257. }
  258. </style>