insuranceFirst-firstApproval.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. <template>
  2. <div>
  3. <el-breadcrumb separator=">">
  4. <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
  5. <el-breadcrumb-item>
  6. <a href="#">系统管理</a>
  7. </el-breadcrumb-item>
  8. <el-breadcrumb-item>
  9. <a href="/businessInsuranceApplication">新增投保初审</a>
  10. </el-breadcrumb-item>
  11. </el-breadcrumb>
  12. <el-divider></el-divider>
  13. <!--
  14. 要resetFields起作用,必须配置:model和prop
  15. -->
  16. <el-container>
  17. <el-aside width="70%">
  18. <el-tabs type="card" activeName="0">
  19. <el-tab-pane label="投保信息" name="0">
  20. <div>
  21. <div class="application-panel" v-loading="loading">
  22. <!-- 投保信息 -->
  23. <table border="1">
  24. <tr>
  25. <td colspan="2">投保人名称</td>
  26. <td colspan="3">{{insureData.insuredName}}</td>
  27. <td>联系电话</td>
  28. <td>{{insureData.insuredTel}}</td>
  29. </tr>
  30. <tr>
  31. <td rowspan="5">被保险人信息</td>
  32. <td>企业名称</td>
  33. <td colspan="3">{{insureData.companyName}}</td>
  34. <td>营业性质</td>
  35. <td>{{insureData.businessNature}}</td>
  36. </tr>
  37. <tr>
  38. <td>证件类型</td>
  39. <td colspan="3">{{insureData.insuredName}}</td>
  40. <td>证件号码</td>
  41. <td>{{insureData.usccCode}}</td>
  42. </tr>
  43. <tr>
  44. <td>营业范围</td>
  45. <td colspan="3">{{insureData.businessScope}}</td>
  46. <td>行业类型</td>
  47. <td>{{insureData.industryType}}</td>
  48. </tr>
  49. <tr>
  50. <td>雇员人数</td>
  51. <td>{{insureData.employeesNumber}}</td>
  52. <td>投保人数</td>
  53. <td>{{insureData.insuredNumber}}</td>
  54. <td>联系电话</td>
  55. <td>{{insureData.tel}}</td>
  56. </tr>
  57. <tr>
  58. <td>联系地址</td>
  59. <td colspan="3">{{insureData.companyAddress}}</td>
  60. <td>邮编</td>
  61. <td>{{insureData.postal}}</td>
  62. </tr>
  63. <tr>
  64. <td colspan="2">近三年损失情况(时间、原因、损失金额)</td>
  65. <td colspan="5">{{insureData.lossInRecentYears}}</td>
  66. </tr>
  67. </table>
  68. </div>
  69. <div class="user-panel" v-loading="loading">
  70. <!-- 被保险人信息 -->
  71. <el-table
  72. :data="tableData"
  73. style="width: 100%"
  74. v-loading="loading"
  75. stripe
  76. @sort-change="sortChange"
  77. @selection-change="handleSelectionChange"
  78. >
  79. <el-table-column prop="definitionName" label="序号" width="150"></el-table-column>
  80. <el-table-column prop="insuredNumber" label="姓名" width="100"></el-table-column>
  81. <el-table-column prop="insuredNumber" label="证件类型" width="100"></el-table-column>
  82. <el-table-column prop="insuredNumber" label="证件号码" width="100"></el-table-column>
  83. <el-table-column prop="insuredNumber" label="审核状态" width="100"></el-table-column>
  84. <el-table-column prop="insuredNumber" label="性别" width="100"></el-table-column>
  85. <el-table-column prop="insuredNumber" label="年龄" width="100"></el-table-column>
  86. <el-table-column prop="insuredNumber" label="岗位/工种" width="100"></el-table-column>
  87. <el-table-column prop="insuredNumber" label="健康状况" width="100"></el-table-column>
  88. <el-table-column prop="insuredNumber" label="身份证正面照" width="120"></el-table-column>
  89. </el-table>
  90. <el-pagination
  91. :current-page.sync="pageIndex"
  92. :total="totalElements"
  93. :page-sizes="pageSizeList"
  94. @current-change="changePage"
  95. @size-change="pageSizeChange"
  96. layout="total, sizes, prev, pager, next, jumper"
  97. ></el-pagination>
  98. </div>
  99. <div class="accept-panel" v-loading="loading">
  100. <!-- 承保信息 -->
  101. <table border="1">
  102. <tr>
  103. <td>险种</td>
  104. <td>限额名称</td>
  105. <td>责任限额/免赔额</td>
  106. </tr>
  107. <tr>
  108. <td colspan="5">{{acceptData.name}}1</td>
  109. <td>限额名称</td>
  110. <td>责任限额/免赔额</td>
  111. </tr>
  112. </table>
  113. </div>
  114. <div class="application-panel" v-loading="loading">
  115. <!-- 附件信息 -->
  116. </div>
  117. <div class="application-panel" v-loading="loading">
  118. <!-- 推广信息 -->
  119. </div>
  120. </div>
  121. </el-tab-pane>
  122. <el-tab-pane label="流程历史记录" name="20"></el-tab-pane>
  123. <el-tab-pane label="流程图" name="30"></el-tab-pane>
  124. </el-tabs>
  125. </el-aside>
  126. <el-container>
  127. <el-main>
  128. <el-form ref="form" :model="formModel" :rules="ruleValidate" :label-width="'100px'">
  129. <table>
  130. <tr>
  131. <td>当前步骤</td>
  132. <td>{{insureData.status}}--投保-人才超市初审</td>
  133. </tr>
  134. <tr>
  135. <td colspan="2">
  136. <el-form-item label="处理类型" prop="processStatus">
  137. <el-select v-model="formModel.processStatus" placeholder="请选择" filterable>
  138. <el-option label="通过" value="1"></el-option>
  139. <el-option label="退回" value="2"></el-option>
  140. </el-select>
  141. </el-form-item>
  142. </td>
  143. </tr>
  144. <tr>
  145. <td colspan="2">
  146. <el-form-item prop="opinion">
  147. <el-input
  148. type="textarea"
  149. :rows="20"
  150. placeholder="请输入内容"
  151. v-model="formModel.opinion"
  152. ></el-input>
  153. </el-form-item>
  154. </td>
  155. </tr>
  156. <tr>
  157. <td>下一步骤</td>
  158. <td>投保-人保专员复审</td>
  159. </tr>
  160. <tr>
  161. <td>
  162. <el-button size="mini" type="success" @click="downloadFiles()">打包下载申请资料</el-button>
  163. </td>
  164. <td>
  165. <el-button size="mini" type="primary" @click="saveApproval()">提交</el-button>
  166. </td>
  167. </tr>
  168. </table>
  169. </el-form>
  170. </el-main>
  171. </el-container>
  172. </el-container>
  173. </div>
  174. </template>
  175. <script>
  176. import Constant from "@/constant";
  177. import insuranceApplicationApi from "@/api/business/insuranceApplication";
  178. import approvalApi from "@/api/business/approval";
  179. import NProgress from "nprogress"; // progress bar
  180. import "nprogress/nprogress.css"; // progress bar style
  181. export default {
  182. data() {
  183. var self = this;
  184. return {
  185. queryModel: {
  186. id: ""
  187. },
  188. ruleValidate: {
  189. processStatus: [
  190. {
  191. required: true,
  192. message: "请选择处理类型",
  193. trigger: "blur"
  194. }
  195. ]
  196. },
  197. loading: false,
  198. tableData: [],
  199. pageIndex: 1,
  200. pageSize: 10,
  201. totalPages: 0,
  202. totalElements: 0,
  203. field: "",
  204. direction: "",
  205. pageSizeList: [10, 20, 30],
  206. multipleSelection: [],
  207. showModal: false,
  208. modalTitle: "",
  209. businessKey: "",
  210. id: "",
  211. definitionId: "",
  212. insureData: "",
  213. acceptData: "",
  214. formModel: {}
  215. };
  216. },
  217. methods: {
  218. changePage(pageIndex) {
  219. var self = this;
  220. self.loading = true;
  221. self.pageIndex = pageIndex;
  222. var formData = new FormData();
  223. formData.append("pageIndex", self.pageIndex);
  224. formData.append("pageSize", self.pageSize);
  225. formData.append("applicationId", self.id);
  226. if (this.field != null) {
  227. formData.append("field", this.field);
  228. }
  229. if (this.direction != null) {
  230. formData.append("direction", this.direction);
  231. }
  232. approvalApi
  233. .pageList(formData)
  234. .then(function(response) {
  235. self.loading = false;
  236. var jsonData = response.data.data;
  237. self.tableData = jsonData.data;
  238. self.totalPages = jsonData.totalPages;
  239. self.totalElements = jsonData.recordsTotal;
  240. })
  241. .catch(error => {
  242. self.loading = false;
  243. // self.$message.error(error + "");
  244. });
  245. },
  246. pageSizeChange(pageSize) {
  247. this.pageSize = pageSize;
  248. },
  249. sortChange(data) {
  250. this.field = data.column.field;
  251. this.direction = data.order;
  252. this.changePage(this.pageIndex);
  253. },
  254. handleSelectionChange(val) {
  255. this.multipleSelection = val;
  256. },
  257. insureDetail() {
  258. var self = this;
  259. (function() {
  260. if (self.id.length == 0) {
  261. self.$message.error("没有传递ID");
  262. } else {
  263. return insuranceApplicationApi.insureDetail(self.id);
  264. }
  265. })()
  266. .then(response => {
  267. var jsonData = response.data;
  268. self.loading = false;
  269. if (jsonData.result) {
  270. self.insureData = jsonData.data;
  271. this.definitionId = self.insureData.definitionId;
  272. this.acceptDetail();
  273. } else {
  274. self.$message.error(jsonData.message + "");
  275. }
  276. })
  277. .catch(error => {
  278. self.$message.error(error + "");
  279. });
  280. },
  281. acceptDetail(definitionId) {
  282. var self = this;
  283. var formData = new FormData();
  284. formData.append("definitionId", self.definitionId);
  285. (function() {
  286. if (self.definitionId.length == 0) {
  287. self.$message.error("没有险种");
  288. } else {
  289. return approvalApi.acceptDetail(formData);
  290. }
  291. })()
  292. .then(response => {
  293. var jsonData = response.data;
  294. self.loading = false;
  295. if (jsonData.result) {
  296. self.acceptData = jsonData.data;
  297. } else {
  298. self.$message.error(jsonData.message + "");
  299. }
  300. })
  301. .catch(error => {
  302. self.$message.error(error + "");
  303. });
  304. },
  305. saveApproval() {
  306. var self = this;
  307. this.$refs["form"].validate(valid => {
  308. if (valid) {
  309. var self = this;
  310. var formModel = this.formModel;
  311. (function() {
  312. var formData = new FormData();
  313. formData.append("applicationId", self.id);
  314. formData.append("policyId", self.id);
  315. formData.append("processStatus", self.formModel.processStatus);
  316. formData.append("opinion", self.formModel.opinion);
  317. return approvalApi.firstApproval(formData);
  318. })().then(function(response) {
  319. var jsonData = response.data;
  320. if (jsonData.result) {
  321. self.$message({
  322. message: "保存成功!",
  323. type: "success"
  324. });
  325. self.$emit("close", true);
  326. } else {
  327. self.$message({
  328. message: jsonData.message + "",
  329. type: "warning"
  330. });
  331. self.$emit("close", false);
  332. }
  333. });
  334. } else {
  335. this.$emit("error");
  336. }
  337. });
  338. },
  339. downloadFiles() {
  340. alert(1);
  341. }
  342. },
  343. async mounted() {
  344. var self = this;
  345. self.loading = true;
  346. self.id = this.$route.query.id;
  347. this.changePage(1);
  348. this.insureDetail();
  349. }
  350. };
  351. </script>
  352. <style lang="scss" scoped>
  353. .el-breadcrumb {
  354. margin: 10px;
  355. line-height: 20px;
  356. }
  357. .el-divider {
  358. margin: 5px 0;
  359. }
  360. .demo-form-inline {
  361. margin-left: 10px;
  362. text-align: left;
  363. }
  364. .button-group {
  365. margin-left: 10px;
  366. text-align: left;
  367. }
  368. </style>