ProjectData.vue 62 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379
  1. <template>
  2. <!-- 供需项目数据维护 -->
  3. <div class="ProjectData">
  4. <div class="box">
  5. <div class="box-top">
  6. <el-form
  7. style="overflow: hidden;"
  8. :style="filterForm.show ? null : { height: '0px' }"
  9. size="mini"
  10. label-width="70px"
  11. >
  12. <el-row>
  13. <el-col :span="6">
  14. <el-form-item label="时间粒度">
  15. <el-select
  16. filterable clearable
  17. v-model="filterForm.data.timegranid"
  18. placeholder=""
  19. style="width: 100%;"
  20. >
  21. <el-option
  22. v-for="item of nameObj.timegranid.arr"
  23. :key="item.id"
  24. :value="item.id"
  25. :label="item.name"
  26. ></el-option>
  27. </el-select>
  28. </el-form-item>
  29. </el-col>
  30. <el-col :span="6">
  31. <el-form-item label="时间">
  32. <!-- <el-date-picker
  33. value-format="yyyy-MM-dd"
  34. v-model="filterForm.data.clock"
  35. type="date"
  36. placeholder=""
  37. style="width: 100%;"
  38. ></el-date-picker> -->
  39. <!-- <el-date-picker
  40. v-model="filterForm.data.timegranid"
  41. style="width: 100%;"
  42. type="daterange"
  43. range-separator="至"
  44. start-placeholder="开始日期"
  45. end-placeholder="结束日期">
  46. </el-date-picker> -->
  47. <zj-timegran-date
  48. v-model="filterForm.data.clock"
  49. style="width: 100%;"
  50. :type="'daterange'"
  51. :timegranId="filterForm.data.timegranid"
  52. :oneFoo="getTableData"
  53. :defaultOffset="-1"
  54. :custom="1"
  55. ></zj-timegran-date>
  56. </el-form-item>
  57. </el-col>
  58. <el-col :span="6">
  59. <el-form-item label="工序">
  60. <el-select
  61. filterable
  62. clearable
  63. multiple
  64. collapse-tags
  65. v-model="filterForm.data.workprocid"
  66. placeholder=""
  67. :disabled="filterForm.disabled.workprocid"
  68. style="width: 100%;"
  69. >
  70. <el-option
  71. v-for="item of nameObj.workprocid.arr"
  72. :key="item.id"
  73. :value="item.id"
  74. :label="item.name"
  75. ></el-option>
  76. </el-select>
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="6">
  80. <el-form-item label="能介">
  81. <el-select
  82. filterable
  83. clearable
  84. multiple
  85. collapse-tags
  86. v-model="filterForm.data.energyid"
  87. placeholder=""
  88. style="width: 100%;"
  89. >
  90. <el-option
  91. v-for="item of nameObj.energyid.arr"
  92. :key="item.id"
  93. :value="item.id"
  94. :label="item.name"
  95. ></el-option>
  96. </el-select>
  97. </el-form-item>
  98. </el-col>
  99. </el-row>
  100. <el-row>
  101. <el-col :span="6">
  102. <el-form-item label="属性">
  103. <el-select
  104. filterable
  105. clearable
  106. multiple
  107. collapse-tags
  108. v-model="filterForm.data.propertyid"
  109. placeholder=""
  110. style="width: 100%;"
  111. >
  112. <el-option
  113. v-for="item of nameObj.propertyid.arr"
  114. :key="item.id"
  115. :value="item.id"
  116. :label="item.name"
  117. ></el-option>
  118. </el-select>
  119. </el-form-item>
  120. </el-col>
  121. <el-col :span="6">
  122. <el-form-item label="项目编号">
  123. <el-tooltip content="精准查询,多个用逗号隔开" placement="bottom">
  124. <el-input clearable
  125. v-model.trim="filterForm.data.itemid"
  126. placeholder=""
  127. style="width: 100%;"
  128. @keyup.enter.native="getTableData(1)"
  129. ></el-input>
  130. </el-tooltip>
  131. </el-form-item>
  132. </el-col>
  133. <el-col :span="6">
  134. <el-form-item label="项目名称">
  135. <el-tooltip content="模糊查询" placement="bottom">
  136. <el-input clearable
  137. v-model.trim="filterForm.data.itemname"
  138. placeholder=""
  139. style="width: 100%;"
  140. @keyup.enter.native="getTableData(1)"
  141. ></el-input>
  142. </el-tooltip>
  143. </el-form-item>
  144. </el-col>
  145. <el-col :span="6">
  146. <el-form-item label="项目描述">
  147. <el-tooltip content="模糊查询" placement="bottom">
  148. <el-input clearable
  149. v-model.trim="filterForm.data.itemdesc"
  150. placeholder=""
  151. style="width: 100%;"
  152. @keyup.enter.native="getTableData(1)"
  153. ></el-input>
  154. </el-tooltip>
  155. </el-form-item>
  156. </el-col>
  157. </el-row>
  158. <el-row>
  159. <el-col :span="6">
  160. <el-form-item label="子公式编号">
  161. <el-tooltip content="精确查询" placement="bottom">
  162. <el-input clearable
  163. v-model.trim="filterForm.data.measureid"
  164. placeholder=""
  165. style="width: 100%;"
  166. @keyup.enter.native="getTableData(1)"
  167. ></el-input>
  168. </el-tooltip>
  169. </el-form-item>
  170. </el-col>
  171. <el-col :span="6">
  172. <el-form-item label="能介类型">
  173. <el-select
  174. multiple
  175. collapse-tags
  176. filterable
  177. clearable
  178. v-model="filterForm.data.energytypeid"
  179. placeholder="能介类型"
  180. style="width: 100%;"
  181. >
  182. <el-option
  183. v-for="item of nameObj.energytypeid.arr"
  184. :key="item.id"
  185. :value="item.id"
  186. :label="item.name"
  187. ></el-option>
  188. </el-select>
  189. </el-form-item>
  190. </el-col>
  191. </el-row>
  192. </el-form>
  193. <div class="box-top-gjl">
  194. <el-button
  195. class="button"
  196. type="primary"
  197. size="mini"
  198. @click="but_more()"
  199. >修改</el-button>
  200. <el-button
  201. class="button"
  202. type="primary"
  203. size="mini"
  204. icon="el-icon-refresh"
  205. @click="but_re_compute()"
  206. >重新计算</el-button>
  207. <el-button
  208. class="button"
  209. type="primary"
  210. size="mini"
  211. v-privilege="activeMenu + 'PUT'"
  212. @click="but_redata()"
  213. :loading="loading"
  214. >重新生成数据</el-button>
  215. <div style="float:right; text-align: right;">
  216. <el-tooltip content="每天早上7点45生成昨日数据" placement="left">
  217. <el-button
  218. class="button"
  219. type="primary"
  220. size="mini"
  221. icon="el-icon-search"
  222. v-privilege="activeMenu + 'QUERY'"
  223. @click="getTableData(1)"
  224. >查询</el-button>
  225. </el-tooltip>
  226. <el-button
  227. class="button"
  228. type="primary"
  229. size="mini"
  230. icon="el-icon-refresh"
  231. v-privilege="activeMenu + 'QUERY'"
  232. @click="tableDataCancel();"
  233. >重置</el-button>
  234. <el-button
  235. size="mini"
  236. :icon="filterForm.show ? 'el-icon-caret-top' : 'el-icon-caret-bottom'"
  237. :title="filterForm.show ? '收起搜索区' : '展开搜索区'"
  238. @click="filterForm.show = !filterForm.show;
  239. $nextTick(() => {
  240. singleTableHeight = getRoleHeight($refs['singleTable'].$el) - 45;
  241. }
  242. );"
  243. >{{ filterForm.show ? '收起' : '展开' }}</el-button>
  244. </div>
  245. </div>
  246. </div>
  247. <div class="box-bottom">
  248. <el-form
  249. size="mini"
  250. ref="dialog_form_arr"
  251. label-width="0px"
  252. :model="tableFormDataObj"
  253. >
  254. <el-table
  255. stripe
  256. id="singleTable"
  257. ref="singleTable"
  258. :data="tableData"
  259. v-loading="tableLoading"
  260. style="width: 100%;"
  261. :height="singleTableHeight"
  262. border
  263. size="mini"
  264. highlight-current-row
  265. @selection-change="handleSelectionChange"
  266. show-summary
  267. @cell-click="cellClick"
  268. :row-class-name="tableRowClassName"
  269. :summary-method="getSummaries">
  270. <el-table-column
  271. sortable
  272. type="selection"
  273. width="40"
  274. align="center"
  275. fixed="left"
  276. ></el-table-column>
  277. <el-table-column
  278. sortable
  279. prop="clock"
  280. label="时间"
  281. width="80px"
  282. :show-overflow-tooltip="true"
  283. ></el-table-column>
  284. <el-table-column
  285. sortable
  286. prop="timegranid"
  287. label="时间粒度"
  288. width="75px"
  289. :show-overflow-tooltip="true"
  290. >
  291. <template slot-scope="scope">
  292. <span>{{ nameObj.timegranid.obj[scope.row.timegranid] ? nameObj.timegranid.obj[scope.row.timegranid] : scope.row.timegranid }}</span>
  293. </template>
  294. </el-table-column>
  295. <el-table-column
  296. sortable
  297. prop="workprocid"
  298. label="工序"
  299. width="100px"
  300. :show-overflow-tooltip="true"
  301. :sort-by="function(row, index) { return sortFoo(row, index, 'workprocid') }"
  302. >
  303. <template slot-scope="scope">
  304. <span>{{ nameObj.workprocid.obj[scope.row.workprocid] ? nameObj.workprocid.obj[scope.row.workprocid] : scope.row.workprocid }}</span>
  305. </template>
  306. </el-table-column>
  307. <!-- <el-table-column
  308. sortable
  309. prop="energytypeid"
  310. label="能介类型"
  311. width="80px"
  312. :show-overflow-tooltip="true"
  313. > <template slot-scope="scope">
  314. <el-form-item
  315. v-if="scope.row.isSelection"
  316. :prop="scope.row.id + '.energytypeid'"
  317. :rules="dialog.editorBox.form.rules.energytypeid"
  318. >
  319. <el-select
  320. filterable
  321. clearable
  322. style="width: 100%;"
  323. v-model="tableFormDataObj[scope.row.id].energytypeid"
  324. >
  325. <el-option
  326. v-for="item of nameObj.energytypeid.arr"
  327. :key="item.id"
  328. :value="item.id"
  329. :label="item.name"
  330. ></el-option>
  331. </el-select>
  332. <template
  333. slot="error"
  334. slot-scope="scope"
  335. >
  336. <p
  337. class="error"
  338. :title="scope.error"
  339. >{{ scope.error }}</p>
  340. </template>
  341. </el-form-item>
  342. <span v-else>{{ nameObj.energytypeid.obj[scope.row.energytypeid] ? nameObj.energytypeid.obj[scope.row.energytypeid] : scope.row.energytypeid }}</span>
  343. </template>
  344. </el-table-column> -->
  345. <el-table-column
  346. sortable
  347. prop="energyid"
  348. label="能介"
  349. width="80px"
  350. :show-overflow-tooltip="true"
  351. :sort-by="function(row, index) { return sortFoo(row, index, 'energyid') }"
  352. >
  353. <template slot-scope="scope">
  354. <span>{{ nameObj.energyid.obj[scope.row.energyid] ? nameObj.energyid.obj[scope.row.energyid] : scope.row.energyid }}</span>
  355. </template>
  356. </el-table-column>
  357. <el-table-column
  358. sortable
  359. prop="propertyid"
  360. label="属性"
  361. width="58px"
  362. :show-overflow-tooltip="true"
  363. :sort-by="function(row, index) { return sortFoo(row, index, 'propertyid') }"
  364. >
  365. <template slot-scope="scope">
  366. <span>{{ nameObj.propertyid.obj[scope.row.propertyid] ? nameObj.propertyid.obj[scope.row.propertyid] : scope.row.propertyid }}</span>
  367. </template>
  368. </el-table-column>
  369. <el-table-column
  370. sortable
  371. prop="itemname"
  372. label="项目名称"
  373. min-width="175px"
  374. :show-overflow-tooltip="true"
  375. ></el-table-column>
  376. <el-table-column
  377. sortable
  378. prop="itemdesc"
  379. label="项目描述"
  380. min-width="120px"
  381. :show-overflow-tooltip="true"
  382. ></el-table-column>
  383. <el-table-column
  384. sortable
  385. prop="actualvalue"
  386. label="计算值"
  387. width="110px"
  388. :show-overflow-tooltip="true"
  389. ></el-table-column>
  390. <el-table-column
  391. sortable
  392. prop="correctvalue"
  393. label="修正值"
  394. width="100px"
  395. :show-overflow-tooltip="true"
  396. >
  397. <template slot-scope="scope">
  398. <el-form-item
  399. v-if="scope.row.isSelection"
  400. :prop="scope.row.itemid + '-' + scope.row.clock + '-' + scope.row.timegranid + '.correctvalue'"
  401. :rules="tableFormRules.correctvalue"
  402. >
  403. <el-input clearable
  404. style="width: 100%;"
  405. v-model="tableFormDataObj[scope.row.itemid + '-' + scope.row.clock + '-' + scope.row.timegranid].correctvalue"
  406. refcous="true"
  407. @change="getApportvalue(scope.row.itemid + '-' + scope.row.clock + '-' + scope.row.timegranid)"
  408. @keydown.native="keyDown" :id="scope.$index + scope.column.id"
  409. ></el-input>
  410. <template slot="error" slot-scope="scope">
  411. <p class="error" :title="scope.error">{{ scope.error }}</p>
  412. </template>
  413. </el-form-item>
  414. <span v-else>{{scope.row.correctvalue}}</span>
  415. </template>
  416. </el-table-column>
  417. <el-table-column
  418. sortable
  419. prop="apportvalue"
  420. label="最终值"
  421. width="130px"
  422. :show-overflow-tooltip="true"
  423. >
  424. <template slot-scope="scope">
  425. <el-form-item
  426. v-if="scope.row.isSelection"
  427. :prop="scope.row.itemid + '-' + scope.row.clock + '-' + scope.row.timegranid + '.apportvalue'"
  428. :rules="tableFormRules.apportvalue"
  429. >
  430. <el-input clearable
  431. style="width: 100%;"
  432. v-model="tableFormDataObj[scope.row.itemid + '-' + scope.row.clock + '-' + scope.row.timegranid].apportvalue"
  433. refcous="true"
  434. @change="getCorrectvalue(scope.row.itemid + '-' + scope.row.clock + '-' + scope.row.timegranid)"
  435. @keydown.native="keyDown" :id="scope.$index + scope.column.id"
  436. ></el-input>
  437. <template slot="error" slot-scope="scope">
  438. <p class="error" :title="scope.error">{{ scope.error }}</p>
  439. </template>
  440. </el-form-item>
  441. <span v-else>{{scope.row.apportvalue}}</span>
  442. </template>
  443. </el-table-column>
  444. <el-table-column
  445. sortable
  446. prop="stdvalue"
  447. label="折标值"
  448. width="110px"
  449. :show-overflow-tooltip="true"
  450. ></el-table-column>
  451. <!-- <el-table-column
  452. sortable
  453. prop="sumvalue"
  454. label="累计值"
  455. min-width="100px"
  456. :show-overflow-tooltip="true"
  457. ></el-table-column>
  458. <el-table-column
  459. sortable
  460. prop="sumstdvalue"
  461. label="累计折标值"
  462. min-width="100px"
  463. :show-overflow-tooltip="true"
  464. ></el-table-column> -->
  465. <el-table-column
  466. sortable
  467. prop="ucvalue"
  468. label="单耗值"
  469. width="100px"
  470. :show-overflow-tooltip="true"
  471. ></el-table-column>
  472. <!-- <el-table-column
  473. sortable
  474. prop="sumucvalue"
  475. label="累计单耗值"
  476. min-width="100px"
  477. :show-overflow-tooltip="true"
  478. ></el-table-column> -->
  479. <el-table-column
  480. sortable
  481. prop="productvalue"
  482. label="实绩产量"
  483. width="100px"
  484. :show-overflow-tooltip="true"
  485. ></el-table-column>
  486. <el-table-column
  487. sortable
  488. prop="unitid"
  489. label="单位"
  490. width="60px"
  491. :show-overflow-tooltip="true"
  492. >
  493. <template slot-scope="scope">
  494. <span>{{ nameObj.unitid.obj[scope.row.unitid] ? nameObj.unitid.obj[scope.row.unitid] : scope.row.unitid }}</span>
  495. </template>
  496. </el-table-column>
  497. <el-table-column
  498. sortable
  499. prop="itemid"
  500. label="项目编号"
  501. width="105px"
  502. :show-overflow-tooltip="true"
  503. ></el-table-column>
  504. <el-table-column
  505. sortable
  506. prop="rectime"
  507. label="创建时间"
  508. width="125px"
  509. :show-overflow-tooltip="true"
  510. ></el-table-column>
  511. <el-table-column
  512. sortable
  513. prop="updateUser"
  514. label="修改人"
  515. width="80px"
  516. :show-overflow-tooltip="true"
  517. ></el-table-column>
  518. <el-table-column
  519. sortable
  520. prop="updateTime"
  521. label="修改时间"
  522. width="120px"
  523. :show-overflow-tooltip="true"
  524. ></el-table-column>
  525. <el-table-column
  526. sortable
  527. class-name="gn-TableDownloadExcel-none"
  528. label="操作"
  529. align="center"
  530. width="86px"
  531. fixed="right"
  532. >
  533. <template slot-scope="scope">
  534. <div>
  535. <!-- <el-button
  536. type="primary"
  537. size="mini"
  538. v-privilege="activeMenu + 'PUT'"
  539. @click="but_edit(scope.row)"
  540. >修改</el-button> -->
  541. <el-button
  542. type="primary"
  543. size="mini"
  544. v-privilege="activeMenu + 'QUERY'"
  545. @click="but_sdata(scope.row)"
  546. >计算过程</el-button>
  547. </div>
  548. </template>
  549. </el-table-column>
  550. </el-table>
  551. </el-form>
  552. <el-pagination
  553. layout="total, sizes, prev, pager, next, jumper"
  554. :total="total"
  555. :page-sizes="[10, 20, 50, 100, 500, 1000]"
  556. :page-size="pageSize"
  557. :current-page.sync="pageNum"
  558. @size-change="tableSizeChange"
  559. @current-change="getTableData()"
  560. style="text-align: right;margin-top: 10px;"
  561. ></el-pagination>
  562. </div>
  563. </div>
  564. <el-dialog
  565. :title="'数据信息 - ' + (dialog.editorBox.type === 'add' ? '新增' : '修改')"
  566. :visible.sync="dialog.editorBox.show"
  567. width="300px"
  568. :close-on-click-modal="false"
  569. :show-close="!loading"
  570. >
  571. <div>
  572. <el-form
  573. ref="dialog_form"
  574. :model="dialog.editorBox.form.data"
  575. :rules="dialog.editorBox.form.rules"
  576. size="mini"
  577. label-width="60px"
  578. >
  579. <el-form-item label="计算值">
  580. <el-input clearable
  581. style="width: 100%;"
  582. v-model="dialog.editorBox.form.data.actualvalue"
  583. readonly
  584. ></el-input>
  585. </el-form-item>
  586. <el-form-item
  587. label="修正值"
  588. prop="correctvalue"
  589. >
  590. <el-input clearable
  591. style="width: 100%;"
  592. v-model="dialog.editorBox.form.data.correctvalue"
  593. @change="dialog.editorBox.form.data.apportvalue = floatComputed(dialog.editorBox.form.data.actualvalue, dialog.editorBox.form.data.correctvalue, '+')"
  594. ></el-input>
  595. </el-form-item>
  596. <el-form-item
  597. label="最终值"
  598. prop="apportvalue"
  599. >
  600. <el-input clearable
  601. style="width: 100%;"
  602. v-model="dialog.editorBox.form.data.apportvalue"
  603. @change="dialog.editorBox.form.data.correctvalue = floatComputed(dialog.editorBox.form.data.apportvalue, dialog.editorBox.form.data.actualvalue, '-')"
  604. ></el-input>
  605. </el-form-item>
  606. </el-form>
  607. </div>
  608. <span
  609. slot="footer"
  610. class="dialog-footer"
  611. >
  612. <el-button
  613. @click="dialog.editorBox.show = false"
  614. :loading="loading"
  615. >取 消</el-button>
  616. <el-button
  617. type="primary"
  618. @click="dataSave"
  619. :loading="loading"
  620. >保 存</el-button>
  621. </span>
  622. </el-dialog>
  623. </div>
  624. </template>
  625. <script>
  626. import { zCheckNumber1 } from '~/utils/validator.js'
  627. import store from '@/store/index.js';
  628. import timegranDate from '~/components/zg/timegranDate.vue'
  629. import {formatDate, XtcommonSummaries} from '@/utils/util.js';
  630. export default {
  631. name: 'ProjectData',
  632. components: {
  633. 'zj-timegran-date': timegranDate
  634. },
  635. data () {
  636. return {
  637. multipleSelection: [],
  638. tableFormDataObj: {},
  639. store,
  640. userInfo: {
  641. data: null
  642. },
  643. activeMenu: '',
  644. filterForm: {
  645. show: true,
  646. data: {
  647. timegranid: '',
  648. clock: '',
  649. workprocid: '',
  650. energyid: '',
  651. propertyid: '',
  652. itemid: '',
  653. itemname: '',
  654. itemdesc: '',
  655. measureid: '',
  656. energytypeid: ''
  657. },
  658. rules: {
  659. },
  660. disabled: {
  661. workprocid: false
  662. }
  663. },
  664. tableFormRules: {
  665. numbers: [
  666. // { required: true, message: '该项不能为空', trigger: 'change' },
  667. { validator: zCheckNumber1, trigger: 'change' }
  668. ],
  669. correctvalue: [
  670. // { required: true, message: '该项不能为空', trigger: 'change' },
  671. { validator: zCheckNumber1, trigger: 'change' }
  672. ],
  673. apportvalue: [
  674. // { required: true, message: '该项不能为空', trigger: 'change' },
  675. { validator: zCheckNumber1, trigger: 'change' }
  676. ]
  677. },
  678. pageNum: 1,
  679. pageSize: 20,
  680. total: 0,
  681. singleTableHeight: 100,
  682. tableData: [
  683. // {
  684. // itemid: '06090001012R',
  685. // itemname: '供水原水实绩发生量',
  686. // unitid: '吨',
  687. // actualvalue: '47418',
  688. // correctvalue: '0',
  689. // apportvalue: '47418',
  690. // stdvalue: '0',
  691. // sumvalue: '1106342',
  692. // ucvalue: '',
  693. // sumucvalue: '',
  694. // productvalue: '',
  695. // rectime: '20171017134639'
  696. // }
  697. ],
  698. nameObj: {
  699. timegranid: {
  700. obj: {},
  701. arr: []
  702. },
  703. workprocid: {
  704. obj: {},
  705. arr: []
  706. },
  707. energyid: {
  708. obj: {},
  709. arr: []
  710. },
  711. propertyid: {
  712. obj: {},
  713. arr: []
  714. },
  715. unitid: {
  716. obj: {},
  717. arr: []
  718. },
  719. energytypeid: {
  720. obj: {},
  721. arr: []
  722. }
  723. },
  724. loading: false,
  725. tableLoading: false,
  726. dialog: {
  727. editorBox: {
  728. show: false,
  729. type: '',
  730. form: {
  731. data: {
  732. itemid: '',
  733. clock: '',
  734. timegranid: '',
  735. actualvalue: '',
  736. correctvalue: '',
  737. apportvalue: ''
  738. },
  739. rules: {
  740. correctvalue: [
  741. { required: true, message: '该项不能为空', trigger: 'change' },
  742. { validator: zCheckNumber1, trigger: 'change' }
  743. ],
  744. apportvalue: [
  745. { required: true, message: '该项不能为空', trigger: 'change' },
  746. { validator: zCheckNumber1, trigger: 'change' }
  747. ]
  748. }
  749. }
  750. }
  751. },
  752. rowIndex: '',
  753. columnId: '',
  754. seqArr: [],
  755. focusTarget: null,
  756. editSetFlag: '',
  757. }
  758. },
  759. created () {
  760. this.activeMenu = window.localStorage.getItem('activeMenu');
  761. },
  762. mounted () {
  763. let that = this;
  764. window.PEDataObj = {
  765. // 将数据绑定到window上,供main页面使用
  766. vm: that,
  767. // tableArr:用于导出成Excel的表格的信息
  768. tableArr: [
  769. {
  770. name: '',
  771. id: 'singleTable'
  772. }
  773. ]
  774. };
  775. that.$nextTick(() => {
  776. // 立即获取的height有一定偏差,通过setTimeout延迟来解决
  777. setTimeout(() => {
  778. that.singleTableHeight = that.getRoleHeight(that.$refs['singleTable'].$el) - 45;
  779. }, 1);
  780. });
  781. that.store.dispatch('getUserInfo').then((res) => {
  782. that.userInfo.data = res.data;
  783. });
  784. // 接收路由参数
  785. if (that.$route.query.workprocid) {
  786. that.filterForm.disabled.workprocid = true;
  787. that.filterForm.data.workprocid = that.$route.query.workprocid.split(',');
  788. }
  789. that.getTimeGranData();
  790. that.getWorkprocIdData();
  791. that.getEnergyIdData();
  792. that.getPropertyIdData();
  793. that.getUnitIdData();
  794. that.getEnergyTypeIdData();
  795. // that.getTableData();
  796. },
  797. methods: {
  798. // 计算树区域高度
  799. getRoleHeight (dom) {
  800. return window.innerHeight - dom.offsetTop;
  801. },
  802. // 用于表格特殊列的过滤方法(:sort-by="function(row, index) { return sortFoo() }")
  803. sortFoo (row, index, objName, name) {
  804. name = name || objName;
  805. let s = this.nameObj[objName].obj[row[name]] ? this.nameObj[objName].obj[row[name]] : row[name];
  806. return s;
  807. },
  808. // 自定义的表格合计方法:只给指定列进行合计
  809. getSummaries (param) {
  810. const prop = ['actualvalue', 'correctvalue', 'apportvalue', 'sumvalue']; // 合计列绑定的prop
  811. return XtcommonSummaries(param, prop);
  812. },
  813. // 获取时间粒度(数据维护)
  814. getTimeGranData () {
  815. let that = this
  816. let url = 'pass/ems/v1/tcmdatasourcetimegrans/getTimegranRmTrmactvalue';
  817. that.axios.get(url)
  818. .then(function (res) {
  819. if (res.code === '0') {
  820. let arr = [];
  821. let obj = {};
  822. for (let item of res.data) {
  823. arr.push({
  824. id: item.ID,
  825. name: item.NAME
  826. })
  827. obj[item.ID] = item.NAME;
  828. that.filterForm.data.timegranid = that.filterForm.data.timegranid ? that.filterForm.data.timegranid : item.ID;
  829. }
  830. that.nameObj.timegranid.arr = arr;
  831. that.nameObj.timegranid.obj = obj;
  832. } else {
  833. that.$message.error(res.message);
  834. }
  835. });
  836. },
  837. // 获取工序(供需实际)
  838. getWorkprocIdData () {
  839. let that = this
  840. let url = 'pass/ems/v1/trmworkprocs/getIdAndName?isreal=1';
  841. that.axios.get(url)
  842. .then(function (res) {
  843. if (res.code === '0') {
  844. let arr = [];
  845. let obj = {};
  846. for (let item of res.data) {
  847. arr.push({
  848. id: item.id,
  849. name: item.name
  850. })
  851. obj[item.id] = item.name;
  852. }
  853. that.nameObj.workprocid.arr = arr;
  854. that.nameObj.workprocid.obj = obj;
  855. } else {
  856. that.$message.error(res.message);
  857. }
  858. });
  859. },
  860. // 获取能介(供需实际)
  861. getEnergyIdData () {
  862. let that = this
  863. let url = 'pass/ems/v1/trmenergys/selectNameAndId/?isreal=1';
  864. that.axios.get(url)
  865. .then(function (res) {
  866. if (res.code === '0') {
  867. let arr = [];
  868. let obj = {};
  869. for (let item of res.data) {
  870. arr.push({
  871. id: item.id,
  872. name: item.name
  873. })
  874. obj[item.id] = item.name;
  875. }
  876. that.nameObj.energyid.arr = arr;
  877. that.nameObj.energyid.obj = obj;
  878. } else {
  879. that.$message.error(res.message);
  880. }
  881. });
  882. },
  883. // 获取属性
  884. getPropertyIdData () {
  885. let that = this
  886. let url = 'pass/ems/v1/trmenergypropertys/getidandname/';
  887. that.axios.get(url)
  888. .then(function (res) {
  889. if (res.code === '0') {
  890. let arr = [];
  891. let obj = {};
  892. for (let item of res.data) {
  893. arr.push({
  894. id: item.id,
  895. name: item.name
  896. })
  897. obj[item.id] = item.name;
  898. }
  899. that.nameObj.propertyid.arr = arr;
  900. that.nameObj.propertyid.obj = obj;
  901. } else {
  902. that.$message.error(res.message);
  903. }
  904. });
  905. },
  906. // 获取标准计量单位
  907. getUnitIdData () {
  908. let that = this
  909. let url = 'pass/ems/v1/trmunits/getIdAndName';
  910. that.axios.get(url)
  911. .then(function (res) {
  912. if (res.code === '0') {
  913. let arr = [];
  914. let obj = {};
  915. for (let item of res.data) {
  916. arr.push({
  917. id: item.id,
  918. name: item.name
  919. })
  920. obj[item.id] = item.name;
  921. if (item.name === '吨') {
  922. that.nameObj.unitid.defaults = that.nameObj.unitid.defaults ? that.nameObj.unitid.defaults : item.id;
  923. }
  924. }
  925. that.nameObj.unitid.arr = arr;
  926. that.nameObj.unitid.obj = obj;
  927. } else {
  928. that.$message.error(res.message);
  929. }
  930. });
  931. },
  932. // 获取表格中的数据
  933. getTableData (pageNum) {
  934. let that = this,
  935. params = {
  936. timegranid: that.filterForm.data.timegranid,
  937. // clock: that.filterForm.data.clock,
  938. startDate: that.filterForm.data.clock[0],
  939. endDate: that.filterForm.data.clock[1],
  940. workprocid: that.filterForm.data.workprocid.toString(),
  941. energyid: that.filterForm.data.energyid.toString(),
  942. propertyid: that.filterForm.data.propertyid.toString(),
  943. itemid: that.filterForm.data.itemid,
  944. itemname: that.filterForm.data.itemname,
  945. itemdesc: that.filterForm.data.itemdesc,
  946. measureid: that.filterForm.data.measureid,
  947. energytypeid: that.filterForm.data.energytypeid.toString()
  948. };
  949. that.pageNum = pageNum || that.pageNum;
  950. that.tableLoading = true;
  951. let url = 'pass/ems/v1/trmactitems/getActitemDetaltsForPage/?pageNum=' + that.pageNum + '&pageSize=' + that.pageSize + '&itemtype=R';
  952. that.axios.get(url, {
  953. params: params
  954. })
  955. .then(function (res) {
  956. if (res.code === '0') {
  957. let arr = [];
  958. let i = 0;
  959. for (let item of res.data.list) {
  960. arr.push({
  961. itemid: item.ITEMID,
  962. clock: item.CLOCK,
  963. timegranid: item.TIMEGRANID,
  964. itemname: item.ITEMNAME,
  965. itemdesc: item.ITEMDESC,
  966. unitid: item.UNITID,
  967. actualvalue: item.ACTUALVALUE,
  968. correctvalue: item.CORRECTVALUE,
  969. apportvalue: item.APPORTVALUE,
  970. stdvalue: item.STDVALUE,
  971. sumvalue: item.SUMVALUE,
  972. sumstdvalue: item.SUMSTDVALUE,
  973. ucvalue: item.UCVALUE,
  974. sumucvalue: item.SUMUCVALUE,
  975. productvalue: item.PRODUCTVALUE,
  976. rectime: item.REC_TIME,
  977. workprocid: item.WORKPROCID,
  978. energyid: item.ENERGYID,
  979. propertyid: item.PROPERTYID,
  980. seqno: item.SEQNO,
  981. updateUser: item.USERID,
  982. updateTime: item.UPTIME,
  983. fid: item.FID,
  984. seq: i
  985. // 修改时间
  986. })
  987. i ++;
  988. }
  989. that.tableData = arr;
  990. that.total = res.data.total;
  991. } else {
  992. that.$message.error(res.message);
  993. }
  994. that.tableLoading = false;
  995. }).catch(function () {
  996. that.tableLoading = false;
  997. });
  998. },
  999. // 改变表格显示条数
  1000. tableSizeChange (val) {
  1001. let that = this;
  1002. that.pageSize = val;
  1003. that.getTableData(1);
  1004. },
  1005. // 重置搜索
  1006. tableDataCancel () {
  1007. let that = this;
  1008. that.filterForm.data.timegranid = '';
  1009. that.filterForm.data.clock = '';
  1010. that.filterForm.data.workprocid = '';
  1011. that.filterForm.data.energyid = '';
  1012. that.filterForm.data.propertyid = '';
  1013. that.filterForm.data.itemid = '';
  1014. that.filterForm.data.itemname = '';
  1015. that.filterForm.data.itemdesc = '';
  1016. that.getTableData(1);
  1017. },
  1018. but_edit (row) {
  1019. let that = this;
  1020. that.dialog.editorBox.form.data.itemid = row.itemid;
  1021. that.dialog.editorBox.form.data.clock = row.clock;
  1022. that.dialog.editorBox.form.data.timegranid = row.timegranid;
  1023. that.dialog.editorBox.form.data.actualvalue = row.actualvalue;
  1024. that.dialog.editorBox.form.data.correctvalue = row.correctvalue;
  1025. that.dialog.editorBox.form.data.apportvalue = row.apportvalue;
  1026. that.dialog.editorBox.form.data.fid = row.fid;
  1027. that.dialog.editorBox.type = 'edit';
  1028. that.dialog.editorBox.show = true;
  1029. },
  1030. dataSave () {
  1031. let that = this;
  1032. let SubmitData = {
  1033. itemid: that.dialog.editorBox.form.data.itemid,
  1034. clock: that.dialog.editorBox.form.data.clock,
  1035. timegranid: that.dialog.editorBox.form.data.timegranid,
  1036. correctvalue: that.dialog.editorBox.form.data.correctvalue,
  1037. apportvalue: that.dialog.editorBox.form.data.apportvalue,
  1038. update_user: that.userInfo.data.userCode,
  1039. fid: that.dialog.editorBox.form.data.fid
  1040. };
  1041. that.$refs['dialog_form'].validate((valid) => {
  1042. if (valid) {
  1043. that.loading = true;
  1044. that.axios.put('pass/ems/v1/trmactvalues/update', SubmitData)
  1045. .then(function (res) {
  1046. if (res.code === '0') {
  1047. that.$message({
  1048. message: '修改成功',
  1049. type: 'success'
  1050. });
  1051. that.getTableData();
  1052. that.dialog.editorBox.show = false;
  1053. } else {
  1054. that.$message.error(res.message);
  1055. }
  1056. that.loading = false;
  1057. }).catch(function () {
  1058. that.loading = false;
  1059. });
  1060. }
  1061. });
  1062. },
  1063. // 计算最终值
  1064. getApportvalue (ids) {
  1065. let that = this;
  1066. let apportvalue = that.floatComputed(that.tableFormDataObj[ids].actualvalue, that.tableFormDataObj[ids].correctvalue, '+');
  1067. that.tableFormDataObj[ids].apportvalue = apportvalue;
  1068. },
  1069. // 计算修正值
  1070. getCorrectvalue (ids) {
  1071. let that = this;
  1072. let correctvalue = that.floatComputed(that.tableFormDataObj[ids].apportvalue, that.tableFormDataObj[ids].actualvalue, '-');
  1073. that.tableFormDataObj[ids].correctvalue = correctvalue;
  1074. },
  1075. // 批量重新计算
  1076. but_re_compute () {
  1077. let that = this;
  1078. if (that.multipleSelection.length > 0) {
  1079. that.$refs['dialog_form_arr'].validate((valid) => {
  1080. if (valid) {
  1081. let SubmitData = [];
  1082. for (let key in that.tableFormDataObj) {
  1083. SubmitData.push({
  1084. clock: that.tableFormDataObj[key].clock,
  1085. timegranid: that.tableFormDataObj[key].timegranid,
  1086. itemid: that.tableFormDataObj[key].itemid
  1087. });
  1088. }
  1089. that.loading = true;
  1090. that.axios.put('pass/ems/v1/trmactvalues/batchCompute', SubmitData)
  1091. .then(function (res) {
  1092. if (res.code === '0') {
  1093. that.$message({
  1094. message: '重新生成数据成功',
  1095. type: 'success'
  1096. });
  1097. that.getTableData();
  1098. that.dialog.editorBox.show = false;
  1099. } else {
  1100. that.$message.error(res.message);
  1101. }
  1102. that.loading = false;
  1103. }).catch(function () {
  1104. that.loading = false;
  1105. });
  1106. }
  1107. });
  1108. } else {
  1109. this.$message.error('至少要选择一条数据');
  1110. }
  1111. },
  1112. // 批量修改
  1113. but_more () {
  1114. let that = this;
  1115. let url = 'pass/ems/v1/trmactvalues/batchupdate';
  1116. let submitData = [];
  1117. for (let obj in that.tableFormDataObj) {
  1118. submitData.push({
  1119. itemid: that.tableFormDataObj[obj].itemid,
  1120. clock: that.tableFormDataObj[obj].clock,
  1121. timegranid: that.tableFormDataObj[obj].timegranid,
  1122. correctvalue: that.tableFormDataObj[obj].correctvalue,
  1123. apportvalue: that.tableFormDataObj[obj].apportvalue,
  1124. fid: that.tableFormDataObj[obj].fid,
  1125. update_user: that.userInfo.data.userCode
  1126. })
  1127. }
  1128. that.axios.put(url, submitData)
  1129. .then(function (res) {
  1130. if (res.code === '0') {
  1131. that.$message({
  1132. message: '修改成功',
  1133. type: 'success'
  1134. });
  1135. that.getTableData();
  1136. that.dialog.editorBox.show = false;
  1137. } else {
  1138. that.$message.error(res.message);
  1139. }
  1140. that.loading = false;
  1141. }).catch(function () {
  1142. that.loading = false;
  1143. });
  1144. },
  1145. // 表格中多选按钮的相关方法
  1146. handleSelectionChange (val) {
  1147. let that = this;
  1148. let tableFormDataObj = {};
  1149. let arr = [];
  1150. for (let item of val) {
  1151. arr.push(item.seq);
  1152. }
  1153. this.seqArr = arr.sort(sortNumber);
  1154. for (let item of that.tableData) {
  1155. item.isSelection = false;
  1156. }
  1157. for (let item of val) {
  1158. let obj = {};
  1159. let xId = item.itemid + '-' + item.clock + '-' + item.timegranid;
  1160. if (that.tableFormDataObj[xId]) {
  1161. tableFormDataObj[xId] = that.tableFormDataObj[xId];
  1162. } else {
  1163. for (let key in item) {
  1164. obj[key] = item[key];
  1165. }
  1166. tableFormDataObj[xId] = obj;
  1167. }
  1168. item.isSelection = true;
  1169. }
  1170. that.tableFormDataObj = tableFormDataObj;
  1171. that.multipleSelection = val;
  1172. },
  1173. // 重新生成数据
  1174. but_redata () {
  1175. let that = this;
  1176. if (!that.filterForm.data.clock || that.filterForm.data.clock.length === 0) {
  1177. that.$message.warning('请选择日期范围');
  1178. return true;
  1179. }
  1180. if (!that.filterForm.data.clock[0] || !that.filterForm.data.clock[1]) {
  1181. that.$message.warning('请选择开始日期与结束日期');
  1182. return true;
  1183. }
  1184. if (!that.filterForm.data.timegranid) {
  1185. that.$message.warning('请选择时间粒度');
  1186. return true;
  1187. }
  1188. let params = {
  1189. timegranid: that.filterForm.data.timegranid,
  1190. clock: that.filterForm.data.clock[0], // 开始时间
  1191. clocke: that.filterForm.data.clock[1], // 结束时间
  1192. workprocid: that.filterForm.data.workprocid.toString(), // 工序
  1193. energyid: that.filterForm.data.energyid.toString(), // 能介
  1194. propertyid: that.filterForm.data.propertyid.toString(), // 用能属性
  1195. itemid: that.filterForm.data.itemid, // 项目编号
  1196. itemname: that.filterForm.data.itemname, // 项目名称
  1197. itemdesc: that.filterForm.data.itemdesc, // 项目描述
  1198. measureid: that.filterForm.data.measureid // 公式编号
  1199. };
  1200. that.$confirm('是否重新生成数据?日期跨度不易太长!否则运行时间较长', '提示', {
  1201. confirmButtonText: '确定',
  1202. cancelButtonText: '取消',
  1203. state: 'warning'
  1204. }).then(() => {
  1205. that.loading = true;
  1206. let url = 'pass/ems/v1/trmactvalues/reData'
  1207. that.axios.get(url, {
  1208. params: params
  1209. })
  1210. .then(function (res) {
  1211. if (res.code === '0') {
  1212. if (res.message && res.message !== '操作成功') {
  1213. that.$message.warning('重新生成数据成功, 其中【' + res.message + '】');
  1214. } else {
  1215. that.$message({
  1216. message: '重新生成数据成功',
  1217. type: 'success'
  1218. });
  1219. }
  1220. that.getTableData();
  1221. } else {
  1222. that.$message.error(res.message);
  1223. }
  1224. that.loading = false;
  1225. }).catch(function () {
  1226. that.loading = false;
  1227. });
  1228. }).catch(() => {
  1229. });
  1230. },
  1231. // 计算过程
  1232. but_sdata (row) {
  1233. let that = this;
  1234. let params = {
  1235. timegranid: row.timegranid,
  1236. clock: row.clock, // 开始时间
  1237. itemid: row.itemid // 项目编号
  1238. };
  1239. that.axios.get('pass/ems/v1/formulas/getAnaByVal/', {
  1240. params: params
  1241. }).then(function (res) {
  1242. if (res.code === '0') {
  1243. that.$message({
  1244. dangerouslyUseHTMLString: true,
  1245. message: res.data,
  1246. type: 'success'
  1247. });
  1248. } else {
  1249. that.$message.error(res.message);
  1250. }
  1251. }).catch(function () {});
  1252. },
  1253. // 获取能介类型
  1254. getEnergyTypeIdData () {
  1255. let that = this
  1256. let url = 'pass/ems/v1/trmenergytypes/selectNameAndId/';
  1257. that.axios.get(url)
  1258. .then(function (res) {
  1259. if (res.code === '0') {
  1260. let arr = [];
  1261. let obj = {};
  1262. for (let item of res.data) {
  1263. arr.push({
  1264. id: item.id,
  1265. name: item.name
  1266. })
  1267. obj[item.id] = item.name;
  1268. }
  1269. that.nameObj.energytypeid.arr = arr;
  1270. that.nameObj.energytypeid.obj = obj;
  1271. } else {
  1272. that.$message.error(res.message);
  1273. }
  1274. });
  1275. },
  1276. tableRowClassName ({row, rowIndex}) {
  1277. // 把每一行的索引放进row
  1278. row.index = rowIndex;
  1279. },
  1280. cellClick (row, column, cell, event) {
  1281. let _this = this;
  1282. this.rowIndex = row.index;
  1283. this.columnId = column.id;
  1284. _this.editSetFlag = row.index + column.id;
  1285. _this.focusTarget = event.target;
  1286. while (_this.focusTarget.tagName !== 'TD') {
  1287. _this.focusTarget = _this.focusTarget.parentElement;
  1288. }
  1289. _this.$nextTick(() => {
  1290. let target = this.focusTarget;
  1291. $(target).find('input').focus();
  1292. });
  1293. },
  1294. keyDown (event1) {
  1295. let tdTarget = event1.target;
  1296. let _this = this;
  1297. while (tdTarget.tagName !== 'TD') {
  1298. tdTarget = tdTarget.parentElement;
  1299. }
  1300. // 如果按下键盘下键或者回车键
  1301. if (event.keyCode === 40 || event.keyCode === 13) {
  1302. let index = parseInt(this.rowIndex);
  1303. if (index !== this.seqArr[this.seqArr.length - 1]) {
  1304. for (let i = 0; i < this.seqArr.length; i++) {
  1305. if (index === this.seqArr[i]) {
  1306. index = this.seqArr[i + 1];
  1307. break;
  1308. }
  1309. }
  1310. }
  1311. this.editSetFlag = index + this.columnId;
  1312. let id = '#' + this.editSetFlag;
  1313. this.$nextTick(() => {
  1314. $(id).click();
  1315. });
  1316. } else if (event.keyCode === 38) { // 键盘上键
  1317. let index = parseInt(this.rowIndex);
  1318. if (index !== this.seqArr[0]) {
  1319. for (let i = 0; i < this.seqArr.length; i++) {
  1320. if (index === this.seqArr[i]) {
  1321. index = this.seqArr[i - 1];
  1322. break;
  1323. }
  1324. }
  1325. }
  1326. this.editSetFlag = index + this.columnId;
  1327. let id = '#' + this.editSetFlag;
  1328. this.$nextTick(() => {
  1329. $(id).click();
  1330. });
  1331. } else if (event.keyCode === 37) { // 键盘左键
  1332. $(tdTarget).prev().click();
  1333. $(tdTarget).prev().find('input').select();
  1334. } else if (event.keyCode === 39) { // 键盘右键
  1335. $(tdTarget).next().click();
  1336. $(tdTarget).next().find('input').select();
  1337. }
  1338. }
  1339. }
  1340. }
  1341. function sortNumber (a, b) {
  1342. return a - b
  1343. }
  1344. </script>
  1345. <style lang="less">
  1346. .ProjectData {
  1347. min-width: 700px;
  1348. height: 100%;
  1349. .box {
  1350. height: 100%;
  1351. padding: 15px 15px 0 15px;
  1352. .box-top {
  1353. .el-form-item {
  1354. margin-bottom: 7px;
  1355. }
  1356. .box-top-gjl {
  1357. overflow: hidden;
  1358. // margin-top: -7px;
  1359. padding: 7px 0;
  1360. border-top: 1px solid #ccc;
  1361. // border-bottom: 1px solid #ccc;
  1362. // margin-bottom: 6px;
  1363. }
  1364. }
  1365. }
  1366. .el-table__body .el-form-item--mini.el-form-item {
  1367. margin: 0px;
  1368. .error {
  1369. overflow: hidden;
  1370. color: #f56c6c;
  1371. font-size: 12px;
  1372. line-height: 1;
  1373. }
  1374. }
  1375. }
  1376. </style>