AddOrUpdate.vue 30 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187
  1. <template>
  2. <div class="app-container">
  3. <div v-show="mainTable == false">
  4. <el-form label-width="100px" ref="form" :model="form">
  5. <el-row>
  6. <el-col v-for="item in searchdata" :span="item.span" :key="item.key">
  7. <el-form-item :label="item.name" v-if="item.key <= bug">
  8. <el-select v-if="item.form == 1" v-model="form[item.label]" :style="{ width: item.width + 'px' }"></el-select>
  9. <el-input v-if="item.form == 2" v-model="form[item.label]" :style="{ width: item.width + 'px' }"></el-input>
  10. <el-input v-if="item.form == 4" type="textarea" v-model="form[item.label]" :style="{ width: item.width + 'px' }"></el-input>
  11. <el-date-picker v-if="item.form == 3" v-model="form[item.label]" :style="{ width: item.width + 'px' }" type="date" placeholder="选择日期" format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd">
  12. </el-date-picker>
  13. </el-form-item>
  14. </el-col>
  15. </el-row>
  16. </el-form>
  17. <el-row :gutter="10" class="mb8">
  18. <el-col :span="1.5">
  19. <el-button
  20. type="primary"
  21. icon="el-icon-plus"
  22. size="mini"
  23. @click="handleAdd"
  24. v-hasPermi="['finance:contrast:add']"
  25. >新增</el-button
  26. >
  27. </el-col>
  28. <el-col :span="1.5">
  29. <el-button
  30. type="success"
  31. icon="el-icon-edit"
  32. size="mini"
  33. :disabled="single"
  34. @click="handleUpdate"
  35. v-hasPermi="['warehouse:contrast:edit']"
  36. >修改</el-button
  37. >
  38. </el-col>
  39. <el-col :span="1.5">
  40. <el-button
  41. type="warning"
  42. icon="el-icon-download"
  43. size="mini"
  44. @click="handleExport"
  45. v-hasPermi="['finance:contrast:export']"
  46. >导出</el-button
  47. >
  48. </el-col>
  49. <div class="tabSetting">
  50. <div style="margin-right: 20px">
  51. <el-button
  52. type="cyan"
  53. icon="el-icon-search"
  54. size="mini"
  55. @click="handleQuery"
  56. >搜索</el-button
  57. >
  58. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  59. >重置</el-button
  60. >
  61. <el-button
  62. @click="show"
  63. :icon="arrow"
  64. size="mini"
  65. >展开</el-button
  66. >
  67. </div>
  68. <right-toolbar
  69. :showSearch.sync="showSearch"
  70. @queryTable="getList"
  71. ></right-toolbar>
  72. <div style="margin: 0 12px">
  73. <el-button
  74. icon="el-icon-setting"
  75. size="mini"
  76. circle
  77. @click="showSetting = !showSetting"
  78. ></el-button>
  79. </div>
  80. </div>
  81. </el-row>
  82. <el-dialog
  83. title="自定义列显示"
  84. :visible.sync="showSetting"
  85. width="700px"
  86. v-dialogDrag
  87. >
  88. <template slot="title">
  89. <div class="avue-crud__dialog__header">
  90. <span class="el-dialog__title">
  91. <span
  92. style="
  93. display: inline-block;
  94. width: 3px;
  95. height: 20px;
  96. margin-right: 5px;
  97. float: left;
  98. margin-top: 2px;
  99. "
  100. ></span>
  101. </span>
  102. </div>
  103. </template>
  104. <div>配置排序列数据(拖动调整顺序)</div>
  105. <div style="margin-left: 17px">
  106. <el-checkbox
  107. v-model="allCheck"
  108. label="全选"
  109. @change="allChecked"
  110. ></el-checkbox>
  111. </div>
  112. <div style="padding: 4px; display: flex; justify-content: center">
  113. <draggable
  114. v-model="setRowList"
  115. group="site"
  116. animation="300"
  117. @start="onStart"
  118. @end="onEnd"
  119. handle=".indraggable"
  120. >
  121. <transition-group>
  122. <div
  123. v-for="item in setRowList"
  124. :key="item.surface"
  125. class="listStyle"
  126. >
  127. <div style="width: 500px" class="indraggable">
  128. <div class="progress" :style="{ width: item.width + 'px' }">
  129. <el-checkbox
  130. :label="item.name"
  131. v-model="item.checked"
  132. :true-label="0"
  133. :false-label="1"
  134. >{{ item.name }}
  135. </el-checkbox>
  136. </div>
  137. </div>
  138. <el-input-number
  139. v-model.number="item.width"
  140. controls-position="right"
  141. :min="1"
  142. :max="500"
  143. size="mini"
  144. ></el-input-number>
  145. </div>
  146. </transition-group>
  147. </draggable>
  148. </div>
  149. <span slot="footer" class="dialog-footer">
  150. <el-button @click="showSetting = false">取 消</el-button>
  151. <el-button @click="delRow" type="danger">重 置</el-button>
  152. <el-button type="primary" @click="save()">确 定</el-button>
  153. </span>
  154. </el-dialog>
  155. <el-table
  156. v-loading="loading"
  157. :data="corpsList"
  158. ref="corpsList"
  159. @selection-change="handleSelectionChange"
  160. show-summary
  161. >
  162. <el-table-column type="selection" width="55" align="center" />
  163. <el-table-column label="行号" align="center" type="index" />
  164. <el-table-column
  165. v-for="(item, index) in getRowList"
  166. :key="index"
  167. :label="item.name"
  168. :width="item.width"
  169. :prop="item.label"
  170. align="center"
  171. :fixed="item.fixed"
  172. :show-overflow-tooltip="true"
  173. sortable
  174. />
  175. <el-table-column
  176. label="操作"
  177. align="center"
  178. class-name="small-padding fixed-width"
  179. min-width="180"
  180. fixed="right"
  181. >
  182. <template slot-scope="scope">
  183. <el-button
  184. size="mini"
  185. type="text"
  186. icon="el-icon-view"
  187. @click="check(scope.row, 0)"
  188. >查看</el-button
  189. >
  190. <el-button
  191. size="mini"
  192. type="text"
  193. icon="el-icon-edit"
  194. @click="handleUpdate(scope.row)"
  195. >
  196. 修改</el-button
  197. >
  198. <el-button
  199. size="mini"
  200. type="text"
  201. icon="el-icon-delete"
  202. @click="handleDelete(scope.row)"
  203. >删除</el-button
  204. >
  205. </template>
  206. </el-table-column>
  207. </el-table>
  208. </div>
  209. <div v-if="mainTable == true">
  210. <el-form label-width="100px" ref="detailForm" :model="detailForm" >
  211. <el-row>
  212. <el-col v-for="(item,index) in detailOption" :key="index" :span="item.span">
  213. <el-form-item :label="item.name" >
  214. <el-select v-if="item.form == 1" v-model="detailForm[item.label]" :style="{ width: item.width + 'px' }"></el-select>
  215. <el-input v-if="item.form == 2" v-model="detailForm[item.label]" :style="{ width: item.width + 'px' }"></el-input>
  216. <el-input v-if="item.form == 4" type="textarea" :autosize="{ minRows: 2, maxRows: 4}" placeholder="请输入内容" v-model="detailForm[item.label]" ></el-input>
  217. <el-date-picker v-if="item.form == 3" v-model="detailForm[item.label]" :style="{ width: item.width + 'px' }" type="date" placeholder="选择日期" format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd"></el-date-picker>
  218. <el-radio-group v-if="item.form == 5" v-model="detailForm[item.label]">
  219. <el-radio v-for="dict in statusOptions" :key="dict.dictValue" v-model="status" :label="dict.dictValue">{{ dict.dictLabel }}</el-radio>
  220. </el-radio-group>
  221. </el-form-item>
  222. </el-col>
  223. </el-row>
  224. </el-form>
  225. <div>
  226. <el-row :gutter="10" class="mb8">
  227. <el-col :span="1.5">
  228. <el-button
  229. type="primary"
  230. icon="el-icon-plus"
  231. size="mini"
  232. @click="addRow(contactList)"
  233. >添加</el-button
  234. >
  235. </el-col>
  236. <div style="margin: 0 12px;float: right">
  237. <el-button
  238. icon="el-icon-setting"
  239. size="mini"
  240. circle
  241. @click="showSetting2 = !showSetting2"
  242. ></el-button>
  243. </div>
  244. </el-row>
  245. </div>
  246. <el-dialog
  247. title="自定义列显示"
  248. :visible.sync="showSetting2"
  249. width="700px"
  250. v-dialogDrag
  251. append-to-body
  252. >
  253. <template slot="title">
  254. <div class="avue-crud__dialog__header">
  255. <span class="el-dialog__title">
  256. <span
  257. style="
  258. display: inline-block;
  259. width: 3px;
  260. height: 20px;
  261. margin-right: 5px;
  262. float: left;
  263. margin-top: 2px;
  264. "
  265. ></span>
  266. </span>
  267. </div>
  268. </template>
  269. <div>配置排序列数据(拖动调整顺序)</div>
  270. <div style="margin-left: 17px">
  271. <el-checkbox
  272. v-model="allCheck2"
  273. label="全选"
  274. @change="allChecked2"
  275. ></el-checkbox>
  276. </div>
  277. <div style="padding: 4px; display: flex; justify-content: center">
  278. <draggable
  279. v-model="setRowList2"
  280. group="site"
  281. animation="300"
  282. @start="onStart"
  283. @end="onEnd"
  284. handle=".indraggable"
  285. >
  286. <transition-group>
  287. <div
  288. v-for="item in setRowList2"
  289. :key="item.surface"
  290. class="listStyle"
  291. >
  292. <div style="width: 500px" class="indraggable">
  293. <div class="progress" :style="{ width: item.width + 'px' }">
  294. <el-checkbox
  295. :label="item.name"
  296. v-model="item.checked"
  297. :true-label="0"
  298. :false-label="1"
  299. >{{ item.name }}
  300. </el-checkbox>
  301. </div>
  302. </div>
  303. <el-input-number
  304. v-model.number="item.width"
  305. controls-position="right"
  306. :min="1"
  307. :max="500"
  308. size="mini"
  309. ></el-input-number>
  310. </div>
  311. </transition-group>
  312. </draggable>
  313. </div>
  314. <span slot="footer" class="dialog-footer">
  315. <el-button @click="showSetting2 = false">取 消</el-button>
  316. <el-button @click="delRow2" type="danger">重 置</el-button>
  317. <el-button type="primary" @click="save2()">确 定</el-button>
  318. </span>
  319. </el-dialog>
  320. <el-table v-loading="loading" :data="contactList">
  321. <el-table-column type="selection" width="55" align="center"/>
  322. <el-table-column type="index" width="55" align="center"/>
  323. <el-table-column
  324. v-for="(item, index) in getRowList2"
  325. :key="index"
  326. :label="item.name"
  327. :width="item.width"
  328. :prop="item.label"
  329. align="center"
  330. >
  331. <template slot-scope="scope">
  332. <el-input v-if="item.type == 2" v-model="scope.row[item.label]"></el-input>
  333. <el-select v-if="item.type == 1" v-model="scope.row[item.label]"></el-select>
  334. <el-date-picker v-if="item.type == 3" v-model="scope.row[item.label]" style="width: 100%" type="date" placeholder="选择日期" format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd"></el-date-picker>
  335. </template>
  336. </el-table-column>
  337. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">
  338. <template slot-scope="scope">
  339. <el-button
  340. size="mini"
  341. type="text"
  342. icon="el-icon-delete"
  343. @click.native.prevent="deleteRow(scope.$index, contactList)"
  344. >删除</el-button
  345. >
  346. </template>
  347. </el-table-column>
  348. <div slot="footer" class="dialog-footer">
  349. <el-button type="primary" @click="submitForm">确 定</el-button>
  350. <el-button @click="cancel">取 消</el-button>
  351. </div>
  352. </el-table>
  353. </div>
  354. </div>
  355. </template>
  356. <script>
  357. import { addSet, select, resetModule } from "@/api/system/set";
  358. import draggable from "vuedraggable";
  359. import Vue from "vue";
  360. import Cookies from "js-cookie";
  361. Vue.directive("dialogDrag", {
  362. bind(el, binding, vnode, oldVnode) {
  363. const dialogHeaderEl = el.querySelector(".el-dialog__header");
  364. const dragDom = el.querySelector(".el-dialog");
  365. const enlarge = el.querySelector(".enlarge");
  366. dialogHeaderEl.style.cursor = "move";
  367. // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
  368. const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null);
  369. if (enlarge) {
  370. enlarge.onclick = (e) => {
  371. dragDom.style.top = "0px";
  372. dragDom.style.left = "0px";
  373. };
  374. }
  375. dialogHeaderEl.onmousedown = (e) => {
  376. // 鼠标按下,计算当前元素距离可视区的距离
  377. const disX = e.clientX - dialogHeaderEl.offsetLeft;
  378. const disY = e.clientY - dialogHeaderEl.offsetTop;
  379. // 获取到的值带px 正则匹配替换
  380. let styL, styT;
  381. // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
  382. if (sty.left.includes("%")) {
  383. styL =
  384. +document.body.clientWidth * (+sty.left.replace(/\%/g, "") / 100);
  385. styT =
  386. +document.body.clientHeight * (+sty.top.replace(/\%/g, "") / 100);
  387. } else {
  388. styL = +sty.left.replace(/\px/g, "");
  389. styT = +sty.top.replace(/\px/g, "");
  390. }
  391. document.onmousemove = function (e) {
  392. // 通过事件委托,计算移动的距离
  393. const l = e.clientX - disX;
  394. const t = e.clientY - disY;
  395. // 移动当前元素
  396. if (t + styT >= 0) {
  397. dragDom.style.top = `${t + styT}px`;
  398. }
  399. dragDom.style.left = `${l + styL}px`;
  400. // 将此时的位置传出去
  401. // binding.value({x:e.pageX,y:e.pageY})
  402. };
  403. document.onmouseup = function (e) {
  404. document.onmousemove = null;
  405. document.onmouseup = null;
  406. };
  407. };
  408. },
  409. });
  410. export default {
  411. name: "corps",
  412. components:{
  413. draggable
  414. },
  415. props:searchdata,
  416. data() {
  417. return {
  418. setRowList2: [],
  419. getRowList2: [],
  420. status:'0',
  421. allCheck2: false,
  422. showSetting2: false,
  423. tableDate2: [
  424. {
  425. surface: "1",
  426. label: "fMblno",
  427. name: "编号",
  428. checked: 0,
  429. width: 100,
  430. type:2,
  431. },
  432. {
  433. surface: "2",
  434. label: "fBscorpno",
  435. name: "客户名称",
  436. checked: 0,
  437. width: 100,
  438. type:1
  439. },
  440. {
  441. surface: "3",
  442. label: "fProductName",
  443. name: "英文全称",
  444. checked: 0,
  445. width: 100,
  446. type:1
  447. },
  448. {
  449. surface: "4",
  450. label: "fBsdate",
  451. name: "电话",
  452. checked: 0,
  453. width: 100,
  454. type:1,
  455. },
  456. {
  457. surface: "5",
  458. label: "fFeeName",
  459. name: "备注",
  460. checked: 0,
  461. width: 100,
  462. type:1,
  463. },
  464. {
  465. surface: "6",
  466. label: "fSrcdc",
  467. name: "登陆人",
  468. checked: 0,
  469. width: 100,
  470. type:2
  471. },
  472. {
  473. surface: "7",
  474. label: "fBilltype",
  475. name: "状态",
  476. checked: 0,
  477. width: 100,
  478. type:2,
  479. },
  480. {
  481. surface: "8",
  482. label: "fBusinessType",
  483. name: "录入人",
  484. checked: 0,
  485. width: 100,
  486. type:1
  487. },
  488. {
  489. surface: "9",
  490. label: "fAmtdr",
  491. name: "录入时间",
  492. checked: 0,
  493. width: 100,
  494. type:3
  495. },
  496. {
  497. surface: "10",
  498. label: "fAmt",
  499. name: "最新修改人",
  500. checked: 0,
  501. width: 100,
  502. type:2
  503. },
  504. {
  505. surface: "11",
  506. label: "fRemarks",
  507. name: "最新修改时间",
  508. checked: 0,
  509. width: 100,
  510. type:3
  511. },
  512. ],
  513. contactList:[],
  514. //状态
  515. statusOptions:[
  516. {
  517. dictLabel:'正常',
  518. dictValue:'0'
  519. },
  520. {
  521. dictLabel:'停用',
  522. dictValue:'1'
  523. }
  524. ],
  525. // 遮罩层
  526. loading: false,
  527. //自定义列
  528. setRowList: [],
  529. getRowList: [],
  530. allCheck: false,
  531. showSetting: false,
  532. //展开图标
  533. arrow:'el-icon-arrow-up',
  534. // 显示搜索条件
  535. showSearch: true,
  536. // 非单个禁用
  537. single: true,
  538. mainTable:false,
  539. form:{},
  540. detailForm:{},
  541. corpsList:[],
  542. //控制展开第一行
  543. bug:4,
  544. formOption:[
  545. {
  546. key:"1",
  547. span:6,
  548. label: 'fCtrlcorpid',
  549. name:"客户类别",
  550. form:1,
  551. width:200,
  552. },
  553. {
  554. key:"2",
  555. span:6,
  556. label:"fBillno",
  557. name:"编号",
  558. form:2,
  559. width:200,
  560. },
  561. {
  562. key:"3",
  563. span:6,
  564. label: "fCorpidName",
  565. name:"客户名称",
  566. form:1,
  567. width:200,
  568. },
  569. {
  570. key:"4",
  571. span:6,
  572. label: "createBy",
  573. name:"录入人",
  574. form:2,
  575. width:200,
  576. },
  577. {
  578. key:"5",
  579. span:6,
  580. label:"cLoadDate",
  581. name:"录入区间",
  582. form:3,
  583. width:200,
  584. },
  585. {
  586. key:"6",
  587. span:6,
  588. label:"fRemark",
  589. name:"备注",
  590. form:2,
  591. width:200,
  592. },
  593. ],
  594. tableDate: [
  595. {
  596. surface: "1",
  597. label: "fBillno",
  598. name: "客户类别",
  599. checked: 0,
  600. width: 100,
  601. },
  602. {
  603. surface: "2",
  604. label: "fCtrlcorpid",
  605. name: "客户编号",
  606. checked: 0,
  607. width: 100,
  608. },
  609. {
  610. surface: "3",
  611. label: "fCorpidName",
  612. name: "客户名称",
  613. checked: 0,
  614. width: 100,
  615. },
  616. {
  617. surface: "4",
  618. label: "fAccbilldate",
  619. name: "英文全称",
  620. checked: 0,
  621. width: 100,
  622. },
  623. {
  624. surface: "5",
  625. label: "tMblno",
  626. name: "电话",
  627. checked: 0,
  628. width: 100,
  629. },
  630. {
  631. surface: "6",
  632. label: "fAmtdr",
  633. name: "税号",
  634. checked: 0,
  635. width: 100,
  636. },
  637. {
  638. surface: "7",
  639. label: "fAmtcr",
  640. name: "开票地址",
  641. checked: 0,
  642. width: 100,
  643. },
  644. {
  645. surface: "8",
  646. label: "fRemarks",
  647. name: "开票电话",
  648. checked: 0,
  649. width: 100,
  650. },
  651. {
  652. surface: "9",
  653. label: "fBillstatus",
  654. name: "本位银行",
  655. checked: 0,
  656. width: 100,
  657. },
  658. {
  659. surface: "10",
  660. label: "fBillstatus",
  661. name: "银行账号",
  662. checked: 0,
  663. width: 100,
  664. },
  665. {
  666. surface: "11",
  667. label: "fBillstatus",
  668. name: "状态",
  669. checked: 0,
  670. width: 100,
  671. },
  672. {
  673. surface: "12",
  674. label: "fBillstatus",
  675. name: "备注",
  676. checked: 0,
  677. width: 100,
  678. },
  679. {
  680. surface: "13",
  681. label: "fBillstatus",
  682. name: "录入人",
  683. checked: 0,
  684. width: 100,
  685. },
  686. {
  687. surface: "14",
  688. label: "fBillstatus",
  689. name: "录入时间",
  690. checked: 0,
  691. width: 100,
  692. },
  693. {
  694. surface: "15",
  695. label: "fBillstatus",
  696. name: "最新修改人",
  697. checked: 0,
  698. width: 100,
  699. },
  700. {
  701. surface: "16",
  702. label: "fBillstatus",
  703. name: "最新修改时间",
  704. checked: 0,
  705. width: 100,
  706. },
  707. ],
  708. detailOption:[
  709. {
  710. span:6,
  711. label: 'fCtrlcorpid',
  712. name:"客户类别",
  713. form:1,
  714. width:200,
  715. },
  716. {
  717. span:6,
  718. label: 'fCtrlcorpid',
  719. name:"编号",
  720. form:2,
  721. width:200,
  722. },
  723. {
  724. span:6,
  725. label: 'fCtrlcorpid',
  726. name:"名称",
  727. form:2,
  728. width:200,
  729. },
  730. {
  731. span:6,
  732. label: 'fCtrlcorpid',
  733. name:"英文名",
  734. form:2,
  735. width:200,
  736. },
  737. {
  738. span:6,
  739. label: 'fCtrlcorpid',
  740. name:"电话",
  741. form:2,
  742. width:200,
  743. },
  744. {
  745. span:6,
  746. label: 'fCtrlcorpid',
  747. name:"邮箱",
  748. form:2,
  749. width:200,
  750. },
  751. {
  752. span:6,
  753. label: 'fCtrlcorpid',
  754. name:"微信",
  755. form:2,
  756. width:200,
  757. },
  758. {
  759. span:6,
  760. label: 'fCtrlcorpid',
  761. name:"传真",
  762. form:2,
  763. width:200,
  764. },
  765. {
  766. span:6,
  767. label: 'fCtrlcorpid',
  768. name:"联系人",
  769. form:2,
  770. width:200,
  771. },
  772. {
  773. span:6,
  774. label: 'fCtrlcorpid',
  775. name:"地址",
  776. form:2,
  777. width:200,
  778. },
  779. {
  780. span:6,
  781. label: 'fCtrlcorpid',
  782. name:"英文地址",
  783. form:2,
  784. width:200,
  785. },
  786. {
  787. span:6,
  788. label: 'fCtrlcorpid',
  789. name:"规模",
  790. form:2,
  791. width:200,
  792. },
  793. {
  794. span:6,
  795. label: 'fCtrlcorpid',
  796. name:"省",
  797. form:2,
  798. width:200,
  799. },
  800. {
  801. span:6,
  802. label: 'fCtrlcorpid',
  803. name:"市",
  804. form:2,
  805. width:200,
  806. },
  807. {
  808. span:6,
  809. label: 'fCtrlcorpid',
  810. name:"结算方式",
  811. form:1,
  812. width:200,
  813. },
  814. {
  815. span:6,
  816. label: 'fCtrlcorpid',
  817. name:"结算天数",
  818. form:2,
  819. width:200,
  820. },
  821. {
  822. span:6,
  823. label: 'fCtrlcorpid',
  824. name:"合同号",
  825. form:2,
  826. width:200,
  827. },
  828. {
  829. span:6,
  830. label: 'fCtrlcorpid',
  831. name:"有效期",
  832. form:3,
  833. width:200,
  834. },
  835. {
  836. span:6,
  837. label: 'fCtrlcorpid',
  838. name:"税号",
  839. form:2,
  840. width:200,
  841. },
  842. {
  843. span:6,
  844. label: 'fCtrlcorpid',
  845. name:"开票地址",
  846. form:2,
  847. width:200,
  848. },
  849. {
  850. span:6,
  851. label: 'fCtrlcorpid',
  852. name:"开票电话",
  853. form:2,
  854. width:200,
  855. },
  856. {
  857. span:6,
  858. label: 'fCtrlcorpid',
  859. name:"本位币银行",
  860. form:2,
  861. width:200,
  862. },
  863. {
  864. span:6,
  865. label: 'fCtrlcorpid',
  866. name:"银行账号",
  867. form:2,
  868. width:200,
  869. },
  870. {
  871. span:6,
  872. label: 'fCtrlcorpid',
  873. name:"外币银行",
  874. form:2,
  875. width:200,
  876. },
  877. {
  878. span:6,
  879. label: 'fStatus',
  880. name:"状态",
  881. form:5,
  882. default:0,
  883. width:200,
  884. },
  885. {
  886. span:12,
  887. label: 'fCtrlcorpid',
  888. name:"备注",
  889. form:4,
  890. width:200,
  891. },
  892. ],
  893. }
  894. },
  895. created() {
  896. this.setRowList = this.tableDate;
  897. this.getRowList = this.tableDate;
  898. this.setRowList2 = this.tableDate2;
  899. this.getRowList2 = this.tableDate2;
  900. this.getRow()
  901. this.getRow2()
  902. },
  903. methods: {
  904. // 添加行
  905. addRow(tableData, event) {
  906. var obj = {};
  907. tableData.push(obj);
  908. },
  909. //删除行
  910. deleteRow(index, rows) {
  911. rows.splice(index, 1);
  912. },
  913. // 状态修改
  914. handleStatusChange(row) {
  915. let text = row.fStatus === "0" ? "启用" : "停用";
  916. this.$confirm('确认要"' + text + '""' + row.fName + '"吗?', "警告", {
  917. confirmButtonText: "确定",
  918. cancelButtonText: "取消",
  919. type: "warning",
  920. })
  921. .then(function () {
  922. })
  923. .then(() => {
  924. })
  925. .catch(function () {
  926. });
  927. },
  928. show(){
  929. if (this.bug == this.formOption.length){
  930. this.bug = 4
  931. this.arrow = 'el-icon-arrow-up'
  932. }else {
  933. this.bug = this.formOption.length
  934. this.arrow = 'el-icon-arrow-down'
  935. }
  936. },
  937. //确定
  938. submitForm(){
  939. },
  940. //取消
  941. cancel(){
  942. },
  943. //页面刷新
  944. getList() {
  945. },
  946. //删除
  947. handleDelete(){
  948. },
  949. //查看
  950. check(){
  951. },
  952. //新增
  953. handleAdd() {
  954. this.mainTable = true
  955. },
  956. //修改
  957. handleUpdate() {
  958. },
  959. //导出
  960. handleExport() {
  961. },
  962. //搜索
  963. handleQuery() {
  964. },
  965. //重置
  966. resetQuery() {
  967. },
  968. //选择行
  969. handleSelectionChange(){
  970. },
  971. //列表页合计
  972. listTotal(){
  973. },
  974. //列设置全选
  975. allChecked() {
  976. if (this.allCheck == true) {
  977. this.setRowList.map((e) => {
  978. return (e.checked = 0);
  979. });
  980. } else {
  981. this.setRowList.map((e) => {
  982. return (e.checked = 1);
  983. });
  984. }
  985. },
  986. //查询列数据
  987. getRow() {
  988. let that = this;
  989. this.data = {
  990. tableName: "客户信息",
  991. userId: Cookies.get("userName"),
  992. };
  993. select(this.data).then((res) => {
  994. if (res.data.length != 0) {
  995. this.getRowList = res.data.filter((e) => e.checked == 0);
  996. this.setRowList = res.data;
  997. this.setRowList = this.setRowList.reduce((res, item) => {
  998. res.push({
  999. surface: item.surface,
  1000. label: item.label,
  1001. name: item.name,
  1002. checked: item.checked,
  1003. width: item.width,
  1004. fixed: item.fixed,
  1005. });
  1006. return res;
  1007. }, []);
  1008. }
  1009. });
  1010. },
  1011. //保存列设置
  1012. save() {
  1013. this.showSetting = false;
  1014. this.data = {
  1015. tableName: "客户信息",
  1016. userId: Cookies.get("userName"),
  1017. sysTableSetList: this.setRowList,
  1018. };
  1019. addSet(this.data).then((res) => {
  1020. this.getRowList = this.setRowList.filter((e) => e.checked == 0);
  1021. });
  1022. },
  1023. //重置列表
  1024. delRow() {
  1025. this.data = {
  1026. tableName: "客户信息",
  1027. userId: Cookies.get("userName"),
  1028. };
  1029. resetModule(this.data).then((res) => {
  1030. if (res.code == 200) {
  1031. this.showSetting = false;
  1032. this.setRowList = this.getRowList = this.$options.data().tableDate
  1033. }
  1034. });
  1035. },
  1036. //列设置全选
  1037. allChecked2() {
  1038. if (this.allCheck2 == true) {
  1039. this.setRowList2.map((e) => {
  1040. return (e.checked = 0);
  1041. });
  1042. } else {
  1043. this.setRowList2.map((e) => {
  1044. return (e.checked = 1);
  1045. });
  1046. }
  1047. },
  1048. //查询列数据
  1049. getRow2() {
  1050. let that = this;
  1051. this.data = {
  1052. tableName: "详情客户列表",
  1053. userId: Cookies.get("userName"),
  1054. };
  1055. select(this.data).then((res) => {
  1056. if (res.data.length != 0) {
  1057. this.getRowList2 = res.data.filter((e) => e.checked == 0);
  1058. this.setRowList2 = res.data;
  1059. this.setRowList2 = this.setRowList2.reduce((res, item) => {
  1060. res.push({
  1061. surface: item.surface,
  1062. label: item.label,
  1063. name: item.name,
  1064. checked: item.checked,
  1065. width: item.width,
  1066. fixed: item.fixed,
  1067. });
  1068. return res;
  1069. }, []);
  1070. }
  1071. });
  1072. },
  1073. //保存列设置
  1074. save2() {
  1075. this.showSetting2 = false;
  1076. this.data = {
  1077. tableName: "详情客户列表",
  1078. userId: Cookies.get("userName"),
  1079. sysTableSetList: this.setRowList2,
  1080. };
  1081. addSet(this.data).then((res) => {
  1082. this.getRowList2 = this.setRowList2.filter((e) => e.checked == 0);
  1083. });
  1084. },
  1085. //重置列表
  1086. delRow2() {
  1087. this.data = {
  1088. tableName: "详情客户列表",
  1089. userId: Cookies.get("userName"),
  1090. };
  1091. resetModule(this.data).then((res) => {
  1092. if (res.code == 200) {
  1093. this.showSetting2 = false;
  1094. this.setRowList2 = this.getRowList2 = this.$options.data().tableDate2
  1095. }
  1096. });
  1097. },
  1098. //开始拖拽事件
  1099. onStart() {
  1100. this.drag = true;
  1101. },
  1102. //拖拽结束事件
  1103. onEnd() {
  1104. this.drag = false;
  1105. },
  1106. }
  1107. }
  1108. </script>
  1109. <style lang="scss" scoped>
  1110. .tabSetting {
  1111. display: flex;
  1112. justify-content: flex-end;
  1113. }
  1114. .listStyle {
  1115. display: flex;
  1116. border-top: 1px solid #dcdfe6;
  1117. border-left: 1px solid #dcdfe6;
  1118. border-right: 1px solid #dcdfe6;
  1119. }
  1120. .listStyle:last-child {
  1121. border-bottom: 1px solid #dcdfe6;
  1122. }
  1123. .progress {
  1124. display: flex;
  1125. align-items: center;
  1126. padding: 2px;
  1127. background-color: rgba(0, 0, 0, 0.05);
  1128. height: 100%;
  1129. }
  1130. .avue-crud__dialog__header {
  1131. display: -webkit-box;
  1132. display: -ms-flexbox;
  1133. display: flex;
  1134. -webkit-box-align: center;
  1135. -ms-flex-align: center;
  1136. align-items: center;
  1137. -webkit-box-pack: justify;
  1138. -ms-flex-pack: justify;
  1139. justify-content: space-between;
  1140. }
  1141. .el-dialog__title {
  1142. color: rgba(0, 0, 0, 0.85);
  1143. font-weight: 500;
  1144. word-wrap: break-word;
  1145. }
  1146. .avue-crud__dialog__menu {
  1147. padding-right: 20px;
  1148. float: left;
  1149. }
  1150. .avue-crud__dialog__menu i {
  1151. color: #909399;
  1152. font-size: 15px;
  1153. }
  1154. .el-icon-full-screen {
  1155. cursor: pointer;
  1156. }
  1157. .el-icon-full-screen:before {
  1158. content: "\e719";
  1159. }
  1160. </style>