ChannelAccount.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512
  1. <template>
  2. <div>
  3. <div class="p-2">
  4. <el-form
  5. :inline="true"
  6. :model="pageRequest"
  7. size="small"
  8. label-width="120px"
  9. >
  10. <el-row>
  11. <el-col :span="6" >
  12. <el-form-item label="组员:">
  13. <el-input
  14. v-model="pageRequest.member"
  15. placeholder="请输入组员姓名"
  16. class="widths"
  17. clearable
  18. ></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="pageRequest.payee"
  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-input
  34. v-model="pageRequest.channelName"
  35. placeholder="请输入渠道名称"
  36. class="widths"
  37. clearable
  38. ></el-input>
  39. </el-form-item>
  40. </el-col>
  41. <el-col :span="6" >
  42. <el-button type="primary" size="small" @click="Search"
  43. >查询</el-button
  44. >
  45. <el-button type="primary" size="small" @click="handleAdd"
  46. >数据录入</el-button
  47. >
  48. </el-col>
  49. </el-row>
  50. </el-form>
  51. </div>
  52. <el-main ref="elMain" style="padding: 0px">
  53. <kt-common-table
  54. :SerialShow="false"
  55. :operationWidth="150"
  56. :showOperation="true"
  57. permsDelete="sys:user:delete"
  58. :showBatchDelete="false"
  59. :showBatchSettled="false"
  60. :showBatchPrint="false"
  61. permsButton1="sys:user:edit"
  62. permsButton2="sys:user:edit"
  63. permsButton3="sys:user:edit"
  64. :data="pageResult"
  65. :columns="columns"
  66. @findPage="findPage"
  67. keyName="policyno"
  68. settledName="批量生成"
  69. @handleSettled="handleTableSettled"
  70. @handlePrint="handlePrint"
  71. button1Name="修改"
  72. button1Background="#E6A23C"
  73. @handleButton1="accountUpdate"
  74. button1Icon=""
  75. button2Name="删除"
  76. button2Background="#F56C6C"
  77. @handleButton2="accountDelete"
  78. button2Icon=""
  79. >
  80. </kt-common-table>
  81. </el-main>
  82. <el-dialog :title="dialogTitle" v-dialogDrag :close-on-click-modal="false" :visible.sync="dialogVisible" width="60%">
  83. <el-form
  84. :model="accountsRequest"
  85. :inline="true"
  86. label-width="130px"
  87. size="small"
  88. ref="accountsForm"
  89. :rules="accountsRules"
  90. >
  91. <el-form-item label="工号:" prop="employeeId">
  92. <el-input
  93. v-model="accountsRequest.employeeId"
  94. autocomplete="off"
  95. class="widths"
  96. placeholder="输入工号"
  97. ></el-input>
  98. </el-form-item>
  99. <el-form-item label="省市县选择:" prop="province">
  100. <el-cascader
  101. v-model="regionalCode"
  102. :options="areaOptions"
  103. @change="areahandleChange"
  104. class="widths"
  105. placeholder="选择省市区"
  106. style="width: 220px"
  107. ></el-cascader>
  108. </el-form-item>
  109. <el-form-item label="组:" prop="group">
  110. <el-input
  111. type="number"
  112. v-model="accountsRequest.group"
  113. autocomplete="off"
  114. placeholder="输入几组"
  115. class="widths"
  116. ></el-input>
  117. </el-form-item>
  118. <el-form-item label="组员:" prop="member">
  119. <el-input
  120. type="text"
  121. v-model="accountsRequest.member"
  122. autocomplete="off"
  123. placeholder="输入组员"
  124. class="widths"
  125. ></el-input>
  126. </el-form-item>
  127. <el-form-item label="渠道名称:" prop="channelName">
  128. <el-input
  129. type="text"
  130. v-model="accountsRequest.channelName"
  131. autocomplete="off"
  132. placeholder="输入渠道名称"
  133. class="widths"
  134. ></el-input>
  135. </el-form-item>
  136. <el-form-item label="收款人账户:" prop="account">
  137. <el-input
  138. v-model="accountsRequest.account"
  139. autocomplete="off"
  140. placeholder="输入收款人账户"
  141. class="widths"
  142. ></el-input>
  143. </el-form-item>
  144. <el-form-item label="收款人名称:" prop="payee">
  145. <el-input
  146. type="text"
  147. v-model="accountsRequest.payee"
  148. class="widths"
  149. placeholder="输入收款人名称"
  150. ></el-input>
  151. </el-form-item>
  152. <el-form-item label="收款人开户行:" prop="bank">
  153. <el-input
  154. type="text"
  155. v-model="accountsRequest.bank"
  156. placeholder="输入收款人开户行"
  157. style="width: 350px"
  158. ></el-input>
  159. </el-form-item>
  160. </el-form>
  161. <div slot="footer" class="dialog-footer">
  162. <el-button size="small" @click="dialogVisible = false">取 消</el-button>
  163. <el-button
  164. size="small"
  165. type="primary"
  166. @click="accountsSubmit('accountsForm')"
  167. >提交</el-button
  168. >
  169. </div>
  170. </el-dialog>
  171. </div>
  172. </template>
  173. <script>
  174. import KtCommonTable from "@/views/Core/KtCommonTable.vue"; //表格组件
  175. import CommonUtil from "@/utils/comutil.js";
  176. import { searchkey } from "@/utils/validate.js";
  177. import { regionData, codeToText } from "element-china-area-data";
  178. export default {
  179. components: {
  180. KtCommonTable,
  181. },
  182. data() {
  183. return {
  184. xlcell: 6,
  185. lgcell: 12,
  186. mdcell: 12,
  187. smcell: 24,
  188. xscell: 24,
  189. dialogType: "add",
  190. dialogTitle: "渠道账户录入",
  191. //地区编码数据
  192. areaOptions: regionData,
  193. regionalCode: [],
  194. accountsRequest: {
  195. //录入信息
  196. channelName:"",
  197. employeeId: "", //工号
  198. province: "", //省
  199. city: "", //市
  200. county: "", //区
  201. group: "", //组
  202. member: "", //组员
  203. account: "", //收款人账户
  204. payee: "", // 收款人名称
  205. bank: "", // 收款人开户行
  206. },
  207. accountsRules: {
  208. employeeId: [
  209. { required: true, message: "请输入工号", trigger: "blur" },
  210. ],
  211. channelName: [
  212. { required: true, message: "请输入渠道", trigger: "blur" },
  213. ],
  214. province: [
  215. { required: true, message: "省市区必填", trigger: "change" },
  216. ],
  217. group: [{ required: true, message: "请输入组", trigger: "blur" }],
  218. member: [{ required: true, message: "请输入组员", trigger: "blur" }],
  219. account: [
  220. { required: true, message: "收款人账户必填", trigger: "blur" },
  221. ],
  222. payee: [
  223. {
  224. required: true,
  225. message: "收款人必填",
  226. trigger: "blur",
  227. },
  228. ],
  229. bank: [{ required: true, message: "开户行必填", trigger: "blur" }],
  230. },
  231. pageRequest: {
  232. //查询的默认条件
  233. member: "", //组员
  234. payee: "", // 收款人名称
  235. channelName:"",
  236. pageNum: 1,
  237. pageSize: 20,
  238. },
  239. dateTime: [],
  240. companyList: [],
  241. institutionOptions: [],
  242. dialogVisible: false,
  243. monthvalue: "",
  244. docOrderid: "",
  245. plyNoList: [],
  246. // 右侧列表查询数据Start
  247. pageResult: [],
  248. columns: [
  249. //数据列
  250. { prop: "id", label: " 编号", minWidth: 160 },
  251. { prop: "employeeId", label: "工号", minWidth: 160 },
  252. { prop: "province", label: "省", minWidth: 160 },
  253. { prop: "city", label: "地级市", minWidth: 160 },
  254. { prop: "county", label: "县级市", minWidth: 160 },
  255. { prop: "group", label: "组", minWidth: 160 },
  256. { prop: "member", label: "组员", minWidth: 160 },
  257. { prop: "channelName", label: "渠道名称", minWidth: 100 },
  258. { prop: "account", label: "收款人账户", minWidth: 100 },
  259. { prop: "payee", label: "收款人名称", minWidth: 160 },
  260. { prop: "bank", label: "收款人开户行", minWidth: 160 },
  261. { prop: "createName", label: "创建人", minWidth: 160 },
  262. { prop: "createTime", label: "创建时间", minWidth: 160 },
  263. { prop: "updateName", label: "更新人", minWidth: 160 },
  264. { prop: "updateTime", label: "更新时间", minWidth: 160 },
  265. // {
  266. // prop: "companyName",
  267. // label: "保险公司",
  268. // minWidth: 100,
  269. // formatter: this.inscompanyFormatter,
  270. // },
  271. ],
  272. };
  273. },
  274. created() {
  275. },
  276. mounted() {},
  277. methods: {
  278. //省市区
  279. areahandleChange(event) {
  280. if (event[0] != null && event[1] != null && event[2] != null) {
  281. this.accountsRequest.province = codeToText[event[0]];
  282. this.accountsRequest.city = codeToText[event[1]];
  283. this.accountsRequest.county = codeToText[event[2]];
  284. }
  285. },
  286. Search(){
  287. this.findPage();
  288. },
  289. handleAdd() {
  290. this.dialogType = "add";
  291. Object.keys(this.accountsRequest).forEach((key) => {
  292. this.accountsRequest[key] = "";
  293. });
  294. this.regionalCode = [];
  295. this.dialogVisible = true;
  296. },
  297. //插入事件
  298. accountsSubmit(formName) {
  299. this.$refs[formName].validate((valid) => {
  300. if (valid) {
  301. console.log(this.dialogType);
  302. if (this.dialogType == "add") {
  303. this.$api.task
  304. .channelAccountAdd(this.accountsRequest)
  305. .then((res) => {
  306. if (res.code == "200") {
  307. this.$message({
  308. message: "插入成功",
  309. type: "success",
  310. });
  311. this.findPage();
  312. this.dialogVisible = false;
  313. } else {
  314. this.$message({
  315. message: res.msg,
  316. type: "error",
  317. });
  318. }
  319. });
  320. } else if (this.dialogType == "edit") {
  321. this.$api.task
  322. .channelAccountUpdate(this.accountsRequest)
  323. .then((res) => {
  324. if (res.code == "200") {
  325. this.$message({
  326. message: "修改成功",
  327. type: "success",
  328. });
  329. this.findPage();
  330. this.dialogVisible = false;
  331. } else {
  332. this.$message({
  333. message: res.msg,
  334. type: "error",
  335. });
  336. }
  337. });
  338. }
  339. }
  340. });
  341. },
  342. //修改
  343. accountUpdate({ row, column }) {
  344. this.dialogType = "edit";
  345. this.dialogTitle = "渠道账户修改";
  346. this.accountsRequest = row;
  347. const cityObject = {
  348. province: row.province,
  349. city: row.city,
  350. county: row.county,
  351. };
  352. this.regionalCode = searchkey(Object.values(cityObject));
  353. this.dialogVisible = true;
  354. },
  355. //删除
  356. accountDelete({ row, column }) {
  357. this.$confirm("此操作将永久删除, 是否继续?", "提示", {
  358. confirmButtonText: "确定",
  359. cancelButtonText: "取消",
  360. type: "error",
  361. })
  362. .then(() => {
  363. this.$api.task.channelAccountDelete(row.id).then((res) => {
  364. if (res.code == "200") {
  365. this.$message({
  366. type: "success",
  367. message: "删除成功!",
  368. });
  369. this.findPage();
  370. } else {
  371. this.$message({
  372. type: "error",
  373. message: res.msg,
  374. });
  375. }
  376. });
  377. })
  378. .catch(() => {});
  379. },
  380. handleTableSettled(ids) {
  381. this.plyNoList = ids;
  382. this.dialogVisible11 = true;
  383. },
  384. handlePrint() {
  385. this.$api.task.excelExport(this.pageRequest).then((res) => {
  386. console.log(res);
  387. let blob = new Blob([res], {
  388. type: "application/vnd.ms-excel",
  389. }); // 2.获取请求返回的response对象中的blob 设置文件类型,这里以excel为例
  390. let url = window.URL.createObjectURL(blob); // 3.创建一个临时的url指向blob对象
  391. // 4.创建url之后可以模拟对此文件对象的一系列操作,例如:预览、下载
  392. let a = document.createElement("a");
  393. a.href = url;
  394. a.download = "手续费管理清单.xlsx";
  395. a.click();
  396. // 5.释放这个临时的对象url
  397. window.URL.revokeObjectURL(url);
  398. });
  399. },
  400. //联级选择器触发事件
  401. handleChange(val) {
  402. console.log(val);
  403. if (val.length !== 0) {
  404. this.pageRequest.deptId = val.at(-1);
  405. } else {
  406. this.pageRequest.deptId = "";
  407. }
  408. },
  409. //-- formatter begin--
  410. agreetypeFormatter(row, column) {
  411. //协议类型
  412. let agreetype = row.agreetype;
  413. return CommonUtil.getDataName({
  414. dataList: this.agreementtypeoptions,
  415. value: "value",
  416. label: "label",
  417. data: agreetype,
  418. });
  419. },
  420. inscompanyFormatter(row, column) {
  421. //协议类型
  422. let inscompany = row.inscompany;
  423. return CommonUtil.getDataName({
  424. dataList: this.global.insCompanyList,
  425. value: "code",
  426. label: "name",
  427. data: inscompany,
  428. });
  429. },
  430. timeFormatter(row, column) {
  431. let time = this.transformTime(row.createTime);
  432. return time;
  433. },
  434. totalmoenyFormatter(row, column) {
  435. //协议类型
  436. let inscompany = row.inscompany;
  437. return (row.feeamount + row.disamount).toFixed(2);
  438. },
  439. //点击查询按钮
  440. //--数据字典 begin --
  441. getDictItems: function (typeName) {
  442. let that = this;
  443. that.$api.dict
  444. .findByLableName(typeName)
  445. .then(function (res) {
  446. console.log(res);
  447. that[typeName + "options"] = res.data; // 把获取到的数据赋给this.data
  448. })
  449. .catch(function (error) {
  450. that[typeName + "options"] = [];
  451. });
  452. },
  453. //--数据字典 end --
  454. // 右侧列表的方法Start
  455. findPage(data) {
  456. // 获取分页数据
  457. let that = this;
  458. that.$api.task
  459. .channelAccountQuery(that.pageRequest)
  460. .then((res) => {
  461. that.pageResult = res.data;
  462. })
  463. .then(data != null ? data.callback : "");
  464. },
  465. transformTime(date) {
  466. var d = new Date(date);
  467. var strYear = d.getFullYear();
  468. var strMonth = d.getMonth() + 1;
  469. var strDay = d.getDate();
  470. var hh = d.getHours();
  471. var minutes = d.getMinutes(); // 分
  472. var Seconds = d.getSeconds();
  473. if (hh < 10) {
  474. hh = "0" + hh;
  475. }
  476. if (minutes < 10) {
  477. minutes = "0" + minutes;
  478. }
  479. if (Seconds < 10) {
  480. Seconds = "0" + Seconds;
  481. }
  482. if (strMonth < 10) {
  483. strMonth = "0" + strMonth;
  484. }
  485. if (strDay < 10) {
  486. strDay = "0" + strDay;
  487. }
  488. var datetime =
  489. strYear +
  490. "-" +
  491. strMonth +
  492. "-" +
  493. strDay +
  494. " " +
  495. hh +
  496. ":" +
  497. minutes +
  498. ":" +
  499. Seconds;
  500. return datetime;
  501. },
  502. },
  503. };
  504. </script>
  505. <style lang="scss" scoped>
  506. .widths {
  507. width: 220px;
  508. }
  509. </style>