CompanyPoolChannel.vue 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. <template>
  2. <div>
  3. <el-row class="queryFrom">
  4. <el-form ref="queryFormRef" :inline="true" :model="queryFrom" label-width="130px" size="small">
  5. <el-row>
  6. <el-col :span="6">
  7. <el-form-item label="订单号">
  8. <el-input v-model="queryFrom.orderNo" placeholder="请输入订单号" class="widths" clearable></el-input>
  9. </el-form-item>
  10. </el-col>
  11. <el-col :span="6">
  12. <el-form-item label="车牌号">
  13. <el-input v-model="queryFrom.licenseNo" placeholder="请输入车牌号" class="widths" clearable></el-input>
  14. </el-form-item>
  15. </el-col>
  16. <el-col :span="6">
  17. <el-form-item label="车架号">
  18. <el-input v-model="queryFrom.frameNo" placeholder="请输入车架号" class="widths" clearable></el-input>
  19. </el-form-item>
  20. </el-col>
  21. <el-col :span="6">
  22. <el-form-item label="投保人姓名">
  23. <el-input
  24. v-model="queryFrom.insuredName"
  25. placeholder="请输入投保人姓名"
  26. class="widths"
  27. clearable
  28. ></el-input>
  29. </el-form-item>
  30. </el-col>
  31. <el-col :span="6">
  32. <el-form-item label="机构名称">
  33. <el-cascader
  34. class="widths"
  35. :options="institutionOptions"
  36. v-model="queryFrom.deptId"
  37. :props="{
  38. checkStrictly: true,
  39. value: 'id',
  40. label: 'name',
  41. }"
  42. @change="handleChange"
  43. clearable
  44. ></el-cascader>
  45. </el-form-item>
  46. </el-col>
  47. <el-col :span="6">
  48. <el-form-item label="录单日期">
  49. <el-date-picker
  50. v-model="queryFrom.data"
  51. type="daterange"
  52. @change="monthChange"
  53. start-placeholder="开始日期"
  54. end-placeholder="结束日期"
  55. value-format="yyyy-MM-dd"
  56. clearable
  57. style="width: 200px;"
  58. ></el-date-picker>
  59. </el-form-item>
  60. </el-col>
  61. <el-col :span="6">
  62. <el-form-item label="保险公司">
  63. <el-select v-model="queryFrom.companyId" filterable class="widths" clearable>
  64. <el-option
  65. v-for="val in companyList"
  66. :key="val.id"
  67. :label="val.name"
  68. :value="val.id"
  69. ></el-option>
  70. </el-select>
  71. </el-form-item>
  72. </el-col>
  73. <el-col :span="4">
  74. <el-form-item label>
  75. <el-button size="small" type="primary" @click="queryStaffInfo">查询</el-button>
  76. </el-form-item>
  77. </el-col>
  78. </el-row>
  79. </el-form>
  80. </el-row>
  81. <kt-common-table
  82. :data="pageResult"
  83. :columns="columns"
  84. :showBatchDelete="false"
  85. element-loading-text="记载中..."
  86. v-loading="loading"
  87. @findPage="findPage"
  88. button3Name="转发"
  89. button3Type="text"
  90. @handleButton3="transmit"
  91. button2Name="收回"
  92. button2Type="text"
  93. @handleButton2="takeBack"
  94. button5Name="详情"
  95. button5Type="text"
  96. @handleButton5="detailFun"
  97. ></kt-common-table>
  98. <el-dialog title="转发" :visible.sync="dialogVisible" width="30%">
  99. 转发人:
  100. <el-select v-model="transmitValue" placeholder="请选择">
  101. <el-option
  102. v-for="item in options"
  103. :key="item.userId"
  104. :label="item.name"
  105. :value="item.userId"
  106. ></el-option>
  107. </el-select>
  108. <span slot="footer" class="dialog-footer">
  109. <el-button size="small" @click="dialogVisible = false">取 消</el-button>
  110. <el-button type="primary" size="small" @click="transmitSumit">确 定</el-button>
  111. </span>
  112. </el-dialog>
  113. <detailsDialog ref="detailsDialog" :orderInfo="queryOrders"></detailsDialog>
  114. </div>
  115. </template>
  116. <script>
  117. import KtCommonTable from "@/views/Core/KtCommonTable.vue"; //表格组件
  118. import Cookies from "js-cookie";
  119. import CommonUtil from "@/utils/comutil.js";
  120. import detailsDialog from "@/views/Core/components/detailsDialog.vue";
  121. export default {
  122. components: {
  123. KtCommonTable,detailsDialog
  124. },
  125. data() {
  126. return {
  127. pageData: {
  128. pageNum: 1,
  129. pageSize: 20
  130. },
  131. loading:false,
  132. queryFrom: {},
  133. pageResult: {},
  134. queryOrders:{},
  135. columns: [
  136. // 数据列
  137. { prop: "orderno", label: "订单号", sortable: false },
  138. {
  139. prop: "username",
  140. label: "业务员",
  141. sortable: false
  142. },
  143. { prop: "deptname", label: "部门名称", sortable: false },
  144. { prop: "insCompany", label: "承保公司", sortable: false },
  145. {
  146. prop: "licenseno",
  147. label: "车牌号",
  148. sortable: false
  149. },
  150. { prop: "product", label: "投保险种", sortable: false },
  151. {
  152. prop: "insuredname",
  153. label: "投保人姓名",
  154. sortable: false
  155. },
  156. {
  157. prop: "orderstatus",
  158. label: "状态",
  159. sortable: false,
  160. formatter: this.statusFormatter
  161. }
  162. ],
  163. statusoptions: [],
  164. dialogVisible: false,
  165. companyList: [], //保险公司
  166. institutionOptions: [], //机构名称列表
  167. options: [],//转发人列表
  168. transmitValue: "", //选中的转发人
  169. orderNo:'', //主订单号
  170. subOrderId:'', //子订单号
  171. };
  172. },
  173. created() {
  174. this.$api.insCompany.dicType("insOrderStatus").then(res => {
  175. this.statusoptions = res.data.ddList;
  176. });
  177. this.$api.letter.gainTopList().then(res => {
  178. this.companyList = res.data;
  179. });
  180. this.$api.dept.findDeptTree().then(res => {
  181. this.institutionOptions = res.data;
  182. });
  183. },
  184. methods: {
  185. queryStaffInfo() {
  186. this.findPage();
  187. },
  188. statusFormatter(row, column) {
  189. //协议类型
  190. let status = row.orderstatus;
  191. return CommonUtil.getDataName({
  192. dataList: this.statusoptions,
  193. value: "dictValue",
  194. label: "dictTag",
  195. data: status
  196. });
  197. },
  198. // 右侧列表的方法Start
  199. findPage() {
  200. this.loading = true;
  201. this.$api.task
  202. .queryPageHospitalityByInsuranceCompany({
  203. ...this.pageData,
  204. ...this.queryFrom,
  205. userId: Cookies.get("user")
  206. // userId: '99140105M01D01001'
  207. })
  208. .then(res => {
  209. if (res.code == 200) {
  210. this.loading = false;
  211. this.pageResult = res.data;
  212. } else {
  213. this.loading = false;
  214. this.$message.error(res.msg);
  215. }
  216. });
  217. },
  218. transmit(row) {
  219. this.dialogVisible = true;
  220. this.transmitValue = "";
  221. this.orderNo=row.row.orderno
  222. this.subOrderId=row.row.subOrderId
  223. this.$api.task.getCustomerUsers().then(res=>{
  224. if(res.code==200){
  225. this.options=res.data
  226. }
  227. })
  228. },
  229. // 收回
  230. takeBack(row) {
  231. let orderNo=row.row.orderno
  232. let subOrderId=row.row.subOrderId
  233. this.$api.task.taskPoolsRecover({orderNo,subOrderId}).then(res=>{
  234. if(res.code==200){
  235. this.$message({
  236. message: res.msg,
  237. type: 'success'
  238. });
  239. }
  240. else{
  241. this.$message.error(res.msg);
  242. }
  243. })
  244. },
  245. detailFun(row) {
  246. let params = {
  247. companyId: row.row.companyId
  248. };
  249. this.$api.letter.getByCompanyId(params).then(res => {
  250. if (res.code == "200") {
  251. var data = res.data;
  252. data.kindinfo.map((ele, index) => {
  253. switch (ele.kindCode) {
  254. case "A":
  255. ele.amount = "投保";
  256. break;
  257. case "D4":
  258. case "SY_FJ_YBW2":
  259. ele.unitAmount = this.toChinesNum(ele.unitAmount);
  260. break;
  261. case "MJ1":
  262. case "MJ2":
  263. case "MJ3":
  264. case "MJ4":
  265. ele.deductibleRate = ele.deductibleRate + "%";
  266. break;
  267. default:
  268. ele.amount = this.toChinesNum(ele.amount);
  269. }
  270. return ele;
  271. });
  272. this.queryOrders = data;
  273. //赋值费用信息
  274. // this.feeDetailInfo=data.orderFeeResult;
  275. }
  276. });
  277. this.$refs.detailsDialog.setBackupVisible(true);
  278. },
  279. transmitSumit() {
  280. if(this.transmitValue){
  281. this.$api.task.forwardingSubOrders({auditId:this.transmitValue,orderNo:this.orderNo,subOrderId:this.subOrderId}).then(res=>{
  282. if(res.code==200){
  283. this.options=res.data
  284. this.dialogVisible = false;
  285. this.findPage()
  286. }
  287. else{
  288. this.$message.error(res.msg);
  289. }
  290. })
  291. }
  292. else{
  293. this.$message.error('请选择转发人!');
  294. }
  295. },
  296. //联级选择器触发事件
  297. handleChange(val) {
  298. if (val.length !== 0) {
  299. this.queryFrom.deptId = val.at(-1);
  300. } else {
  301. this.queryFrom.deptId = "";
  302. }
  303. },
  304. monthChange(e) {
  305. if (e === null) {
  306. this.queryFrom.startDate = "";
  307. this.queryFrom.endDate = "";
  308. } else {
  309. this.queryFrom.startDate = e[0];
  310. this.queryFrom.endDate = e[1];
  311. }
  312. }
  313. }
  314. };
  315. </script>
  316. <style scoped>
  317. .widths {
  318. width: 200px;
  319. }
  320. </style>