element.vue 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543
  1. <template>
  2. <div
  3. style="height:100%;"
  4. class="flexStar"
  5. >
  6. <div
  7. class="boxswai"
  8. style="width:26%;padding-left:0px;"
  9. >
  10. <div class="boxnei" style="display: flex;flex-direction: column;">
  11. <div style="overflow: auto;flex:1">
  12. <avue-tree
  13. :option="treeOption"
  14. :data="treeData"
  15. @node-click="nodeClick"
  16. ref="avueTree"
  17. style="display: inline-block;min-width: 100%;">
  18. <span
  19. class="custom-tree-node"
  20. slot-scope="{ data ,node }"
  21. @mouseover.stop="mouseOver(data)"
  22. @mouseleave.stop="mouseLeave(data)"
  23. style="box-sizing: border-box;padding-right:70px!important;;"
  24. >
  25. <div style="width:100%;">
  26. <span style="text-overflow: ellipsis;"> {{ data.title }} </span>
  27. <!-- <span> {{ node}} </span> -->
  28. <!-- 添加 -->
  29. <span>
  30. <!-- 调整排序 -->
  31. <el-link :underline="false">
  32. <i
  33. class="el-icon-sort"
  34. @click.stop="sortpai(data, node)"
  35. v-if="node.level == 2"
  36. title="调整排序"
  37. ></i>
  38. </el-link>
  39. </span>
  40. </div>
  41. </span>
  42. </avue-tree>
  43. </div>
  44. </div>
  45. </div>
  46. <div
  47. class="boxswai"
  48. style="width:74%;padding-left:0px;padding-right:0px;"
  49. >
  50. <div class="boxnei">
  51. <div
  52. class="marleft10"
  53. style="height:100%;
  54. display: flex;flex-direction: column;"
  55. >
  56. <!-- 上传、删除、下载操作栏 -->
  57. <div
  58. class="rightHeader"
  59. v-show="from.checkd"
  60. >
  61. </div>
  62. <el-empty
  63. style="height:80%;"
  64. v-show="false"
  65. description="该目录为根目录没有EXCEL文件"
  66. ></el-empty>
  67. <div
  68. class="martop20"
  69. v-if="true"
  70. style="flex:1;"
  71. >
  72. <avue-crud
  73. ref="crud"
  74. :data="loadData"
  75. :option="loadOption"
  76. v-model="obj"
  77. :page.sync="page"
  78. @on-load="onLoad"
  79. @selection-change="selectionChange"
  80. :table-loading="tabloading"
  81. @current-change="currentChange"
  82. @size-change="sizeChange"
  83. @refresh-change="refreshChange"
  84. >
  85. <template slot="menuRight">
  86. <el-button
  87. type="danger"
  88. size="small"
  89. icon="el-icon-delete"
  90. plain
  91. @click="handleDelete">删除元素表
  92. </el-button>
  93. <el-button
  94. size="small"
  95. type="primary"
  96. plain
  97. @click="editele"
  98. >编辑表单
  99. </el-button>
  100. </template>
  101. <template slot="menuLeft" slot-scope="{size}">
  102. <div style="display:flex">
  103. <el-input placeholder="请输入你想搜索的表单名称" v-model="input3" :size="size" clearable @clear="clearinput" > </el-input>
  104. <el-button type="primary" icon="el-icon-search" size="small" @click="searchChange">搜索</el-button>
  105. </div>
  106. </template>
  107. <template slot-scope="{type,size,row}" slot="menu">
  108. <el-button :size="size" :type="type" @click="distribution(row)">分配节点</el-button>
  109. <el-button :size="size" :type="type" @click="handleEditFormula(row)">公式配置</el-button>
  110. <el-button :size="size" :type="type" @click="editElement(row)">编辑元素</el-button>
  111. </template>
  112. </avue-crud>
  113. </div>
  114. </div>
  115. </div>
  116. </div>
  117. <!-- 编辑元素表单信息 -->
  118. <el-dialog
  119. title="编辑元素表单信息"
  120. :visible.sync="editElementFormTag"
  121. width="60%"
  122. :modal-append-to-body="false"
  123. >
  124. <div>
  125. <el-table
  126. :data="formDatass"
  127. border
  128. style="width: 100%"
  129. >
  130. <el-table-column
  131. prop="tableName"
  132. label="表名"
  133. >
  134. <template slot-scope="scope">
  135. <el-input
  136. v-model="scope.row.tableName"
  137. placeholder="请输入表名称"
  138. ></el-input>
  139. </template>
  140. </el-table-column>
  141. <el-table-column
  142. prop="tableType"
  143. label="表类型"
  144. >
  145. <template slot-scope="scope">
  146. <el-select
  147. v-model="scope.row.tableType"
  148. placeholder="请选择"
  149. >
  150. <el-option
  151. v-for="(item,key) in tableTypelist"
  152. :key="key"
  153. :label="item.dictValue"
  154. :value="item.dictKey"
  155. >
  156. </el-option>
  157. </el-select>
  158. </template>
  159. </el-table-column>
  160. <el-table-column
  161. prop="tableOwner"
  162. label="所属方"
  163. >
  164. <template slot-scope="scope">
  165. <el-select
  166. v-model="scope.row.tableOwner"
  167. placeholder="请选择"
  168. >
  169. <el-option
  170. v-for="(item,key) in ownerTypeList"
  171. :key="key"
  172. :label="item.dictValue"
  173. :value="item.dictKey"
  174. >
  175. </el-option>
  176. </el-select>
  177. </template>
  178. </el-table-column>
  179. <el-table-column
  180. prop="fillRate"
  181. label="填报率"
  182. >
  183. <template slot-scope="scope">
  184. <el-input
  185. v-model="scope.row.fillRate"
  186. placeholder="请输入填报率"
  187. ></el-input>
  188. </template>
  189. </el-table-column>
  190. </el-table>
  191. </div>
  192. <span
  193. slot="footer"
  194. class="dialog-footer"
  195. >
  196. <el-button @click="editElementFormTag = false">取 消</el-button>
  197. <el-button
  198. type="primary"
  199. @click="editeditElementFormMF()"
  200. >确 定</el-button>
  201. </span>
  202. </el-dialog>
  203. <!-- 公式配置 -->
  204. <el-dialog
  205. title="元素公式6"
  206. :visible.sync="editEleFormulaVisible"
  207. width="800px"
  208. append-to-body
  209. :close-on-click-modal="false"
  210. >
  211. <div class="flex mg-b-10">
  212. <el-input
  213. v-model="formulaInput"
  214. placeholder="请输入名称"
  215. size="samll" clearable @clear="searchFormulaName"
  216. ></el-input>
  217. <el-button type="primary" class="mg-l-10" @click="searchFormulaName">搜索</el-button>
  218. </div>
  219. <el-table
  220. :data="editEleListFilter"
  221. border
  222. style="width: 100%"
  223. height="400px"
  224. >
  225. <el-table-column align="center" prop="eName" label="字段信息">
  226. </el-table-column>
  227. <el-table-column align="center" label="操作" width="200">
  228. <template slot-scope="scope">
  229. <el-link
  230. :type="scope.row.globalFormula == 1 ? 'warning' : 'primary'"
  231. @click="toFormulaEdit(scope.row,0)"
  232. >全局公式</el-link
  233. >
  234. <!-- <el-link
  235. class="mg-l-10"
  236. :type="scope.row.isSaveFormula == 1 ? 'warning' : 'primary'"
  237. @click="toFormulaEdit(scope.row,10)"
  238. >节点公式</el-link
  239. > -->
  240. <!-- <el-link
  241. class="mg-l-10"
  242. type="danger"
  243. @click="delEleRowHandle(scope.$index,editEleListFilter)"
  244. >删除</el-link> -->
  245. </template>
  246. </el-table-column>
  247. </el-table>
  248. </el-dialog>
  249. <!-- 公式 -->
  250. <el-dialog
  251. title="元素公式66"
  252. :visible.sync="formulaCompVisible"
  253. fullscreen
  254. append-to-body
  255. class="full-dialog"
  256. @close="closeformulaComp"
  257. >
  258. <FormulaEdit
  259. :fromcurNode="curEleTable"
  260. :wbsid="id"
  261. :nodeid="curTreeData.id"
  262. :eleid="formulaCurRow.id"
  263. :projectid="projectid"
  264. :elementType="formulaCurRow.elementType"
  265. :globaltype="formulaCurRow.globaltype"
  266. @hideDialog="formulaCompVisible = false"
  267. v-if="formulaCompVisible"
  268. ></FormulaEdit>
  269. </el-dialog>
  270. <!-- 关联公共WBS模板 -->
  271. <PublicWbs ref="PublicWbs" :from="from"/>
  272. <!-- 编辑元素 -->
  273. <el-dialog
  274. :title="(curEleTable.title?curEleTable.title:'')+' 元素编辑'"
  275. :visible.sync="editEleVisible"
  276. width="80%"
  277. append-to-body
  278. :close-on-click-modal="false"
  279. >
  280. <p class="font-c-warning">编辑元素信息(请谨慎操作)</p>
  281. <div style="display:flex;margin-bottom:10px">
  282. <el-input placeholder="请输入你想编辑的元素名称" v-model="searchinput" :size="size" clearable @clear="clearsearchinput" > </el-input>
  283. <el-button type="primary" icon="el-icon-search" size="small" @click="searchinputChange">搜索</el-button>
  284. </div>
  285. <el-table
  286. :data="editEleList"
  287. border
  288. style="width: 100%"
  289. height="400px"
  290. v-loading="editEleloading"
  291. >
  292. <el-table-column
  293. align="center"
  294. type="index"
  295. width="50"
  296. ></el-table-column>
  297. <el-table-column
  298. align="center"
  299. prop="eName"
  300. label="元素名称"
  301. >
  302. <template slot="header">
  303. <i class="required"></i>
  304. <span>元素名称</span>
  305. </template>
  306. <template slot-scope="scope">
  307. <el-input
  308. v-model="scope.row.eName"
  309. size="small"
  310. placeholder="请输入内容"
  311. ></el-input>
  312. </template>
  313. </el-table-column>
  314. <el-table-column
  315. align="center"
  316. prop="eType"
  317. label="数据类型"
  318. width="120"
  319. >
  320. <template slot="header">
  321. <i class="required"></i>
  322. <span>数据类型</span>
  323. </template>
  324. <template slot-scope="scope">
  325. <el-select
  326. v-model="scope.row.eType"
  327. @change="setDefaultLength(scope.row)"
  328. size="small"
  329. placeholder="请选择"
  330. >
  331. <el-option
  332. v-for="item in dataTypeList"
  333. :key="item.id"
  334. :label="item.dictValue"
  335. :value="item.dictKey"
  336. ></el-option>
  337. </el-select>
  338. </template>
  339. </el-table-column>
  340. <el-table-column
  341. align="center"
  342. prop="eLength"
  343. label="长度"
  344. width="120"
  345. >
  346. <template slot="header">
  347. <i class="required"></i>
  348. <span>长度</span>
  349. </template>
  350. <template slot-scope="scope">
  351. <el-input
  352. v-model="scope.row.eLength"
  353. size="small"
  354. placeholder="请输入内容"
  355. ></el-input>
  356. </template>
  357. </el-table-column>
  358. <el-table-column
  359. align="center"
  360. prop="eAllowDeviation"
  361. label="允许偏差值"
  362. >
  363. <template slot-scope="scope">
  364. <div class="flex">
  365. <el-select
  366. v-model="scope.row.allow"
  367. size="small"
  368. placeholder="请选择"
  369. style="width:120px"
  370. >
  371. <el-option
  372. :key="1"
  373. label="-"
  374. value="-"
  375. ></el-option>
  376. <el-option
  377. :key="2"
  378. label=">"
  379. value=">"
  380. ></el-option>
  381. <el-option
  382. :key="3"
  383. label="<"
  384. value="<"
  385. ></el-option>
  386. <el-option
  387. :key="4"
  388. label="≥"
  389. value="≥"
  390. ></el-option>
  391. <el-option
  392. :key="5"
  393. label="≤"
  394. value="≤"
  395. ></el-option>
  396. <el-option
  397. :key="6"
  398. label="±"
  399. value="±"
  400. ></el-option>
  401. <el-option
  402. :key="7"
  403. label="【】"
  404. value="【】"
  405. ></el-option>
  406. </el-select>
  407. <el-input
  408. v-model="scope.row.deviation"
  409. size="small"
  410. placeholder="请输入内容"
  411. ></el-input>
  412. </div>
  413. </template>
  414. </el-table-column>
  415. <el-table-column
  416. align="center"
  417. prop="eInspectionMethod"
  418. label="检查方法和频率"
  419. >
  420. <template slot-scope="scope">
  421. <el-input
  422. v-model="scope.row.eInspectionMethod"
  423. size="small"
  424. placeholder="请输入内容"
  425. ></el-input>
  426. </template>
  427. </el-table-column>
  428. <el-table-column
  429. align="center"
  430. label="操作"
  431. width="120"
  432. >
  433. <template slot="header">
  434. <el-button
  435. @click="addEleRow(editEleList)"
  436. type="text"
  437. icon="el-icon-circle-plus-outline"
  438. class="text-icon"
  439. ></el-button>
  440. </template>
  441. <template slot-scope="scope">
  442. <el-button
  443. v-if="scope.row.id"
  444. icon="el-icon-remove-outline"
  445. type="text"
  446. @click="delEleRowHandle(scope.$index,editEleList)"
  447. class="text-icon text-icon-danger"
  448. ></el-button>
  449. <div
  450. class="flex"
  451. v-else
  452. >
  453. <el-button
  454. @click="saveNewEle(scope.row)"
  455. type="mini"
  456. >保存</el-button>
  457. <el-button
  458. icon="el-icon-remove-outline"
  459. type="text"
  460. @click="delEleRowHandle(scope.$index,editEleList)"
  461. class="text-icon text-icon-danger"
  462. ></el-button>
  463. </div>
  464. </template>
  465. </el-table-column>
  466. </el-table>
  467. <span
  468. slot="footer"
  469. class="dialog-footer"
  470. >
  471. <el-button @click="editEleVisible = false">取 消</el-button>
  472. <el-button
  473. type="primary"
  474. @click="saveEles"
  475. >确 定</el-button>
  476. </span>
  477. </el-dialog>
  478. <!-- 私有wbs树排序弹框 -->
  479. <el-dialog
  480. title="调整排序"
  481. :visible.sync="sortTag"
  482. width="50%"
  483. append-to-body
  484. >
  485. <ManualSorting v-if="sortTag2" @bianhua="bianhua()" :sort="sort" />
  486. <span slot="footer" class="dialog-footer">
  487. <el-button @click="(sortTag = false), (sortTag2 = false)"
  488. >取 消</el-button
  489. >
  490. <el-button type="primary" @click="editSort()">确 定</el-button>
  491. </span>
  492. </el-dialog>
  493. </div>
  494. </template>
  495. <script>
  496. import { excelType} from '@/api/exctab/excelmodel';
  497. import {
  498. updateBatchNodeTableInfoElement,
  499. selectByNodeTable,
  500. selectFormElements,
  501. selectPrivateFormElements
  502. } from "@/api/manager/wbstree";
  503. import {getTableElments} from "@/api/manager/wbstree";
  504. import {tabTypeLazyTreeAll,delTabInfoAll} from "@/api/manager/wbsprivate";
  505. import {saveElement, remove as removeElement, updateBatchElements, getTemplate,importWbsElement} from "@/api/manager/wbsformelement";
  506. import FormulaEdit from "@/views/formula/edit1.vue";
  507. import PublicWbs from './PublicWbs.vue'
  508. import { searchNodeTables, } from "@/api/exctab/excelmodel";
  509. import {wbsInfotabSort} from "@/api/manager/wbsinfo";
  510. import { getDictionary } from "@/api/system/dict";
  511. import ManualSorting from '@/components/WbsTree/ManualSorting'
  512. export default {
  513. components:{
  514. FormulaEdit,
  515. PublicWbs,
  516. ManualSorting
  517. },
  518. data () {
  519. return {
  520. input3:'',
  521. editElementFormTag:false,//编辑元素
  522. tabloading:false,
  523. formDatass: [],
  524. selectionList:[],
  525. tableTypelist:[],
  526. ownerTypeList:[],
  527. dataTypeList:[],
  528. //数据类型的默认长度
  529. dataTypeDefaultMap: {
  530. 1: 250,//字符串
  531. 2: 50,//整数
  532. 3: 50,//小数
  533. 4: 50,//日期
  534. 5: 50,//数值
  535. 6: 50,//签名
  536. 7: 100,//文件
  537. },
  538. page: {
  539. size: 10,
  540. current: 1,
  541. total: 2
  542. },
  543. loadOption: {
  544. height: 'auto',
  545. calcHeight: 30,
  546. tip: false,
  547. searchShow:false,
  548. searchMenuSpan: 6,
  549. border: true,
  550. index: true,
  551. viewBtn: false,
  552. selection: true,
  553. editBtn:false,
  554. delBtn:false,
  555. addBtn:false,
  556. menu:true,
  557. dialogClickModal: false,
  558. column: [
  559. {
  560. label: "元素表名称",
  561. prop: "title",
  562. editDisplay: false,
  563. addDisplay: false,
  564. },
  565. {
  566. label: "元素表类型",
  567. prop: "tabType",
  568. // search: true,
  569. rules: [
  570. {
  571. required: true,
  572. message: "请输入名称",
  573. trigger: "blur",
  574. },
  575. ],
  576. },
  577. {
  578. label: "元素总量",
  579. prop: "elementTotal",
  580. editDisplay: false,
  581. addDisplay: false,
  582. rules: [
  583. {
  584. message: "请输入表数量",
  585. trigger: "blur",
  586. },
  587. ],
  588. },
  589. {
  590. label: "所属方",
  591. prop: "tabOwner",
  592. editDisplay: false,
  593. addDisplay: false,
  594. rules: [
  595. {
  596. message: "请输入表数量",
  597. trigger: "blur",
  598. },
  599. ],
  600. },
  601. {
  602. label: "填报率",
  603. prop: "fillRate",
  604. editDisplay: false,
  605. addDisplay: false,
  606. rules: [
  607. {
  608. message: "请输入表数量",
  609. trigger: "blur",
  610. },
  611. ],
  612. },
  613. ],
  614. },
  615. formelemtfoelemtformrm: {},
  616. elementloading: false,
  617. elemtData:[
  618. {
  619. tableName:'张三',
  620. sex:'男',
  621. id:1
  622. }, {
  623. tableName:'李四',
  624. sex:'女',
  625. id:2
  626. }
  627. ],
  628. curEleTable:{},
  629. eleReg: /(-|>|<|≥|≤|±|【】)?([^≥≤±【】]*)/,
  630. editEleList:[],
  631. editEleListAll:[],
  632. editEleFormulaVisible:false,
  633. editEleListFilter:[],
  634. excelId:'',
  635. treeNode: {},
  636. //#region 鼠标
  637. leftTRee: '',//左侧树ID
  638. threessW: 400,
  639. //#endregion
  640. heightss: '',//
  641. data: [],//清表模板
  642. filterText:"",//搜索关键字
  643. treeloading:false,
  644. defaultProps: {
  645. children: "children",
  646. isLeaf: function (data) {
  647. return !data.hasChildren || (data.isExistForm == 1);
  648. },
  649. },
  650. wbsdata: [],//wbs模板
  651. //#region 右侧数据
  652. from:{
  653. checkd:false
  654. },
  655. rules: {
  656. nodeName: [
  657. { required: true, message: '请输入清表名称', trigger: 'blur' },
  658. ],
  659. tabType: [
  660. { required: true, message: '请选择清表类型', trigger: 'blur' },
  661. ],
  662. },
  663. wbsform: {
  664. id: '',
  665. wbsType: '',
  666. wbsName: '',
  667. },//wbs树选中的值
  668. tableData: [],//右侧表数据
  669. wbsmiddle: false,//选择wbs模板那块是否有
  670. tableList: [],//进行处理的wbs关联表
  671. exceltypeData: [],//清表类型枚举
  672. wbsmodel: [],//wbs模板名称枚举
  673. //#endregion
  674. saveExcelLoad:false,
  675. filterText1: "",
  676. addTableData:[],
  677. //编辑元素
  678. editEleVisible:false,
  679. editEleloading:false,
  680. formulaInput:"",//公式配置
  681. formulaCompVisible: false, //公式弹框
  682. formulaCurRow: {}, //当前元素
  683. id:'',
  684. curTreeData:{},
  685. loadData:[],
  686. treeOption:{
  687. defaultExpandedKeys:[],
  688. currentNode:{},
  689. filter:false,
  690. addBtn:false,
  691. props:{
  692. labelText:'标题',
  693. label:'title',
  694. value:'id',
  695. children:'children'
  696. },
  697. lazy: true,
  698. treeLoad: function (node, resolve) {
  699. const parentId = (node.level === 0) ? 12345678910 : node.data.id;
  700. tabTypeLazyTreeAll({parentId,current:1,size:1000}).then(res => {
  701. resolve(res.data.data.records.map(item => {
  702. return {
  703. ...item,
  704. leaf: !item.hasChildren
  705. }
  706. }))
  707. });
  708. },
  709. },
  710. treeData:'',
  711. projectid:"",
  712. curNode:{},
  713. defaultExpandKey:[],//默认展开的节点
  714. sortTag: false,
  715. sortTag2: false,
  716. sort:[],
  717. searchinput:'',
  718. }
  719. },
  720. computed:{
  721. ids () {
  722. let ids = [];
  723. this.selectionList.forEach(ele => {
  724. ids.push(ele.id);
  725. });
  726. return ids.join(",");
  727. }
  728. },
  729. watch: {
  730. 'input3'(){
  731. this.page.currentPage=1;
  732. this.page.current=1
  733. }
  734. },
  735. methods: {
  736. //关闭公式弹窗
  737. closeformulaComp(){
  738. console.log('关闭');
  739. getTableElments(this.curEleTable.initTableId).then((res) => {
  740. this.editEleListFilter = res.data.data;
  741. this.editEleListAll = [].concat(this.editEleListFilter);
  742. })
  743. },
  744. //#region 树形控件外层左侧事件
  745. mouseLeave (data) {
  746. if (data.moreShow) {
  747. this.$set(data, 'moreShow', false)
  748. }
  749. },
  750. mouseOver (data) {
  751. if (!data.moreShow) {
  752. this.$set(data, 'moreShow', true)
  753. }
  754. },
  755. async sortpai(data,node) {
  756. console.log(data,node);
  757. this.curNode=node;
  758. this.curTreeData=data;
  759. await this.findWbsTreePrivateSameLevel(node,data)
  760. this.sortTag = true;
  761. this.sortTag2 = true;
  762. },
  763. editSort() {
  764. this.wbsInfotabSort();
  765. },
  766. bianhua() {
  767. this.sortTag2 = false;
  768. this.$nextTick(() => {
  769. this.sortTag2 = true;
  770. });
  771. },
  772. async wbsInfotabSort() {
  773. //元素库、独立库节点排序
  774. var newArr=this.sort.map((v)=>{return v.id})
  775. newArr=newArr.join(',')
  776. const { data: res } = await wbsInfotabSort(newArr);
  777. console.log(res);
  778. if (res.code == 200) {
  779. this.sortTag = false;
  780. this.sortTag2 = false;
  781. this.refreshTreeData();
  782. }
  783. },
  784. async findWbsTreePrivateSameLevel(node,data) {
  785. const { data: res } =await tabTypeLazyTreeAll({parentId:node.data.parentId,current:1,size:1000});
  786. if (res.code == 200) {
  787. console.log(res.data,'res1111111');
  788. let tabArr=res.data.records
  789. tabArr.forEach((item)=>{
  790. item.tableName=item.title
  791. })
  792. console.log(tabArr,'tabArr');
  793. this.sort =tabArr
  794. }
  795. },
  796. addEleRow (list) {
  797. list.push({});
  798. },
  799. //修改数据类型,给个默认值
  800. setDefaultLength (row) {
  801. this.$set(row, 'eLength', this.dataTypeDefaultMap[row.eType]);
  802. },
  803. delEleRow (index, list) {
  804. list.splice(index, 1);
  805. },
  806. delEleRowHandle (index, list) {
  807. let row = list[index];
  808. if (row.id) {
  809. //有id需要请求删除
  810. this.$confirm('是否确认删除?', '删除元素', {
  811. distinguishCancelAndClose: true,
  812. confirmButtonText: '删除',
  813. cancelButtonText: '取消'
  814. }).then(() => {
  815. removeElement(row.id, this.curEleTable.initTableName, row.ekey).then(() => {
  816. list.splice(index, 1);
  817. })
  818. this.curEleTable.elementTotal --;
  819. })
  820. } else {
  821. list.splice(index, 1);
  822. }
  823. },
  824. formatTableType(cellValue) {
  825. for (let i = 0; i < this.tableTypelist.length; i++) {
  826. if (this.tableTypelist[i].dictValue == cellValue) {
  827. return this.tableTypelist[i].dictKey;
  828. }
  829. }
  830. return cellValue;
  831. //console.log(cellValue)
  832. },
  833. formatOwner( cellValue) {
  834. for (let i = 0; i < this.ownerTypeList.length; i++) {
  835. if (this.ownerTypeList[i].dictValue == cellValue) {
  836. return this.ownerTypeList[i].dictKey;
  837. }
  838. }
  839. return cellValue;
  840. //console.log(cellValue)
  841. },
  842. currentChange (currentPage) {
  843. this.page.current = currentPage;
  844. this.page.currentPage = currentPage;
  845. this.searchChange();
  846. },
  847. sizeChange (pageSize) {
  848. this.page.size = pageSize;
  849. // this.searchChange();
  850. },
  851. selectionChange (list) {
  852. this.selectionList = list;
  853. },
  854. selectionClear () {
  855. this.selectionList = [];
  856. this.$refs.crud.toggleSelection();
  857. },
  858. async tabTypeLazyTreeAll ( parentId,current,size,titleName) {//清表树
  859. console.log(parentId);
  860. const { data: res } = await tabTypeLazyTreeAll({parentId,current,size,titleName} )
  861. if (res.code === 200) {
  862. return res.data
  863. }
  864. },
  865. nodeClick(data,node){
  866. console.log(data,node,'treedata');
  867. this.curNode=node
  868. this.curTreeData=data
  869. this.treeId=data.id
  870. this.page.current=1;
  871. this.page.currentPage=1
  872. if(data.hasChildren){
  873. this.onLoad(this.page)
  874. }
  875. if(data.hasChildren===false&&node.level==2){
  876. this.tabloading=true;
  877. let arr=[]
  878. arr.push(data)
  879. this.loadData=arr
  880. this.page.total=1
  881. setTimeout(() => {
  882. this.tabloading=false
  883. }, 1000);
  884. }else{
  885. this.loadData=[]
  886. this.page.total=0
  887. }
  888. },
  889. refreshChange () {
  890. this.searchChange();
  891. },
  892. onLoad(page, params = {}){
  893. if(this.treeId){
  894. this.tabloading=true;
  895. this.tabTypeLazyTreeAll(this.treeId, page.currentPage,page.pageSize,this.input3).then((res)=>{
  896. this.loadData=res.records
  897. this.page.total=res.total
  898. this.tabloading=false
  899. })
  900. }
  901. },
  902. //编辑后刷新
  903. onLoad1(){
  904. if(this.curNode.level===1&&this.curNode.data.hasChildren){
  905. this.tabloading=true;
  906. this.tabTypeLazyTreeAll(this.treeId, this.page.current,this.page.size,this.input3).then((res)=>{
  907. this.loadData=res.records
  908. this.page.total=res.total
  909. this.tabloading=false
  910. })
  911. }else{
  912. this.tabTypeLazyTreeAll(this.curNode.data.parentId,this.page.current,1000,this.input3).then((res)=>{
  913. let faArr=res.records;
  914. this.loadData=faArr.filter((item)=>{
  915. if(item.id===this.treeId){
  916. return item
  917. }
  918. })
  919. })
  920. }
  921. },
  922. //搜索
  923. searchChange(){
  924. if(this.treeId){
  925. if(this.curTreeData.hasChildren){
  926. this.tabloading=true;
  927. this.tabTypeLazyTreeAll(this.curTreeData.id, this.page.current,this.page.size,this.input3).then((res)=>{
  928. this.loadData=res.records
  929. this.page.total=res.total
  930. this.tabloading=false;
  931. })
  932. }
  933. if(this.curTreeData.hasChildren===false&&this.curNode.level==2){
  934. this.tabloading=true;
  935. let arr=[]
  936. arr.push(this.curTreeData)
  937. this.loadData=arr
  938. this.page.total=1;
  939. setTimeout(() => {
  940. this.tabloading=false
  941. }, 1000);
  942. }else{
  943. this.tabloading=true;
  944. this.loadData=[]
  945. this.page.total=0
  946. setTimeout(() => {
  947. this.tabloading=false
  948. }, 1000);
  949. }
  950. }else{
  951. // this.$message.warning("请选选择左侧节点");
  952. if(this.input3){
  953. this.tabloading=true;
  954. this.tabTypeLazyTreeAll(this.curTreeData.id, this.page.current,this.page.size,this.input3).then((res)=>{
  955. this.loadData=res.records
  956. this.page.total=res.total
  957. this.tabloading=false;
  958. })
  959. }else{
  960. this.$message.warning("请输入你想搜索的表单名称");
  961. }
  962. }
  963. },
  964. clearinput(){
  965. this.searchChange()
  966. },
  967. resetChange(item){
  968. console.log(item);
  969. this.tabTypeLazyTreeAll(this.treeId, this.page.current,this.page.size).then((res)=>{
  970. this.loadData=res.records
  971. this.page.total=res.total
  972. })
  973. },
  974. handleDelete () {
  975. if (this.selectionList.length === 0) {
  976. this.$message.warning("请选择至少一条数据");
  977. return;
  978. }
  979. this.$confirm("确定将选择数据删除?", {
  980. confirmButtonText: "确定",
  981. cancelButtonText: "取消",
  982. type: "warning"
  983. })
  984. .then(() => {
  985. return delTabInfoAll(this.ids);
  986. })
  987. .then(() => {
  988. this.onLoad(this.page);//刷新表格数据
  989. //刷新左边树形数据
  990. this.refreshTreeData()
  991. this.$message({
  992. type: "success",
  993. message: "操作成功!"
  994. });
  995. this.$refs.crud.toggleSelection();
  996. });
  997. },
  998. // //刷新左边树形数据
  999. // refreshTreeData(){
  1000. // const parentId =12345678910
  1001. // tabTypeLazyTreeAll({parentId,current:1,siez:1000}).then(res => {
  1002. // this.treeData=res.data.data.records;
  1003. // this.$nextTick(()=>{
  1004. // //树默认展开
  1005. // if(this.curNode.level===1){
  1006. // this.treeOption.defaultExpandedKeys.push(this.curNode.data.id);
  1007. // this.$refs.avueTree.setCurrentKey(this.curNode.data.id)
  1008. // }else{
  1009. // this.treeOption.defaultExpandedKeys.push(this.curNode.data.parentId);
  1010. // // 设置选中的节点
  1011. // this.treeOption.currentNode =this.curNode.data.id
  1012. // this.$refs.avueTree.setCurrentKey(this.curNode.data.id)
  1013. // }
  1014. // })
  1015. // });
  1016. // },
  1017. //刷新左边树形数据
  1018. refreshTreeData(){
  1019. if(this.curNode.level===1){
  1020. const parentId =12345678910
  1021. tabTypeLazyTreeAll({parentId,current:1,size:1000}).then(res => {
  1022. this.data=res.data.data.records;
  1023. this.$nextTick(()=>{
  1024. this.defaultExpandKey.push(this.curNode.data.id);
  1025. this.$refs.avueTree.setCurrentKey(this.curNode.data.id);
  1026. })
  1027. });
  1028. }else{
  1029. this.updateTreeNewNode()
  1030. }
  1031. },
  1032. //编辑元素表单信息
  1033. updateTreeNewNode() {
  1034. tabTypeLazyTreeAll(
  1035. {parentId:this.curTreeData.parentId,current:1,size:1000}
  1036. ).then((res) => {
  1037. var resarr= res.data.data.records.map(item=>{
  1038. return{
  1039. ...item,
  1040. leaf: !item.hasChildren
  1041. }
  1042. })
  1043. this.$refs.avueTree.updateKeyChildren(
  1044. this.curTreeData.parentId,
  1045. // res.data.data.records
  1046. resarr
  1047. );
  1048. this.$refs.avueTree.setCurrentKey(this.curNode.data.id);
  1049. });
  1050. },
  1051. //获取编辑元素信息
  1052. getselectPrivateFormElements(){
  1053. this.editEleloading=true
  1054. selectPrivateFormElements(this.curEleTable.id,{eName:this.searchinput}).then((res) => {
  1055. this.editEleloading=false
  1056. res.data.data.forEach((element) => {
  1057. this.eleReg.exec(element.eAllowDeviation);
  1058. //console.log(RegExp.$1)
  1059. //console.log(RegExp.$2)
  1060. element.allow = RegExp.$1 ? RegExp.$1 : '';
  1061. element.deviation = RegExp.$2 ? RegExp.$2 : '';
  1062. })
  1063. this.editEleList = res.data.data;
  1064. })
  1065. this.editEleVisible = true;
  1066. },
  1067. editElement (row) {
  1068. console.log(row,'row');
  1069. this.curEleTable = row;
  1070. this.getselectPrivateFormElements()
  1071. },
  1072. //修改数据类型,给个默认值
  1073. setDefatableTypeultLength (row) {
  1074. this.$set(row, 'eLength', this.dataTypeDefaultMap[row.eType]);
  1075. },
  1076. //分配节点
  1077. distribution(row){
  1078. this.from.id=row.id;
  1079. this.from.title=row.title;
  1080. this.from.tableType=row.tabType
  1081. this.from.tableType=this.formatTableType(this.from.tableType);
  1082. this.from.tableOwner=row.tabOwner
  1083. this.from.tableOwner=this.formatOwner(this.from.tableOwner);
  1084. this.$refs.PublicWbs.show();
  1085. },
  1086. saveNewEle (row) {
  1087. if (!row.eName) {
  1088. this.$message({
  1089. type: "warning",
  1090. message: "请填写元素名称"
  1091. });
  1092. return;
  1093. }
  1094. if (!row.eType) {
  1095. this.$message({
  1096. type: "warning",
  1097. message: "请选择数据类型"
  1098. });
  1099. return;
  1100. }
  1101. row.eAllowDeviation = (row.allow ? row.allow : '') + (row.deviation ? row.deviation : '');
  1102. row.fId = this.curEleTable.id;
  1103. row.initTableName = this.curEleTable.initTableName;
  1104. if (!row.eLength) {
  1105. this.$message({
  1106. type: "warning",
  1107. message: "请填写长度"
  1108. });
  1109. return;
  1110. }
  1111. saveElement(row).then((res) => {
  1112. if (res.data.data) {
  1113. this.$set(row, 'id', res.data.data.id);
  1114. this.$set(row, 'ekey', res.data.data.ekey);
  1115. this.$message({
  1116. type: "success",
  1117. message: "保存成功!"
  1118. });
  1119. }
  1120. })
  1121. },
  1122. saveEles () {
  1123. for (let i = 0; i < this.editEleList.length; i++) {
  1124. if (!this.editEleList[i].id) {
  1125. this.$message({
  1126. type: "warning",
  1127. message: "请先将新增的元素点击保存"
  1128. });
  1129. return;
  1130. }
  1131. if (!this.editEleList[i].eName) {
  1132. this.$message({
  1133. type: "warning",
  1134. message: "请填写第" + (i + 1) + "条元素名称"
  1135. });
  1136. return;
  1137. }
  1138. if (!this.editEleList[i].eType) {
  1139. this.$message({
  1140. type: "warning",
  1141. message: "请选择第" + (i + 1) + "条数据类型"
  1142. });
  1143. return;
  1144. }
  1145. if ( !this.editEleList[i].eLength) {
  1146. this.$message({
  1147. type: "warning",
  1148. message: "请填写第" + (i + 1) + "条长度"
  1149. });
  1150. return;
  1151. }
  1152. }
  1153. if (this.editEleList.length > 0) {
  1154. this.editEleList.forEach((element) => {
  1155. element.eAllowDeviation = (element.allow ? element.allow : '') + (element.deviation ? element.deviation : '');
  1156. // if (element.eType == 4) {
  1157. // this.$set(element, 'eLength', 0);
  1158. // //element.eLength = 0;
  1159. // }
  1160. })
  1161. console.log(this.editEleList,'this.editEleList');
  1162. updateBatchElements(this.editEleList, this.curEleTable.initTableName).then(() => {
  1163. this.editEleVisible = false;
  1164. this.onLoad1(this.page);
  1165. this.$message({
  1166. type: "success",
  1167. message: "保存成功!"
  1168. });
  1169. })
  1170. } else {
  1171. this.editEleVisible = false;
  1172. this.onLoad1(this.page);
  1173. this.$message({
  1174. type: "success",
  1175. message: "保存成功!"
  1176. });
  1177. }
  1178. },
  1179. handleEditFormula ( row) {
  1180. console.log(row,'row');
  1181. this.curEleTable = row;
  1182. getTableElments(this.curEleTable.initTableId).then((res) => {
  1183. this.editEleListFilter = res.data.data;
  1184. this.editEleListAll = [].concat(this.editEleListFilter);
  1185. })
  1186. this.editEleFormulaVisible = true;
  1187. },
  1188. //搜索 筛选
  1189. searchFormulaName(){
  1190. this.editEleListFilter = this.editEleListAll.filter((ele)=>{
  1191. return ele.eName.indexOf(this.formulaInput) > -1;
  1192. })
  1193. },
  1194. //跳转到公式配置页面
  1195. toFormulaEdit(row,type) {
  1196. this.formulaCurRow = row;
  1197. this.formulaCurRow.globaltype = type;
  1198. this.formulaCurRow.elementType = false;
  1199. this.formulaCompVisible = true;
  1200. },
  1201. editele(){
  1202. console.log('编辑元素表单信息');
  1203. if (this.selectionList.length === 0) {
  1204. this.$message.warning("请选择至少一条数据");
  1205. return;
  1206. }
  1207. if (this.elemtData.length) {
  1208. let da = []
  1209. this.formDatass = [...this.selectionList];
  1210. console.log(this.formDatass,'his.formDatass111');
  1211. this.formDatass.forEach(val => {
  1212. da.push({
  1213. tableType: val.tabType,
  1214. tableOwner: val.tabOwner,
  1215. id: val.id,
  1216. tableName: val.title,
  1217. fillRate: val.fillRate,
  1218. })
  1219. })
  1220. this.formDatass = da
  1221. console.log(this.formDatass,'this.formDatass');
  1222. let fa=[]
  1223. this.formDatass.forEach(val=>{
  1224. let newarr= this.tableTypelist.filter(e => e.dictValue===val.tableType);
  1225. let newarr1= this.ownerTypeList.filter(e => e.dictValue===val.tableOwner);
  1226. fa.push({
  1227. tableType: newarr[0].dictKey,
  1228. tableOwner: newarr1[0].dictKey,
  1229. id: val.id,
  1230. tableName: val.tableName,
  1231. fillRate: val.fillRate,
  1232. })
  1233. })
  1234. this.formDatass=fa
  1235. this.editElementFormTag = true;
  1236. }
  1237. },
  1238. getOwnerTypelist() {
  1239. if (this.ownerTypeList.length > 1) {
  1240. return;
  1241. }
  1242. getDictionary({
  1243. code: "owner_type",
  1244. }).then((res) => {
  1245. res.data.data.forEach((element) => {
  1246. element.dictKey = Number(element.dictKey);
  1247. });
  1248. this.ownerTypeList = res.data.data;
  1249. });
  1250. },
  1251. getDataTypelist() {
  1252. if (this.dataTypeList.length > 1) {
  1253. return;
  1254. }
  1255. getDictionary({
  1256. code: "data_type",
  1257. }).then((res) => {
  1258. res.data.data.forEach((element) => {
  1259. element.dictKey = Number(element.dictKey);
  1260. });
  1261. this.dataTypeList = res.data.data;
  1262. });
  1263. },
  1264. getTableTypelist() {
  1265. if (this.tableTypelist.length > 1) {
  1266. return;
  1267. }
  1268. getDictionary({
  1269. code: "table_type",
  1270. }).then((res) => {
  1271. res.data.data.forEach((element) => {
  1272. element.dictKey = Number(element.dictKey);
  1273. });
  1274. this.tableTypelist = res.data.data;
  1275. });
  1276. },
  1277. editeditElementFormMF () {//保存按钮
  1278. let da = []
  1279. let tag = true
  1280. console.log(this.tableTypelist,'tableTypelist');
  1281. this.formDatass.forEach(val => {
  1282. if (!val.tableName || !val.tableType || !val.tableOwner) {
  1283. tag = false
  1284. return
  1285. } else {
  1286. da.push({
  1287. id: val.id,
  1288. nodeName: val.tableName,
  1289. tableType: val.tableType,
  1290. tableOwner:val.tableOwner,
  1291. fillRate: val.fillRate,
  1292. Type:10
  1293. })
  1294. }
  1295. })
  1296. if (tag) {
  1297. this.updateBatchNodeTableInfoElement(da)
  1298. } else {
  1299. this.$message({
  1300. type: 'success',
  1301. message: '请填写完整元素表单的所有信息!',
  1302. })
  1303. }
  1304. },
  1305. async updateBatchNodeTableInfoElement (da) {//共有编辑元素
  1306. console.log(da,'编辑表单');
  1307. const { data: res } = await updateBatchNodeTableInfoElement(da)
  1308. if (res.code == 200) {
  1309. this.$message.success('操作成功');
  1310. this.editElementFormTag = false
  1311. this.onLoad1(this.page);
  1312. }
  1313. },
  1314. async excelType () {//清表类型
  1315. const { data: res } = await excelType({ code: 'sys_excltab_type' })
  1316. console.log(res);
  1317. if (res.code === 200) {
  1318. res.data.forEach(element => {
  1319. element.dictKey = Number(element.dictKey)
  1320. });
  1321. this.exceltypeData = res.data
  1322. }
  1323. },
  1324. //查看节点下已关联的元素表信息
  1325. searchNodeTables(id) {
  1326. searchNodeTables(id, this.from.id).then((res) => {
  1327. if (res.data.data.length > 0) {
  1328. res.data.data.forEach((val) => {
  1329. if (val.isLinkTable == 2) {
  1330. val.checknd = true;
  1331. } else {
  1332. val.checknd = false;
  1333. }
  1334. val.loading = false;
  1335. });
  1336. this.addTableData = res.data.data;
  1337. } else {
  1338. this.addTableData = [];
  1339. }
  1340. });
  1341. },
  1342. //编辑元素搜索相关
  1343. clearsearchinput(){
  1344. this.getselectPrivateFormElements()
  1345. },
  1346. searchinputChange(){
  1347. this.getselectPrivateFormElements()
  1348. }
  1349. },
  1350. created () {
  1351. this.getTableTypelist();
  1352. this.getOwnerTypelist();
  1353. this.getDataTypelist();
  1354. },
  1355. mounted () {
  1356. // this.heightss = this.$refs.rulesss.clientHeight
  1357. }
  1358. }
  1359. </script>
  1360. <style scoped lang="scss">
  1361. .marleft10 {
  1362. margin-left: 10px;
  1363. }
  1364. /deep/.el-tree-node__expand-icon {
  1365. font-size: 16px;
  1366. }
  1367. .colorblue {
  1368. color: rgb(0, 82, 217);
  1369. }
  1370. .treecontent /deep/.el-scrollbar {
  1371. height: 100%;
  1372. }
  1373. .el-scrollbar {
  1374. height: 100%;
  1375. }
  1376. .rightHeader {
  1377. display: flex;
  1378. justify-content: flex-start;
  1379. align-items: top;
  1380. font-size: 14px;
  1381. background-color: #fff;
  1382. .excelname {
  1383. box-sizing: border-box;
  1384. min-width: 200px;
  1385. height: 28px;
  1386. border: 1px solid rgb(220, 220, 220);
  1387. padding: 0 10px;
  1388. border-radius: 3px;
  1389. display: flex;
  1390. justify-content: space-between;
  1391. align-items: center;
  1392. }
  1393. }
  1394. .dialogModel {
  1395. .dialogBox {
  1396. .middle {
  1397. display: flex;
  1398. .left {
  1399. border: 1px solid rgb(220, 220, 220);
  1400. border-radius: 3px;
  1401. height: 500px;
  1402. width: 49%;
  1403. .select {
  1404. box-sizing: border-box;
  1405. display: flex;
  1406. justify-content: center;
  1407. padding: 5px 0;
  1408. border-bottom: 1px solid #e0e0e0;
  1409. }
  1410. .leftscroll {
  1411. height: 450px;
  1412. overflow-y: scroll;
  1413. }
  1414. }
  1415. .right {
  1416. height: auto;
  1417. height: 60px;
  1418. max-height: 500px;
  1419. margin-left: 2%;
  1420. // height: 500px;
  1421. border-radius: 3px;
  1422. td {
  1423. box-sizing: border-box;
  1424. padding: 5px 10px;
  1425. height: 30px;
  1426. line-height: 30px;
  1427. }
  1428. }
  1429. }
  1430. }
  1431. .btbox {
  1432. margin-top: 20px;
  1433. display: flex;
  1434. justify-content: center;
  1435. }
  1436. }
  1437. .rightBox {
  1438. flex: 1;
  1439. }
  1440. .boxswai{
  1441. height: 100%;
  1442. box-sizing: border-box;
  1443. padding-bottom: 10px;
  1444. }
  1445. /deep/.avue-crud__left{
  1446. width: 65% !important;
  1447. }
  1448. /deep/.el-input-group__append{
  1449. background-color: #ecf5ff;
  1450. color: #409EFF;
  1451. }
  1452. /deep/.el-input-group__append:hover{
  1453. background-color: #409EFF;
  1454. color: white;
  1455. }
  1456. /deep/.el-input-group__prepend:hover{
  1457. background-color: #409EFF;
  1458. color: white;
  1459. }
  1460. /deep/.el-input-group__append:active{
  1461. background-color: #9dc5ee;
  1462. color: white;
  1463. }
  1464. /deep/.el-input-group__prepend:active{
  1465. background-color: #9dc5ee;
  1466. color: white;
  1467. }
  1468. </style>