CompanyPoolChannel2.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469
  1. <template>
  2. <div>
  3. <retrievalForm
  4. :fields="retrievalFields"
  5. @submit="handleFormSubmit"
  6. @toggleCollapse="toggleCollapse"
  7. @areaSelectChange="areaSelectChange"
  8. ></retrievalForm>
  9. <kt-common-table
  10. :data="pageResult"
  11. :columns="columns"
  12. element-loading-text="加载中..."
  13. v-loading="loading"
  14. :showBatchDelete="false"
  15. @findPage="findPage"
  16. button3Name="状态更新"
  17. button3Type="text"
  18. @handleButton3="querystatus"
  19. button2Name="报价轨迹"
  20. button2Type="text"
  21. @handleButton2="trajectory"
  22. button5Name="详情"
  23. button5Type="text"
  24. @handleButton5="detailFun"
  25. button4Name="转发记录"
  26. button4Type="text"
  27. @handleButton4="forwardingRecords"
  28. :operationWidth="300"
  29. :buttonDropdown="dropdownOption"
  30. ></kt-common-table>
  31. <el-dialog title="转发" :visible.sync="dialogVisible" width="30%">
  32. 转发人:
  33. <el-select
  34. v-model="transmitValue"
  35. filterable
  36. clearable
  37. placeholder="请选择"
  38. >
  39. <el-option
  40. v-for="item in options"
  41. :key="item.userId"
  42. :label="item.name"
  43. :value="item.userId"
  44. ></el-option>
  45. </el-select>
  46. <span slot="footer" class="dialog-footer">
  47. <el-button size="small" @click="dialogVisible = false">取 消</el-button>
  48. <el-button type="primary" size="small" @click="transmitSumit"
  49. >确 定</el-button
  50. >
  51. </span>
  52. </el-dialog>
  53. <detailsDialog
  54. ref="detailsDialog"
  55. :isTaskPool="true"
  56. :orderInfo="queryOrders"
  57. :isAuditing="isAuditing"
  58. :feeOrderNewVoList="feeOrderNewVoList"
  59. ></detailsDialog>
  60. <el-dialog :visible.sync="ddgjdialogVisible" width="430px">
  61. <div slot="title" class="dialog-title">
  62. <span>订单轨迹</span>
  63. </div>
  64. <div style="height: 300px; overflow-y: auto">
  65. <el-steps direction="vertical" :active="trajectoryTable.length - 1">
  66. <el-step
  67. v-for="item in trajectoryTable"
  68. :key="item.id"
  69. :title="getStatusText(item.orderStatus)"
  70. >
  71. <template slot="description">
  72. <span>保险公司:{{ item.insCompany }}</span>
  73. <span>提交人:{{ item.operator }}</span>
  74. <div>创建时间:{{ item.createTime }}</div>
  75. </template>
  76. </el-step>
  77. </el-steps>
  78. </div>
  79. </el-dialog>
  80. <el-dialog
  81. :visible.sync="forwardingRecordsdialogVisible"
  82. title="转发记录"
  83. width="70%"
  84. >
  85. <el-table
  86. :data="gridData"
  87. height="400"
  88. border
  89. v-loading="loading"
  90. highlight-current-row
  91. stripe
  92. :header-cell-style="{
  93. background: '#F2F7FC',
  94. fontWeight: '700',
  95. color: '#606266',
  96. }"
  97. >
  98. <el-table-column
  99. property="subOrderId"
  100. align="center"
  101. label="订单号"
  102. width="200"
  103. ></el-table-column>
  104. <el-table-column
  105. property="oldOperatorId"
  106. align="center"
  107. label="转发人"
  108. width="200"
  109. ></el-table-column>
  110. <el-table-column
  111. property="newOperatorId"
  112. align="center"
  113. label="接收人"
  114. ></el-table-column>
  115. <el-table-column
  116. property="remark"
  117. align="center"
  118. label="转发信息"
  119. ></el-table-column>
  120. <el-table-column
  121. property="createTime"
  122. align="center"
  123. label="转发时间"
  124. ></el-table-column>
  125. </el-table>
  126. </el-dialog>
  127. <qrCodedialog ref="qrCodedialog"></qrCodedialog>
  128. </div>
  129. </template>
  130. <script>
  131. import KtCommonTable from "@/views/Core/KtCommonTable.vue"; //表格组件
  132. import Cookies from "js-cookie";
  133. import CommonUtil from "@/utils/comutil.js";
  134. import detailsDialog from "@/views/Core/components/detailsDialog.vue";
  135. import retrievalForm from "@/components/Form/retrievalForm.vue";
  136. import qrCodedialog from "../component/qrCode.vue";
  137. import { mixin } from "../mixin";
  138. export default {
  139. components: {
  140. KtCommonTable,
  141. detailsDialog,
  142. retrievalForm,
  143. qrCodedialog,
  144. },
  145. data() {
  146. return {
  147. pageRequest: {
  148. pageNum: 1,
  149. pageSize: 20,
  150. orderStatus: 2,
  151. userId: "",
  152. },
  153. ddgjdialogVisible: false,
  154. trajectoryTable: [],
  155. optionsStatus: [],
  156. subOrderId: "",
  157. dropdownOption: [
  158. {
  159. label: "二维码",
  160. click: (row) => this.carcode(row),
  161. },
  162. {
  163. label: "撤销二维码",
  164. click: (row) => this.revokeCode(row),
  165. },
  166. {
  167. label: "转发",
  168. click: (row) => this.transmit(row),
  169. },
  170. {
  171. label: "撤单",
  172. hide: (row) => {
  173. return row.insCompany == "紫金财险" ? true : false;
  174. },
  175. click: (row) => this.cancelorder(row),
  176. },
  177. ],
  178. };
  179. },
  180. mixins: [mixin],
  181. created() {
  182. this.pageRequest.userId = Cookies.get("user");
  183. this.$api.insCompany.dicType("insOrderStatus").then((res) => {
  184. this.optionsStatus = res.data.ddList;
  185. });
  186. this.retrievalFields.push(
  187. {
  188. name: 'managementSource',
  189. label: '业务来源',
  190. type: 'select',
  191. Retained: true,
  192. options: [],
  193. optionsIabel: "dictTag",
  194. optionsValue: "dictValue",
  195. },
  196. )
  197. },
  198. methods: {
  199. querystatus(item) {
  200. let inscompany = {
  201. 国任财险: "updateOrderInfoGuoren",
  202. 华泰财险: "updateOrderInfoHuatai",
  203. 大家财险: "updateOrderInfoDajia",
  204. 紫金财险: "getOrderDetail",
  205. 中煤财险: "paymentEnquiry",
  206. 渤海财险: "getOrderDetailboHai",
  207. };
  208. Object.keys(inscompany).forEach((val) => {
  209. if (val == item.row.insCompany) {
  210. this.$api.letter[inscompany[val]]({
  211. companyId: item.row.subOrderId,
  212. }).then((res) => {
  213. if (res.code == 200) {
  214. this.$message({
  215. message: res.msg ? res.msg : "已刷新状态",
  216. type: "success",
  217. });
  218. this.findPage();
  219. } else {
  220. this.$message({ message: res.msg, type: "error" });
  221. }
  222. });
  223. }
  224. });
  225. if (item.row.insCompany == "永诚财险") {
  226. this.$api.letter.orderStatusyongcheng(item.row.subOrderId).then((res) => {
  227. if (res.code == 200) {
  228. this.$message({
  229. message: res.msg ? res.msg : "已刷新状态",
  230. type: "success",
  231. });
  232. this.findPage();
  233. } else {
  234. this.$message({ message: res.msg, type: "error" });
  235. }
  236. });
  237. }
  238. if (item.row.insCompany == "华泰财险") {
  239. let HtApiType =
  240. item.row.apiType == 2 ? "pychonverifyPayment" : "updateOrderInfoHuatai";
  241. this.$api.letter[HtApiType](
  242. item.row.apiType == 2 ? { subOrderNo: item.row.subOrderId } : item.row.id
  243. ).then((res) => {
  244. if (res.code == 200) {
  245. this.$message({
  246. message: res.msg ? res.msg : "已刷新状态",
  247. type: "success",
  248. });
  249. this.findPage();
  250. } else {
  251. this.$message({ message: res.msg, type: "error" });
  252. }
  253. });
  254. }
  255. if (
  256. item.row.insCompany == "恒邦财险" ||
  257. item.row.insCompany == "众安财险" ||
  258. item.row.insCompany == "中国人寿" ||
  259. item.row.insCompany == "安盛天平" ||
  260. item.row.insCompany == "太平财险" ||
  261. item.row.insCompany == "华农财险"
  262. ) {
  263. this.$api.letter
  264. .pychonverifyPayment({ subOrderNo: item.row.subOrderId })
  265. .then((res) => {
  266. if (res.code == "200") {
  267. this.$message({
  268. message: "订单支付成功,正在更改状态",
  269. type: "success",
  270. });
  271. this.findPage();
  272. } else {
  273. this.$message({ message: res.msg, type: "error" });
  274. }
  275. });
  276. }
  277. },
  278. carcode(row) {
  279. this.$refs.qrCodedialog.carcode(row);
  280. },
  281. getStatusText(code) {
  282. return this.optionsStatus.find((val) => val.dictValue == code).dictTag;
  283. },
  284. handleFormSubmit(data) {
  285. let obj = Object.assign(this.pageRequest, data);
  286. this.pageRequest = obj;
  287. this.findPage();
  288. },
  289. toggleCollapse(data) {
  290. this.retrievalFields.map((val) => {
  291. if (val.Retained != null) val.Retained = data;
  292. return val;
  293. });
  294. },
  295. queryStaffInfo() {
  296. this.findPage();
  297. },
  298. // 右侧列表的方法Start
  299. findPage(data) {
  300. if (data && data.pageRequest) {
  301. this.pageRequest.pageNum = data.pageRequest.pageNum;
  302. this.pageRequest.pageSize = data.pageRequest.pageSize;
  303. }
  304. this.loading = true;
  305. this.$api.task
  306. .queryPageHospitalityByInsuranceCompany(this.pageRequest)
  307. .then((res) => {
  308. if (res.code == 200) {
  309. this.loading = false;
  310. this.pageResult = res.data;
  311. } else {
  312. this.loading = false;
  313. this.$message.error(res.msg);
  314. }
  315. });
  316. },
  317. trajectory(row) {
  318. this.$api.letter.queryBySuborder(row.row.subOrderId).then((res) => {
  319. if (res.code == 200 && res.data.length > 0) {
  320. this.ddgjdialogVisible = true;
  321. this.trajectoryTable = res.data;
  322. } else {
  323. this.$message({
  324. message: res.msg || "暂无数据!",
  325. type: "warning",
  326. });
  327. }
  328. });
  329. },
  330. transmit(row) {
  331. // console.log(row)
  332. this.dialogVisible = true;
  333. this.transmitValue = "";
  334. this.orderNo = row.orderno;
  335. this.subOrderId = row.subOrderId;
  336. this.$api.task.getCustomerUsers().then((res) => {
  337. if (res.code == 200) {
  338. this.options = res.data;
  339. }
  340. });
  341. },
  342. // 收回
  343. takeBack(row) {
  344. let orderNo = row.row.orderno;
  345. let subOrderId = row.row.subOrderId;
  346. this.$api.task.taskPoolsRecover({ orderNo, subOrderId }).then((res) => {
  347. if (res.code == 200) {
  348. this.$message({
  349. message: res.msg,
  350. type: "success",
  351. });
  352. } else {
  353. this.$message.error(res.msg);
  354. }
  355. });
  356. },
  357. transmitSumit() {
  358. if (this.transmitValue) {
  359. this.$api.task
  360. .forwardingSubOrders({
  361. auditId: this.transmitValue,
  362. orderNo: this.orderNo,
  363. subOrderId: this.subOrderId,
  364. })
  365. .then((res) => {
  366. if (res.code == 200) {
  367. this.options = res.data;
  368. this.dialogVisible = false;
  369. this.findPage();
  370. } else {
  371. this.$message.error(res.msg);
  372. }
  373. });
  374. } else {
  375. this.$message.error("请选择转发人!");
  376. }
  377. },
  378. //联级选择器触发事件
  379. handleChange(val) {
  380. if (val.length !== 0) {
  381. this.queryFrom.deptId = val.at(-1);
  382. } else {
  383. this.queryFrom.deptId = "";
  384. }
  385. },
  386. monthChange(e) {
  387. if (e === null) {
  388. this.queryFrom.startDate = "";
  389. this.queryFrom.endDate = "";
  390. } else {
  391. this.queryFrom.startDate = e[0];
  392. this.queryFrom.endDate = e[1];
  393. }
  394. },
  395. // detailFun(row) {
  396. // let params = {
  397. // companyId: row.row.subOrderId
  398. // };
  399. // this.$api.letter.getByCompanyId(params).then(res => {
  400. // if (res.code == "200") {
  401. // var data = res.data;
  402. // this.orderInfo = res.data;
  403. // this.cpolicy();
  404. // this.ImageList();
  405. // data.kindinfo.map((ele, index) => {
  406. // switch (ele.kindCode) {
  407. // case "A":
  408. // ele.amount = "投保";
  409. // break;
  410. // case "D4":
  411. // case "SY_FJ_YBW2":
  412. // ele.unitAmount = this.toChinesNum(ele.unitAmount);
  413. // break;
  414. // case "MJ1":
  415. // case "MJ2":
  416. // case "MJ3":
  417. // case "MJ4":
  418. // ele.deductibleRate = ele.deductibleRate + "%";
  419. // break;
  420. // default:
  421. // ele.amount = this.toChinesNum(ele.amount);
  422. // }
  423. // return ele;
  424. // });
  425. // this.queryOrders = data;
  426. // //赋值费用信息
  427. // // this.feeDetailInfo=data.orderFeeResult;
  428. // }
  429. // });
  430. // this.$refs.detailsDialog.setBackupVisible(true);
  431. // },
  432. },
  433. };
  434. </script>
  435. <style scoped lang="scss">
  436. /deep/ {
  437. .el-step__description.is-finish,
  438. .el-step__head.is-finish {
  439. color: #333;
  440. border: none;
  441. }
  442. .el-step__title,
  443. .el-step__icon-inner {
  444. color: var(--themeColor);
  445. }
  446. .el-step__line-inner {
  447. height: 0;
  448. display: none;
  449. }
  450. .is-flex {
  451. .el-step__icon {
  452. background: var(--themeColor);
  453. }
  454. .el-step__icon-inner {
  455. color: #fff;
  456. }
  457. }
  458. .el-step__icon.is-text {
  459. border: none;
  460. box-shadow: 0px 2px 2px 0px rgba(0, 0, 0, 0.1);
  461. }
  462. }
  463. </style>