index.vue 82 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727
  1. <template>
  2. <div class="app-container">
  3. <div class="search">
  4. <el-select v-model="table.getdataListParm.parammaps.pastureid" placeholder="牧场" class="filter-item" style="width: 120px;" @change="changePasture()">
  5. <el-option v-for="item in pastureList" :key="item.id" :label="item.name" :value="item.id" />
  6. </el-select>
  7. <el-date-picker v-model="table.getdataListParm.parammaps.inputDatetime" :clearable="false" class="inputDatetime filter-item" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" style="width: 250px;" :picker-options="pickerOptions" @change="change_date"/>
  8. <el-button class="el-icon-arrow-left elIconArrowLeft" :disabled="Beforedisabled" @click="handleBefore" />
  9. <el-button class="el-icon-arrow-right elIconArrowRight" :disabled="Nextdisabled" @click="handleNext" />
  10. <el-select v-model="table.getdataListParm.parammaps.lpplantype" placeholder="计划类型" class="filter-item" style="width: 120px;" clearable>
  11. <el-option v-for="item in planTypeList" :key="item.value" :label="item.lable" :value="item.value" />
  12. </el-select>
  13. <el-select v-model="table.getdataListParm.parammaps.tmrtname" placeholder="TMR名称" class="filter-item" style="width: 180px;" clearable multiple>
  14. <el-option v-for="item in TMRList" :key="item.tmrtname" :label="item.tmrtname" :value="item.tmrtname" />
  15. </el-select>
  16. <el-select v-model="table.getdataListParm.parammaps.error" placeholder="误差筛选范围" class="filter-item" style="width: 140px;" clearable>
  17. <el-option v-for="item in errorList" :key="item.value" :label="item.label" :value="item.value" />
  18. </el-select>
  19. <el-select v-model="table.getdataListParm.parammaps.iscompleted" placeholder="工作状态" class="filter-item" style="width: 120px;" clearable>
  20. <el-option v-for="item in workingConditionList" :key="item.id" :label="item.name" :value="item.id" />
  21. </el-select>
  22. <!-- 临时注释 -->
  23. <div style="display: inline-block;" class="filter-item1">
  24. <el-input-number :controls="false" :precision="2" v-model="hlwc1" placeholder="混料误差值" style="width: 120px;" class="filter-item" clearable />
  25. <span>-</span>
  26. <el-input-number :controls="false" :precision="2" v-model="hlwc2" placeholder="混料误差值" style="width: 120px;" class="filter-item" clearable />
  27. </div>
  28. <div style="display: inline-block;" class="filter-item1">
  29. <el-input-number :controls="false" :precision="2" v-model="hlzq1" placeholder="混料准确率" :min="0" :max="100" style="width: 120px;" class="filter-item" clearable />
  30. <span>-</span>
  31. <el-input-number :controls="false" :precision="2" v-model="hlzq2" placeholder="混料准确率" :min="0" :max="100" style="width: 120px;" class="filter-item" clearable />
  32. </div>
  33. <el-select v-model="table.getdataListParm.parammaps.fclassid" placeholder="混料类别" class="filter-item" style="width: 120px;" clearable>
  34. <el-option v-for="item in cixCategoryList" :key="item.id" :label="item.fcname" :value="item.id" />
  35. </el-select>
  36. <div style="display: inline-block;" class="filter-item1">
  37. <el-input-number :controls="false" :precision="2" v-model="slwc1" placeholder="撒料误差值" style="width: 120px;" class="filter-item" clearable />
  38. <span>-</span>
  39. <el-input-number :controls="false" :precision="2" v-model="slwc2" placeholder="撒料误差值" style="width: 120px;" class="filter-item" clearable />
  40. </div>
  41. <div style="display: inline-block;" class="filter-item1">
  42. <el-input-number :controls="false" :precision="2" v-model="slzq1" placeholder="撒料准确率" :min="0" :max="100" style="width: 120px;" class="filter-item" clearable />
  43. <span>-</span>
  44. <el-input-number :controls="false" :precision="2" v-model="slzq2" placeholder="撒料准确率" :min="0" :max="100" style="width: 120px;" class="filter-item" clearable />
  45. </div>
  46. <el-checkbox v-model="ccys"style="margin-right: 10px;" @change="changeccysChecked">只看超出预设值数据</el-checkbox>
  47. <!-- 临时注释 -->
  48. <el-button class="successBorder" @click="form_search">查询</el-button>
  49. <el-button class="successBorder" @click="handleRefresh">重置</el-button>
  50. </div>
  51. <el-row :gutter="10">
  52. <el-col :span="8">
  53. <h4>TMR设备列表</h4>
  54. <div class="table">
  55. <el-table
  56. :key="table.tableKey"
  57. v-loading="table.listLoading"
  58. element-loading-text="给我一点时间"
  59. :data="table.list"
  60. border
  61. fit
  62. highlight-current-row
  63. style="width: 98%;"
  64. :row-style="rowStyle"
  65. :cell-style="cellStyle"
  66. class="elTable table-fixed"
  67. :height="myheight"
  68. @row-click="rowClick"
  69. >
  70. <el-table-column sortable label="开始时间" min-width="100px" align="center" prop="intime" />
  71. <el-table-column sortable label="计划类型" min-width="80px" align="center" prop="lpplantype" />
  72. <el-table-column sortable label="描述" min-width="90px" align="center" prop="remark" />
  73. <el-table-column sortable label="TMR名称" min-width="80px" align="center" prop="tmrtname" />
  74. <el-table-column sortable label="过程时间" min-width="80px" align="center" prop="proesstime" />
  75. </el-table>
  76. </div>
  77. <span v-if="table.listLoading == false" style="margin-right: 30px;margin-top: 10px;font-size: 14px;">共{{ table.total }}条</span>
  78. </el-col>
  79. <!-- 预混计划 -->
  80. <el-col v-if="isPremixedPlan" :span="16">
  81. <div class="title">
  82. <b>过程详情</b>
  83. <span>&nbsp;({{ title }})</span>
  84. </div>
  85. <div class="detail">
  86. <div v-if="table2.list.length !== 0">
  87. <b>{{ table2.list[0].proesstime }}</b>
  88. <span>过程时间</span>
  89. </div>
  90. <div v-if="table2.list.length !== 0">
  91. <b>{{ table2.list[0].proesstime }}</b>
  92. <span>混料时间</span>
  93. </div>
  94. <div v-if="table2.list.length !== 0">
  95. <b>{{ table2.list[0].iscompleted }}</b>
  96. <span>工作状态</span>
  97. </div>
  98. <div v-if="table2.list.length !== 0">
  99. <b>{{ table2.list[0].Hdif }}</b>
  100. <span>混料误差值</span>
  101. </div>
  102. <div v-if="table2.list.length !== 0">
  103. <b>{{ table2.list[0].HdifRate }}</b>
  104. <span>混料准确率</span>
  105. </div>
  106. </div>
  107. <div class="Mixture">
  108. <h4>混料详情</h4>
  109. <el-table
  110. :key="table3.tableKey"
  111. v-loading="table3.listLoading"
  112. element-loading-text="给我一点时间"
  113. :data="table3.list"
  114. border
  115. fit
  116. highlight-current-row
  117. style="width: 98%;"
  118. :row-style="rowStyle"
  119. :cell-style="cellStyle"
  120. class="elTable table-fixed"
  121. max-height="200px"
  122. >
  123. <el-table-column label="操作编号" min-width="60px" align="center" prop="sort" />
  124. <el-table-column label="饲料名称" min-width="60px" align="center" prop="fname" />
  125. <el-table-column label="计划重量" min-width="60px" align="center" prop="lweight" />
  126. <el-table-column label="实际重量" min-width="60px" align="center" prop="actualweightminus" />
  127. <el-table-column label="误差值" min-width="60px" align="center" prop="diff" />
  128. <el-table-column label="准确率" min-width="60px" align="center" prop="diffRate" />
  129. <el-table-column label="完成时间" min-width="60px" align="center" prop="intime" />
  130. <el-table-column label="过程时间" min-width="60px" align="center" prop="proesstime" />
  131. <el-table-column label="跳转方式" min-width="60px" align="center" prop="buttontype" />
  132. <el-table-column label="开始重量" min-width="60px" align="center" prop="lastactualweight" />
  133. <el-table-column label="结束重量" min-width="60px" align="center" prop="actualweight" />
  134. </el-table>
  135. </div>
  136. </el-col>
  137. <!-- 撒料计划 -->
  138. <el-col v-if="isSpreadingPlan" :span="16">
  139. <div class="title">
  140. <b>过程详情</b>
  141. <span>&nbsp;({{ title }})</span>
  142. </div>
  143. <div class="detail">
  144. <div v-if="table2.list.length !== 0">
  145. <b>{{ table2.list[0].proesstime }}</b>
  146. <span>过程时间</span>
  147. </div>
  148. <div v-if="table2.list.length !== 0">
  149. <b>{{ table2.list[0].proesstime }}</b>
  150. <span>混料时间</span>
  151. </div>
  152. <div v-if="table2.list.length !== 0">
  153. <b>{{ table2.list[0].iscompleted }}</b>
  154. <span>工作状态</span>
  155. </div>
  156. <div v-if="table2.list.length !== 0">
  157. <b>{{ table2.list[0].Hdif }}kg</b>
  158. <span>混料误差值</span>
  159. </div>
  160. <div v-if="table2.list.length !== 0">
  161. <b>{{ table2.list[0].HdifRate }}</b>
  162. <span>混料准确率</span>
  163. </div>
  164. <div v-if="table2.list.length !== 0">
  165. <b>{{ table2.list[0].Sdif }}kg</b>
  166. <span>撒料误差值</span>
  167. </div>
  168. <div v-if="table2.list.length !== 0">
  169. <b>{{ table2.list[0].SdifRate }}</b>
  170. <span>撒料准确率</span>
  171. </div>
  172. </div>
  173. <div class="Mixture">
  174. <h4>混料详情</h4>
  175. <el-table
  176. :key="table3.tableKey"
  177. v-loading="table3.listLoading"
  178. element-loading-text="给我一点时间"
  179. :data="table3.list"
  180. border
  181. fit
  182. highlight-current-row
  183. style="width: 98%;"
  184. :row-style="rowStyle"
  185. :cell-style="cellStyle"
  186. class="elTable table-fixed"
  187. max-height="200px"
  188. >
  189. <el-table-column label="操作编号" min-width="70px" align="center" prop="sort" />
  190. <el-table-column label="饲料名称" min-width="70px" align="center" prop="fname" />
  191. <el-table-column label="计划重量" min-width="50px" align="center" prop="lweight" />
  192. <el-table-column label="实际重量" min-width="70px" align="center" prop="actualweightminus" />
  193. <el-table-column label="误差值" min-width="70px" align="center" prop="diff" />
  194. <el-table-column label="准确率" min-width="70px" align="center" prop="diffRate" />
  195. <el-table-column label="完成时间" min-width="70px" align="center" prop="intime" />
  196. <el-table-column label="过程时间" min-width="70px" align="center" prop="proesstime" />
  197. <el-table-column label="跳转方式" min-width="70px" align="center" prop="buttontype" />
  198. <el-table-column label="开始重量" min-width="70px" align="center" prop="lastactualweight" />
  199. <el-table-column label="结束重量" min-width="70px" align="center" prop="actualweight" />
  200. </el-table>
  201. </div>
  202. <div class="SpreadingMaterials">
  203. <h4>撒料详情</h4>
  204. <el-table
  205. :key="table4.tableKey"
  206. v-loading="table4.listLoading"
  207. element-loading-text="给我一点时间"
  208. :data="table4.list"
  209. border
  210. fit
  211. highlight-current-row
  212. style="width: 98%;"
  213. :row-style="rowStyle"
  214. :cell-style="cellStyle"
  215. class="elTable table-fixed"
  216. max-height="200px"
  217. >
  218. <el-table-column label="操作编号" min-width="70px" align="center" prop="sort" />
  219. <el-table-column label="栏舍名称" min-width="70px" align="center" prop="fname" />
  220. <el-table-column label="计划重量" min-width="70px" align="center" prop="lweight" />
  221. <el-table-column label="实际重量" min-width="70px" align="center" prop="actualweightminus" />
  222. <el-table-column label="误差值" min-width="70px" align="center" prop="diff" />
  223. <el-table-column label="准确率" min-width="70px" align="center" prop="diffRate" />
  224. <el-table-column label="完成时间" min-width="70px" align="center" prop="intime" />
  225. <el-table-column label="过程时间" min-width="70px" align="center" prop="proesstime" />
  226. <el-table-column label="跳转方式" min-width="70px" align="center" prop="buttontype" />
  227. <el-table-column label="开始重量" min-width="70px" align="center" prop="lastactualweight" />
  228. <el-table-column label="结束重量" min-width="70px" align="center" prop="actualweight" />
  229. </el-table>
  230. </div>
  231. <div class="ControlChart">
  232. <h4>监控图</h4>
  233. <div id="chartLine" style="width: 100%;height:300px;" />
  234. </div>
  235. </el-col>
  236. <!-- 剩料计划 -->
  237. <el-col v-if="isResidualMaterialPlan" :span="16">
  238. <div class="title">
  239. <b>过程详情</b>
  240. <span>&nbsp;({{ title }})</span>
  241. </div>
  242. <div class="detail">
  243. <div v-if="table2.list.length !== 0">
  244. <b>{{ table2.list[0].proesstime }}</b>
  245. <span>过程时间</span>
  246. </div>
  247. <div v-if="table2.list.length !== 0">
  248. <b>{{ table2.list[0].iscompleted }}</b>
  249. <span>工作状态</span>
  250. </div>
  251. </div>
  252. <div class="Mixture">
  253. <h4>剩料收集详情</h4>
  254. <el-table
  255. :key="table3.tableKey"
  256. v-loading="table3.listLoading"
  257. element-loading-text="给我一点时间"
  258. :data="table3.list"
  259. border
  260. fit
  261. highlight-current-row
  262. style="width: 98%;"
  263. :row-style="rowStyle"
  264. :cell-style="cellStyle"
  265. class="elTable table-fixed"
  266. max-height="200px"
  267. >
  268. <el-table-column label="操作编号" min-width="110px" align="center">
  269. <template slot-scope="scope">
  270. <span>{{ scope.row.sort }}</span>
  271. </template>
  272. </el-table-column>
  273. <el-table-column label="栏舍名称" min-width="90px" align="center">
  274. <template slot-scope="scope">
  275. <span>{{ scope.row.fname }}</span>
  276. </template>
  277. </el-table-column>
  278. <el-table-column label="剩料采集重量(kg)" min-width="110px" align="center">
  279. <template slot-scope="scope">
  280. <span>{{ scope.row.sweight }}</span>
  281. </template>
  282. </el-table-column>
  283. </el-table>
  284. </div>
  285. <div class="SpreadingMaterials">
  286. <h4>撒料详情</h4>
  287. <el-table
  288. :key="table4.tableKey"
  289. v-loading="table4.listLoading"
  290. :span-method="objectSpanMethod"
  291. element-loading-text="给我一点时间"
  292. :data="table4.list"
  293. border
  294. fit
  295. highlight-current-row
  296. style="width: 98%;"
  297. :row-style="rowStyle"
  298. :cell-style="cellStyle"
  299. class="elTable table-fixed"
  300. max-height="200px"
  301. >
  302. <el-table-column label="操作编号" min-width="110px" align="center" prop="sort" />
  303. <el-table-column label="转投栏舍" min-width="110px" align="center" prop="fname" />
  304. <el-table-column label="允许分配剩料量" min-width="110px" align="center" prop="lweight" />
  305. <el-table-column label="实际分配重量(kg)" min-width="110px" align="center" prop="actualweightminus" />
  306. <el-table-column label="废弃剩料重量" min-width="110px" align="center" prop="aweight" />
  307. </el-table>
  308. </div>
  309. </el-col>
  310. <!-- 撒料计划-混料 -->
  311. <el-col v-if="isSpreadingPlanSH" :span="16">
  312. <div class="title">
  313. <b>过程详情</b>
  314. <span>&nbsp;({{ title }})</span>
  315. </div>
  316. <div class="detail">
  317. <div v-if="table2.list.length !== 0">
  318. <b>{{ table2.list[0].proesstime }}</b>
  319. <span>过程时间</span>
  320. </div>
  321. <div v-if="table2.list.length !== 0">
  322. <b>{{ table2.list[0].proesstime }}</b>
  323. <span>混料时间</span>
  324. </div>
  325. <div v-if="table2.list.length !== 0">
  326. <b>{{ table2.list[0].iscompleted }}</b>
  327. <span>工作状态</span>
  328. </div>
  329. <div v-if="table2.list.length !== 0">
  330. <b>{{ table2.list[0].Hdif }}kg</b>
  331. <span>混料误差值</span>
  332. </div>
  333. <div v-if="table2.list.length !== 0">
  334. <b>{{ table2.list[0].HdifRate }}</b>
  335. <span>混料准确率</span>
  336. </div>
  337. <div v-if="table2.list.length !== 0">
  338. <b>{{ table2.list[0].Sdif }}kg</b>
  339. <span>撒料误差值</span>
  340. </div>
  341. <div v-if="table2.list.length !== 0">
  342. <b>{{ table2.list[0].SdifRate }}</b>
  343. <span>撒料准确率</span>
  344. </div>
  345. </div>
  346. <div class="Mixture">
  347. <h4>混料详情</h4>
  348. <el-table
  349. :key="table3.tableKey"
  350. v-loading="table3.listLoading"
  351. element-loading-text="给我一点时间"
  352. :data="table3.list"
  353. border
  354. fit
  355. highlight-current-row
  356. style="width: 98%;"
  357. :row-style="rowStyle"
  358. :cell-style="cellStyle"
  359. class="elTable table-fixed"
  360. max-height="200px"
  361. >
  362. <el-table-column label="操作编号" min-width="60px" align="center" prop="sort" />
  363. <el-table-column label="饲料名称" min-width="60px" align="center" prop="fname" />
  364. <el-table-column label="计划重量" min-width="60px" align="center" prop="lweight" />
  365. <el-table-column label="实际重量" min-width="60px" align="center" prop="actualweightminus" />
  366. <el-table-column label="误差值" min-width="60px" align="center" prop="diff" />
  367. <el-table-column label="准确率" min-width="60px" align="center" prop="diffRate" />
  368. <el-table-column label="完成时间" min-width="60px" align="center" prop="intime" />
  369. <el-table-column label="过程时间" min-width="60px" align="center" prop="proesstime" />
  370. <el-table-column label="跳转方式" min-width="60px" align="center" prop="buttontype" />
  371. <el-table-column label="开始重量" min-width="60px" align="center" prop="lastactualweight" />
  372. <el-table-column label="结束重量" min-width="60px" align="center" prop="actualweight" />
  373. </el-table>
  374. </div>
  375. <div class="SpreadingMaterials">
  376. <h4>撒料详情</h4>
  377. <el-table
  378. :key="table4.tableKey"
  379. v-loading="table4.listLoading"
  380. element-loading-text="给我一点时间"
  381. :data="table4.list"
  382. border
  383. fit
  384. highlight-current-row
  385. style="width: 98%;"
  386. :row-style="rowStyle"
  387. :cell-style="cellStyle"
  388. class="elTable table-fixed"
  389. max-height="200px"
  390. >
  391. <el-table-column label="操作编号" min-width="60px" align="center" prop="sort" />
  392. <el-table-column label="撒料车辆" min-width="60px" align="center" prop="fname" />
  393. <el-table-column label="计划重量" min-width="60px" align="center" prop="lweight" />
  394. <el-table-column label="实际重量" min-width="60px" align="center" prop="actualweightminus" />
  395. <el-table-column label="误差值" min-width="60px" align="center" prop="diff" />
  396. <el-table-column label="准确率" min-width="60px" align="center" prop="diffRate" />
  397. <el-table-column label="完成时间" min-width="60px" align="center" prop="intime" />
  398. <el-table-column label="过程时间" min-width="60px" align="center" prop="proesstime" />
  399. <el-table-column label="跳转方式" min-width="60px" align="center" prop="buttontype" />
  400. <el-table-column label="开始重量" min-width="60px" align="center" prop="lastactualweight" />
  401. <el-table-column label="结束重量" min-width="60px" align="center" prop="actualweight" />
  402. </el-table>
  403. </div>
  404. <div class="ControlChart">
  405. <h4>监控图</h4>
  406. <div id="chartLine" style="width: 100%;height:300px;" />
  407. </div>
  408. </el-col>
  409. <!-- 撒料计划-撒料 -->
  410. <el-col v-if="isSpreadingPlanSS" :span="16">
  411. <div class="title">
  412. <b>过程详情</b>
  413. <span>&nbsp;({{ title }})</span>
  414. </div>
  415. <div class="detail">
  416. <div v-if="table2.list.length !== 0">
  417. <b>{{ table2.list[0].proesstime }}</b>
  418. <span>过程时间</span>
  419. </div>
  420. <div v-if="table2.list.length !== 0">
  421. <b>{{ table2.list[0].proesstime }}</b>
  422. <span>混料时间</span>
  423. </div>
  424. <div v-if="table2.list.length !== 0">
  425. <b>{{ table2.list[0].iscompleted }}</b>
  426. <span>工作状态</span>
  427. </div>
  428. <div v-if="table2.list.length !== 0">
  429. <b>{{ table2.list[0].Hdif }}kg</b>
  430. <span>混料误差值</span>
  431. </div>
  432. <div v-if="table2.list.length !== 0">
  433. <b>{{ table2.list[0].HdifRate }}</b>
  434. <span>混料准确率</span>
  435. </div>
  436. <div v-if="table2.list.length !== 0">
  437. <b>{{ table2.list[0].Sdif }}kg</b>
  438. <span>撒料误差值</span>
  439. </div>
  440. <div v-if="table2.list.length !== 0">
  441. <b>{{ table2.list[0].SdifRate }}</b>
  442. <span>撒料准确率</span>
  443. </div>
  444. </div>
  445. <div class="Mixture">
  446. <h4>混料详情</h4>
  447. <el-table
  448. :key="table3.tableKey"
  449. v-loading="table3.listLoading"
  450. element-loading-text="给我一点时间"
  451. :data="table3.list"
  452. border
  453. fit
  454. highlight-current-row
  455. style="width: 98%;"
  456. :row-style="rowStyle"
  457. :cell-style="cellStyle"
  458. class="elTable table-fixed"
  459. max-height="200px"
  460. >
  461. <el-table-column label="操作编号" min-width="60px" align="center" prop="sort" />
  462. <el-table-column label="撒料车辆" min-width="60px" align="center" prop="fname" />
  463. <el-table-column label="计划重量" min-width="60px" align="center" prop="lweight" />
  464. <el-table-column label="实际重量" min-width="60px" align="center" prop="actualweightminus" />
  465. <el-table-column label="误差值" min-width="60px" align="center" prop="diff" />
  466. <el-table-column label="准确率" min-width="60px" align="center" prop="diffRate" />
  467. <el-table-column label="完成时间" min-width="60px" align="center" prop="intime" />
  468. <el-table-column label="过程时间" min-width="60px" align="center" prop="proesstime" />
  469. <el-table-column label="跳转方式" min-width="60px" align="center" prop="buttontype" />
  470. <el-table-column label="开始重量" min-width="60px" align="center" prop="lastactualweight" />
  471. <el-table-column label="结束重量" min-width="60px" align="center" prop="actualweight" />
  472. </el-table>
  473. </div>
  474. <div class="SpreadingMaterials">
  475. <h4>撒料详情</h4>
  476. <el-table
  477. :key="table4.tableKey"
  478. v-loading="table4.listLoading"
  479. element-loading-text="给我一点时间"
  480. :data="table4.list"
  481. border
  482. fit
  483. highlight-current-row
  484. style="width: 98%;"
  485. :row-style="rowStyle"
  486. :cell-style="cellStyle"
  487. class="elTable table-fixed"
  488. max-height="200px"
  489. >
  490. <el-table-column label="操作编号" min-width="70px" align="center" prop="sort" />
  491. <el-table-column label="撒料车辆" min-width="70px" align="center" prop="fname" />
  492. <el-table-column label="计划重量" min-width="70px" align="center" prop="lweight" />
  493. <el-table-column label="实际重量" min-width="70px" align="center" prop="actualweightminus" />
  494. <el-table-column label="误差值" min-width="70px" align="center" prop="diff" />
  495. <el-table-column label="准确率" min-width="70px" align="center" prop="diffRate" />
  496. <el-table-column label="完成时间" min-width="70px" align="center" prop="intime" />
  497. <el-table-column label="过程时间" min-width="70px" align="center" prop="proesstime" />
  498. <el-table-column label="跳转方式" min-width="70px" align="center" prop="buttontype" />
  499. <el-table-column label="开始重量" min-width="70px" align="center" prop="lastactualweight" />
  500. <el-table-column label="结束重量" min-width="70px" align="center" prop="actualweight" />
  501. </el-table>
  502. </div>
  503. <div class="ControlChart">
  504. <h4>监控图</h4>
  505. <div id="chartLine" style="width: 100%;height:300px;" />
  506. </div>
  507. </el-col>
  508. </el-row>
  509. </div>
  510. </template>
  511. <script>
  512. import * as echarts from 'echarts';
  513. require('echarts/theme/macarons')
  514. import { GetDataByName,GetDataByNames, GetReportform, formatNum,processAnalysist,postJson } from '@/api/common'
  515. import Cookies from 'js-cookie'
  516. import { parseTime } from '@/utils/index.js'
  517. export default {
  518. name: 'PastureProcessAnalysis',
  519. data() {
  520. return {
  521. hlwc1:undefined ,
  522. hlwc2:undefined ,
  523. hlzq1:undefined ,
  524. hlzq2:undefined ,
  525. slwc1:undefined ,
  526. slwc2:undefined ,
  527. slzq1:undefined ,
  528. slzq2:undefined ,
  529. ccys:false,
  530. myheight:970,
  531. title: '',
  532. isPremixedPlan: '', // 预混计划
  533. isSpreadingPlan: '', // 撒料计划
  534. isResidualMaterialPlan: '', // 剩料计划,
  535. isSpreadingPlanSH: '', // 撒料计划-混料
  536. isSpreadingPlanSS: '', // 撒料计划-撒料
  537. pickerMinDate: '',
  538. Beforedisabled: false,
  539. Nextdisabled: false,
  540. pickerOptions: {
  541. onPick: ({ maxDate, minDate }) => {
  542. this.pickerMinDate = minDate.getTime()
  543. if (maxDate) {
  544. this.pickerMinDate = ''
  545. }
  546. },
  547. // 限制不能选择明天之后的日期
  548. disabledDate: (time) => {
  549. if (this.pickerMinDate !== '') {
  550. const one = 31 * 24 * 3600 * 1000
  551. const minTime = this.pickerMinDate - one
  552. let maxTime = this.pickerMinDate + one
  553. // console.log(minTime, 'minTime')
  554. // console.log(maxTime, 'maxTime')
  555. // console.log(new Date(), 'new Date()')
  556. // console.log(Date.now(), 'Date.now()')
  557. // console.log(time.getTime(), 'time.getTime()')
  558. if (maxTime > new Date()) {
  559. maxTime = Date.now() + 8.64e7
  560. }
  561. return time.getTime() < minTime || time.getTime() > maxTime
  562. }
  563. return time.getTime() > Date.now() + 8.64e7
  564. }
  565. },
  566. cixCategoryParm:{
  567. name: 'getFeedclassList', offset: 0, pagecount: 0,
  568. parammaps: { 'pastureid': parseInt(Cookies.get('pastureId'))}
  569. },
  570. planTypeList: [{ lable: '预混计划', value: '4' }, { lable: '撒料计划', value: '0' }, { lable: '剩料计划', value: '3' }, { lable: '撒料计划-混料', value: '1' }, { lable: '撒料计划-撒料', value: '2' }, { lable: '预称重计划', value: '5' }], // 计划类型
  571. workingConditionList: [{ id: '0', name: '进行中' }, { id: '1', name: '已完成' }], // 工作状态
  572. cixCategoryList: [], // 混料类别
  573. // TMR设备列表
  574. table: {
  575. getdataListParm: {
  576. name: 'getprocessAnalysis',
  577. page: 1,
  578. offset: 1,
  579. pagecount: '',
  580. returntype: 'Map',
  581. parammaps: {
  582. pastureid: parseInt(Cookies.get('pastureId')),
  583. startTime: parseTime(new Date(), '{y}-{m}-{d}'),
  584. stopTime: parseTime(new Date(), '{y}-{m}-{d}'),
  585. inputDatetime: [new Date(), new Date()],
  586. iscompleted: '',
  587. tmrtname: '',
  588. lpplantype: '',
  589. error:'',
  590. fclassid:''
  591. }
  592. },
  593. tableKey: 0,
  594. list: [],
  595. total: 0,
  596. listLoading: true
  597. },
  598. // 过程详情
  599. table2: {
  600. getdataListParm: {
  601. name: 'getprocessAnalysisStr',
  602. page: 1,
  603. offset: 1,
  604. pagecount: 1,
  605. returntype: 'Map',
  606. parammaps: {
  607. pastureid: parseInt(Cookies.get('pastureId')),
  608. id: ''
  609. }
  610. },
  611. tableKey: 0,
  612. list: [],
  613. total: 0,
  614. listLoading: true
  615. },
  616. // 混料详情
  617. table3: {
  618. getdataListParm: {
  619. name: 'getprocessAnalysisHL',
  620. page: 1,
  621. offset: 1,
  622. pagecount: '',
  623. returntype: 'Map',
  624. parammaps: {
  625. pastureid: parseInt(Cookies.get('pastureId')),
  626. id: ''
  627. }
  628. },
  629. tableKey: 0,
  630. list: [],
  631. total: 0,
  632. listLoading: true
  633. },
  634. // 撒料详情
  635. table4: {
  636. getdataListParm: {
  637. name: 'getprocessAnalysisSL',
  638. page: 1,
  639. offset: 1,
  640. pagecount: '',
  641. returntype: 'Map',
  642. parammaps: {
  643. pastureid: parseInt(Cookies.get('pastureId')),
  644. id: ''
  645. }
  646. },
  647. tableKey: 0,
  648. list: [],
  649. total: 0,
  650. listLoading: true
  651. },
  652. chart1: {
  653. getdataListParm: {
  654. name: 'getprocessAnalysisTB',
  655. page: 1,
  656. offset: 1,
  657. pagecount: '',
  658. returntype: 'Map',
  659. parammaps: {
  660. pastureid: parseInt(Cookies.get('pastureId')),
  661. id: ''
  662. }
  663. },
  664. tableKey: 0,
  665. list: [],
  666. total: 0,
  667. listLoading: false,
  668. chartLine_data: []
  669. },
  670. chartLine: null,
  671. chartLine_data: {},
  672. chartName: '',
  673. // rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
  674. cellStyle: { padding: 0 + 'px' },
  675. TMRList:[],
  676. errorList:[{ value: '有误差', label: '有误差' }, { value: '无误差', label: '无误差' }],
  677. pastureList: JSON.parse(sessionStorage.pastureList), //牧场
  678. downTMR: { name: 'getDownloadedplanTmrName', offset: 0, pagecount: 0,
  679. parammaps: {
  680. pastureid: parseInt(Cookies.get('pastureId')),
  681. startdate: '',
  682. enddate: '',
  683. }
  684. },
  685. }
  686. },
  687. created() {
  688. this.getCixCategoryList()
  689. this.getList()
  690. },
  691. methods: {
  692. changePasture(){
  693. this.getList()
  694. },
  695. change_date(e){
  696. console.log(e)
  697. this.getDownList()
  698. },
  699. getDownList() {
  700. let page = 0
  701. let page_size = 0
  702. let url = '/api/v1/ops/statistics/mixed_category_tmr_name'
  703. let data = {
  704. 'pasture_id':this.table.getdataListParm.parammaps.pastureid,
  705. 'api_name':this.downTMR.name,
  706. 'start_time':parseTime(this.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}'),
  707. 'end_time':parseTime(this.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  708. }
  709. postJson(url, data).then(response => {
  710. this.TMRList = response.data.list
  711. })
  712. },
  713. getCixCategoryList(){
  714. let page = 0
  715. let page_size = 0
  716. let url = '/api/v1/ops/statistics/mixed_category_tmr_name'
  717. let data = {
  718. 'pasture_id':this.table.getdataListParm.parammaps.pastureid,
  719. 'api_name':this.cixCategoryParm.name,
  720. 'start_time':parseTime(this.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}'),
  721. 'end_time':parseTime(this.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  722. }
  723. postJson(url, data).then(response => {
  724. this.cixCategoryList = response.data.list
  725. })
  726. },
  727. // TMR设备列表
  728. getList() {
  729. this.table.listLoading = true
  730. let page = 0
  731. let page_size = 0
  732. let url = '/api/v1/ops/process/analysis' + '?page=' + page + '&page_size=' + page_size
  733. let data = {
  734. 'pasture_id':this.table.getdataListParm.parammaps.pastureid,
  735. 'api_name':this.table.getdataListParm.name,
  736. 'start_time':this.table.getdataListParm.parammaps.startTime,
  737. 'end_time':this.table.getdataListParm.parammaps.stopTime
  738. }
  739. if(this.table.getdataListParm.parammaps.tmr_name){
  740. data.tmr_name = this.table.getdataListParm.parammaps.tmrtname
  741. }
  742. if(this.table.getdataListParm.parammaps.error_range){
  743. data.error_range = this.table.getdataListParm.parammaps.error_range
  744. }
  745. if(this.table.getdataListParm.parammaps.work_status){
  746. data.work_status = this.table.getdataListParm.parammaps.work_status
  747. }
  748. if(this.table.getdataListParm.parammaps.mix_feed_type){
  749. data.mix_feed_type = this.table.getdataListParm.parammaps.mix_feed_type
  750. }
  751. if(this.table.getdataListParm.parammaps.plan_type){
  752. data.plan_type = this.table.getdataListParm.parammaps.plan_type
  753. }
  754. if(this.table.getdataListParm.parammaps.slwc1){
  755. data.slwc1 = this.table.getdataListParm.parammaps.slwc1
  756. }
  757. if(this.table.getdataListParm.parammaps.slwc2){
  758. data.slwc2 = this.table.getdataListParm.parammaps.slwc2
  759. }
  760. if(this.table.getdataListParm.parammaps.slzq1){
  761. data.slzq1 = this.table.getdataListParm.parammaps.slzq1
  762. }
  763. if(this.table.getdataListParm.parammaps.slzq2){
  764. data.slzq2 = this.table.getdataListParm.parammaps.slzq2
  765. }
  766. if(this.table.getdataListParm.parammaps.hlwc1){
  767. data.hlwc1 = this.table.getdataListParm.parammaps.hlwc1
  768. }
  769. if(this.table.getdataListParm.parammaps.hlwc2){
  770. data.hlwc2 = this.table.getdataListParm.parammaps.hlwc2
  771. }
  772. if(this.table.getdataListParm.parammaps.hlzq1){
  773. data.hlzq1 = this.table.getdataListParm.parammaps.hlzq1
  774. }
  775. if(this.table.getdataListParm.parammaps.hlzq2){
  776. data.hlzq2 = this.table.getdataListParm.parammaps.hlzq2
  777. }
  778. console.log(data,'===999')
  779. postJson(url, data).then(response => {
  780. console.log(response.data.list[0])
  781. if (response.data.list !== null && response.data.list.length > 0) {
  782. this.table.list = response.data.list
  783. this.table.total = response.data.total
  784. if (response.data.list[0].lpplantype == '预混计划') {
  785. this.isPremixedPlan = true
  786. this.isSpreadingPlan = false
  787. this.isResidualMaterialPlan = false
  788. this.isSpreadingPlanSH = false
  789. this.isSpreadingPlanSS = false
  790. this.table2.getdataListParm.name = 'getprocessAnalysisStr'
  791. this.table3.getdataListParm.name = 'getprocessAnalysisHL'
  792. this.table2.getdataListParm.parammaps.id = response.data.list[0].id
  793. this.table2.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  794. this.table3.getdataListParm.parammaps.pid = response.data.list[0].id
  795. this.table3.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  796. this.table2.getdataListParm.parammaps.fclassid = this.table.getdataListParm.parammaps.fclassid
  797. this.table3.getdataListParm.parammaps.fclassid = this.table.getdataListParm.parammaps.fclassid
  798. this.getList2()
  799. this.getList3()
  800. } else if (response.data.list[0].lpplantype == '剩料计划') {
  801. this.isResidualMaterialPlan = true
  802. this.isPremixedPlan = false
  803. this.isSpreadingPlan = false
  804. this.isSpreadingPlanSH = false
  805. this.isSpreadingPlanSS = false
  806. this.table2.getdataListParm.name = 'getprocessAnalysisStrSH'
  807. this.table3.getdataListParm.name = 'getprocessAnalysisHLSH'
  808. this.table4.getdataListParm.name = 'getprocessAnalysisSLSH'
  809. this.table2.getdataListParm.parammaps.id = response.data.list[0].id
  810. this.table2.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  811. this.table3.getdataListParm.parammaps.pid = response.data.list[0].id
  812. this.table3.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  813. this.table4.getdataListParm.parammaps.pid = response.data.list[0].id
  814. this.table4.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  815. this.table2.getdataListParm.parammaps.fclassid = this.table.getdataListParm.parammaps.fclassid
  816. this.table3.getdataListParm.parammaps.fclassid = this.table.getdataListParm.parammaps.fclassid
  817. this.getList2()
  818. this.getList3()
  819. this.getList4()
  820. } else if (response.data.list[0].lpplantype == '撒料计划-混料') {
  821. // 撒料计划-混料
  822. this.isSpreadingPlan = false
  823. this.isResidualMaterialPlan = false
  824. this.isPremixedPlan = false
  825. this.isSpreadingPlanSH = true
  826. this.isSpreadingPlanSS = false
  827. this.table2.getdataListParm.name = 'getprocessAnalysisStr'
  828. this.table3.getdataListParm.name = 'getprocessAnalysisHL'
  829. this.table4.getdataListParm.name = 'getprocessAnalysisSL'
  830. this.table2.getdataListParm.parammaps.id = response.data.list[0].id
  831. this.table2.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  832. this.table3.getdataListParm.parammaps.pid = response.data.list[0].id
  833. this.table3.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  834. this.table4.getdataListParm.parammaps.pid = response.data.list[0].id
  835. this.table4.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  836. this.table2.getdataListParm.parammaps.fclassid = this.table.getdataListParm.parammaps.fclassid
  837. this.table3.getdataListParm.parammaps.fclassid = this.table.getdataListParm.parammaps.fclassid
  838. this.getList2()
  839. this.getList3()
  840. this.getList4()
  841. this.chart1.getdataListParm.parammaps.pid = response.data.list[0].id
  842. this.chart1.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  843. this.getChart1()
  844. } else if (response.data.list[0].lpplantype == '撒料计划-撒料') {
  845. // 撒料计划-撒料
  846. this.isSpreadingPlan = false
  847. this.isResidualMaterialPlan = false
  848. this.isPremixedPlan = false
  849. this.isSpreadingPlanSH = false
  850. this.isSpreadingPlanSS = true
  851. this.table2.getdataListParm.name = 'getprocessAnalysisStr'
  852. this.table3.getdataListParm.name = 'getprocessAnalysisHL'
  853. this.table4.getdataListParm.name = 'getprocessAnalysisSL'
  854. this.table2.getdataListParm.parammaps.id = response.data.list[0].id
  855. this.table2.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  856. this.table3.getdataListParm.parammaps.pid = response.data.list[0].id
  857. this.table3.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  858. this.table4.getdataListParm.parammaps.pid = response.data.list[0].id
  859. this.table4.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  860. this.table2.getdataListParm.parammaps.fclassid = this.table.getdataListParm.parammaps.fclassid
  861. this.table3.getdataListParm.parammaps.fclassid = this.table.getdataListParm.parammaps.fclassid
  862. this.getList2()
  863. this.getList3()
  864. this.getList4()
  865. this.chart1.getdataListParm.parammaps.pid = response.data.list[0].id
  866. this.chart1.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  867. this.getChart1()
  868. } else if (response.data.list[0].lpplantype == '预称重计划') {
  869. // 撒料计划-混料
  870. this.isSpreadingPlan = false
  871. this.isResidualMaterialPlan = false
  872. this.isPremixedPlan = false
  873. this.isSpreadingPlanSH = true
  874. this.isSpreadingPlanSS = false
  875. this.table2.getdataListParm.name = 'getprocessAnalysisStr'
  876. this.table3.getdataListParm.name = 'getprocessAnalysisHL'
  877. this.table4.getdataListParm.name = 'getprocessAnalysisSL'
  878. this.table2.getdataListParm.parammaps.id = response.data.list[0].id
  879. this.table2.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  880. this.table3.getdataListParm.parammaps.pid = response.data.list[0].id
  881. this.table3.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  882. this.table4.getdataListParm.parammaps.pid = response.data.list[0].id
  883. this.table4.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  884. this.table2.getdataListParm.parammaps.fclassid = this.table.getdataListParm.parammaps.fclassid
  885. this.table3.getdataListParm.parammaps.fclassid = this.table.getdataListParm.parammaps.fclassid
  886. this.getList2()
  887. this.getList3()
  888. this.getList4()
  889. this.chart1.getdataListParm.parammaps.pid = response.data.list[0].id
  890. this.chart1.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  891. this.getChart1()
  892. } else {
  893. // 撒料
  894. this.isSpreadingPlan = true
  895. this.isResidualMaterialPlan = false
  896. this.isPremixedPlan = false
  897. this.isSpreadingPlanSH = false
  898. this.isSpreadingPlanSS = false
  899. this.table2.getdataListParm.parammaps.id = response.data.list[0].id
  900. this.table2.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  901. this.table3.getdataListParm.parammaps.pid = response.data.list[0].id
  902. this.table3.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  903. this.table4.getdataListParm.parammaps.pid = response.data.list[0].id
  904. this.table4.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  905. this.table2.getdataListParm.parammaps.fclassid = this.table.getdataListParm.parammaps.fclassid
  906. this.table3.getdataListParm.parammaps.fclassid = this.table.getdataListParm.parammaps.fclassid
  907. this.getList2()
  908. this.getList3()
  909. this.getList4()
  910. this.chart1.getdataListParm.parammaps.pid = response.data.list[0].id
  911. this.chart1.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  912. this.getChart1()
  913. }
  914. this.title = response.data.list[0].lpplantype
  915. } else {
  916. this.table.list = []
  917. this.table2.list = []
  918. this.table3.list = []
  919. this.table2.listLoading = false
  920. this.table3.listLoading = false
  921. this.table4.listLoading = false
  922. this.chart1.listLoading = false
  923. }
  924. this.getDownList()
  925. setTimeout(() => {
  926. this.table.listLoading = false
  927. }, 100)
  928. })
  929. },
  930. form_search() {
  931. console.log('点击了查询')
  932. if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
  933. this.table.getdataListParm.parammaps.startTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  934. this.table.getdataListParm.parammaps.stopTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  935. } else {
  936. this.table.getdataListParm.parammaps.inputDatetime = ''
  937. this.table.getdataListParm.parammaps.startTime = ''
  938. this.table.getdataListParm.parammaps.stopTime = ''
  939. }
  940. this.table.getdataListParm.parammaps.hlwc1 = this.hlwc1
  941. this.table.getdataListParm.parammaps.hlwc2 = this.hlwc2
  942. this.table.getdataListParm.parammaps.hlzq1 = this.hlzq1
  943. this.table.getdataListParm.parammaps.hlzq2 = this.hlzq2
  944. this.table.getdataListParm.parammaps.slwc1 = this.slwc1
  945. this.table.getdataListParm.parammaps.slwc2 = this.slwc2
  946. this.table.getdataListParm.parammaps.slzq1 = this.slzq1
  947. this.table.getdataListParm.parammaps.slzq2 = this.slzq2
  948. // if(this.ccys == true){
  949. // if(this.table3.getdataListParm.name !== 'getprocessAnalysisHL'){
  950. // this.hlwc1 = undefined
  951. // this.hlwc2 = undefined
  952. // this.hlzq1 = undefined
  953. // this.hlzq2 = undefined
  954. // this.slwc1 = undefined
  955. // this.slwc2 = undefined
  956. // this.slzq1 = undefined
  957. // this.slzq2 = undefined
  958. // this.table.getdataListParm.parammaps.error = ''
  959. // this.table3.getdataListParm.parammaps.error = ''
  960. // this.table4.getdataListParm.parammaps.error = ''
  961. // }
  962. // if(this.table3.getdataListParm.name == 'getprocessAnalysisHL'){
  963. // this.table3.getdataListParm.parammaps.hlwc1 = this.hlwc1
  964. // this.table3.getdataListParm.parammaps.hlwc2 = this.hlwc2
  965. // this.table3.getdataListParm.parammaps.hlzq1 = this.hlzq1
  966. // this.table3.getdataListParm.parammaps.hlzq2 = this.hlzq2
  967. // this.table3.getdataListParm.parammaps.slwc1 = this.slwc1
  968. // this.table3.getdataListParm.parammaps.slwc2 = this.slwc2
  969. // this.table3.getdataListParm.parammaps.slzq1 = this.slzq1
  970. // this.table3.getdataListParm.parammaps.slzq2 = this.slzq2
  971. // this.table3.getdataListParm.parammaps.error = '有误差'
  972. // }
  973. // if(this.table4.getdataListParm.name == 'getprocessAnalysisSL'){
  974. // this.table4.getdataListParm.parammaps.hlwc1 = this.hlwc1
  975. // this.table4.getdataListParm.parammaps.hlwc2 = this.hlwc2
  976. // this.table4.getdataListParm.parammaps.hlzq1 = this.hlzq1
  977. // this.table4.getdataListParm.parammaps.hlzq2 = this.hlzq2
  978. // this.table4.getdataListParm.parammaps.slwc1 = this.slwc1
  979. // this.table4.getdataListParm.parammaps.slwc2 = this.slwc2
  980. // this.table4.getdataListParm.parammaps.slzq1 = this.slzq1
  981. // this.table4.getdataListParm.parammaps.slzq2 = this.slzq2
  982. // this.table4.getdataListParm.parammaps.error = '有误差'
  983. // }
  984. // if(this.table.getdataListParm.name == 'getprocessAnalysis'){
  985. // this.table.getdataListParm.parammaps.hlwc1 = this.hlwc1
  986. // this.table.getdataListParm.parammaps.hlwc2 = this.hlwc2
  987. // this.table.getdataListParm.parammaps.hlzq1 = this.hlzq1
  988. // this.table.getdataListParm.parammaps.hlzq2 = this.hlzq2
  989. // this.table.getdataListParm.parammaps.slwc1 = this.slwc1
  990. // this.table.getdataListParm.parammaps.slwc2 = this.slwc2
  991. // this.table.getdataListParm.parammaps.slzq1 = this.slzq1
  992. // this.table.getdataListParm.parammaps.slzq2 = this.slzq2
  993. // this.table.getdataListParm.parammaps.error = '有误差'
  994. // }
  995. // }else{
  996. // this.table3.getdataListParm.parammaps.hlwc1 = ''
  997. // this.table3.getdataListParm.parammaps.hlwc2 = ''
  998. // this.table3.getdataListParm.parammaps.hlzq1 = ''
  999. // this.table3.getdataListParm.parammaps.hlzq2 = ''
  1000. // this.table3.getdataListParm.parammaps.slwc1 = ''
  1001. // this.table3.getdataListParm.parammaps.slwc2 = ''
  1002. // this.table3.getdataListParm.parammaps.slzq1 = ''
  1003. // this.table3.getdataListParm.parammaps.slzq2 = ''
  1004. // this.table4.getdataListParm.parammaps.hlwc1 = ''
  1005. // this.table4.getdataListParm.parammaps.hlwc2 = ''
  1006. // this.table4.getdataListParm.parammaps.hlzq1 = ''
  1007. // this.table4.getdataListParm.parammaps.hlzq2 = ''
  1008. // this.table4.getdataListParm.parammaps.slwc1 = ''
  1009. // this.table4.getdataListParm.parammaps.slwc2 = ''
  1010. // this.table4.getdataListParm.parammaps.slzq1 = ''
  1011. // this.table4.getdataListParm.parammaps.slzq2 = ''
  1012. // this.table3.getdataListParm.parammaps.error = ''
  1013. // this.table4.getdataListParm.parammaps.error = ''
  1014. // }
  1015. // 临时注释
  1016. this.table.getdataListParm.offset = 1
  1017. this.getList()
  1018. },
  1019. handleRefresh() {
  1020. console.log('点击了重置')
  1021. this.table.getdataListParm.parammaps.fclassid = ''
  1022. this.table.getdataListParm.parammaps.tmrtname = ''
  1023. this.table.getdataListParm.parammaps.iscompleted = ''
  1024. this.table.getdataListParm.parammaps.lpplantype = ''
  1025. this.table.getdataListParm.parammaps.startTime = parseTime(new Date(), '{y}-{m}-{d}')
  1026. this.table.getdataListParm.parammaps.stopTime = parseTime(new Date(), '{y}-{m}-{d}')
  1027. this.table.getdataListParm.parammaps.inputDatetime = [new Date(), new Date()]
  1028. this.table.getdataListParm.offset = 1
  1029. this.getList()
  1030. },
  1031. handleBefore() {
  1032. if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
  1033. var start = new Date(this.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.table.getdataListParm.parammaps.inputDatetime[0].getDate() - 1))
  1034. var stop = new Date(this.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.table.getdataListParm.parammaps.inputDatetime[1].getDate() - 1))
  1035. if (stop > Date.now()) {
  1036. this.Nextdisabled = true
  1037. this.Beforedisabled = false
  1038. } else {
  1039. this.Nextdisabled = false
  1040. this.Beforedisabled = false
  1041. }
  1042. this.table.getdataListParm.parammaps.inputDatetime.length = 0
  1043. this.table.getdataListParm.parammaps.inputDatetime.push(start, stop)
  1044. this.$forceUpdate()
  1045. }
  1046. this.table.getdataListParm.parammaps.startTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  1047. this.table.getdataListParm.parammaps.stopTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  1048. this.getDownList()
  1049. this.getList()
  1050. },
  1051. handleNext() {
  1052. if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
  1053. var start2 = new Date(this.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1))
  1054. var stop2 = new Date(this.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1))
  1055. // console.log(stop2)
  1056. // console.log(Date.now() + 8.64e7)
  1057. // console.log(stop2 > Date.now() + 8.64e7)
  1058. if (stop2 > Date.now()) {
  1059. this.Nextdisabled = true
  1060. this.Beforedisabled = false
  1061. } else {
  1062. this.Nextdisabled = false
  1063. this.Beforedisabled = false
  1064. }
  1065. this.table.getdataListParm.parammaps.inputDatetime.length = 0
  1066. this.table.getdataListParm.parammaps.inputDatetime.push(start2, stop2)
  1067. this.$forceUpdate()
  1068. }
  1069. this.table.getdataListParm.parammaps.startTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  1070. this.table.getdataListParm.parammaps.stopTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  1071. this.getDownList()
  1072. this.getList()
  1073. },
  1074. rowClick(row, column, event) {
  1075. this.table2.getdataListParm.parammaps.fclassid = this.table.getdataListParm.parammaps.fclassid
  1076. this.table3.getdataListParm.parammaps.fclassid = this.table.getdataListParm.parammaps.fclassid
  1077. this.table2.getdataListParm.parammaps.id = row.id
  1078. this.table3.getdataListParm.parammaps.pid = row.id
  1079. this.table4.getdataListParm.parammaps.pid = row.id
  1080. this.chart1.getdataListParm.parammaps.pid = row.id
  1081. this.chartName = row.tmrtname
  1082. if (row.lpplantype == '预混计划') {
  1083. this.isPremixedPlan = true
  1084. this.isResidualMaterialPlan = false
  1085. this.isSpreadingPlan = false
  1086. this.isSpreadingPlanSH = false
  1087. this.isSpreadingPlanSS = false
  1088. this.table2.getdataListParm.name = 'getprocessAnalysisStr'
  1089. this.table3.getdataListParm.name = 'getprocessAnalysisHL'
  1090. this.table2.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1091. this.table3.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1092. this.getList2()
  1093. this.getList3()
  1094. } else if (row.lpplantype == '剩料计划') {
  1095. this.isResidualMaterialPlan = true
  1096. this.isPremixedPlan = false
  1097. this.isSpreadingPlan = false
  1098. this.isSpreadingPlanSH = false
  1099. this.isSpreadingPlanSS = false
  1100. this.table2.getdataListParm.name = 'getprocessAnalysisStrSH'
  1101. this.table3.getdataListParm.name = 'getprocessAnalysisHLSH'
  1102. this.table4.getdataListParm.name = 'getprocessAnalysisSLSH'
  1103. this.table2.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1104. this.table3.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1105. this.table4.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1106. this.getList2()
  1107. this.getList3()
  1108. this.getList4()
  1109. } else if (row.lpplantype == '撒料计划-混料') {
  1110. this.isSpreadingPlan = false
  1111. this.isPremixedPlan = false
  1112. this.isResidualMaterialPlan = false
  1113. this.isSpreadingPlanSH = true
  1114. this.isSpreadingPlanSS = false
  1115. this.table2.getdataListParm.name = 'getprocessAnalysisStr'
  1116. this.table3.getdataListParm.name = 'getprocessAnalysisHL'
  1117. this.table4.getdataListParm.name = 'getprocessAnalysisSL'
  1118. this.table2.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1119. this.table3.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1120. this.table4.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1121. this.chart1.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1122. this.getList2()
  1123. this.getList3()
  1124. this.getList4()
  1125. this.getChart1()
  1126. } else if (row.lpplantype == '撒料计划-撒料') {
  1127. this.isSpreadingPlan = false
  1128. this.isPremixedPlan = false
  1129. this.isResidualMaterialPlan = false
  1130. this.isSpreadingPlanSH = false
  1131. this.isSpreadingPlanSS = true
  1132. this.table2.getdataListParm.name = 'getprocessAnalysisStr'
  1133. this.table3.getdataListParm.name = 'getprocessAnalysisHL'
  1134. this.table4.getdataListParm.name = 'getprocessAnalysisSL'
  1135. this.table2.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1136. this.table3.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1137. this.table4.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1138. this.chart1.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1139. this.getList2()
  1140. this.getList3()
  1141. this.getList4()
  1142. this.getChart1()
  1143. } else if (row.lpplantype == '预称重计划') {
  1144. this.isSpreadingPlan = false
  1145. this.isPremixedPlan = false
  1146. this.isResidualMaterialPlan = false
  1147. this.isSpreadingPlanSH = true
  1148. this.isSpreadingPlanSS = false
  1149. this.table2.getdataListParm.name = 'getprocessAnalysisStr'
  1150. this.table3.getdataListParm.name = 'getprocessAnalysisHL'
  1151. this.table4.getdataListParm.name = 'getprocessAnalysisSL'
  1152. this.table2.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1153. this.table3.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1154. this.table4.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1155. this.chart1.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1156. this.getList2()
  1157. this.getList3()
  1158. this.getList4()
  1159. this.getChart1()
  1160. } else {
  1161. this.isSpreadingPlan = true
  1162. this.isPremixedPlan = false
  1163. this.isResidualMaterialPlan = false
  1164. this.isSpreadingPlanSH = false
  1165. this.isSpreadingPlanSS = false
  1166. this.table2.getdataListParm.name = 'getprocessAnalysisStr'
  1167. this.table3.getdataListParm.name = 'getprocessAnalysisHL'
  1168. this.table4.getdataListParm.name = 'getprocessAnalysisSL'
  1169. this.table2.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1170. this.table3.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1171. this.table4.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1172. this.chart1.getdataListParm.parammaps.pastureid = this.table.getdataListParm.parammaps.pastureid
  1173. this.getList2()
  1174. this.getList3()
  1175. this.getList4()
  1176. this.getChart1()
  1177. }
  1178. this.title = '' + row.lpplantype
  1179. },
  1180. // 过程详情
  1181. getList2() {
  1182. this.table2.listLoading = false
  1183. let page = 0
  1184. let page_size = 0
  1185. let url = '/api/v1/ops/process/analysis/mixed_sprinkle_detail' + '?page=' + page + '&page_size=' + page_size
  1186. let data = {
  1187. 'pasture_id':this.table2.getdataListParm.parammaps.pastureid,
  1188. 'api_name':this.table2.getdataListParm.name,
  1189. 'start_time':this.table.getdataListParm.parammaps.startTime,
  1190. 'end_time':this.table.getdataListParm.parammaps.stopTime
  1191. }
  1192. if(this.table2.getdataListParm.parammaps.pid){
  1193. data.pid = this.table2.getdataListParm.parammaps.pid
  1194. }
  1195. if(this.table2.getdataListParm.parammaps.fclassid){
  1196. data.fclass_id = this.table2.getdataListParm.parammaps.fclassid
  1197. }
  1198. if(this.table2.getdataListParm.parammaps.id){
  1199. data.id = this.table2.getdataListParm.parammaps.id
  1200. }
  1201. if(this.table2.getdataListParm.parammaps.tmr_name){
  1202. data.tmr_name = this.table2.getdataListParm.parammaps.tmrtname
  1203. }
  1204. if(this.table2.getdataListParm.parammaps.error_range){
  1205. data.error_range = this.table2.getdataListParm.parammaps.error_range
  1206. }
  1207. if(this.table2.getdataListParm.parammaps.work_status){
  1208. data.work_status = this.table2.getdataListParm.parammaps.work_status
  1209. }
  1210. if(this.table2.getdataListParm.parammaps.mix_feed_type){
  1211. data.mix_feed_type = this.table2.getdataListParm.parammaps.mix_feed_type
  1212. }
  1213. if(this.table2.getdataListParm.parammaps.plan_type){
  1214. data.plan_type = this.table2.getdataListParm.parammaps.plan_type
  1215. }
  1216. if(this.table2.getdataListParm.parammaps.slwc1){
  1217. data.slwc1 = this.table2.getdataListParm.parammaps.slwc1
  1218. }
  1219. if(this.table2.getdataListParm.parammaps.slwc2){
  1220. data.slwc2 = this.table2.getdataListParm.parammaps.slwc2
  1221. }
  1222. if(this.table2.getdataListParm.parammaps.slzq1){
  1223. data.slzq1 = this.table2.getdataListParm.parammaps.slzq1
  1224. }
  1225. if(this.table2.getdataListParm.parammaps.slzq2){
  1226. data.slzq2 = this.table2.getdataListParm.parammaps.slzq2
  1227. }
  1228. if(this.table2.getdataListParm.parammaps.hlwc1){
  1229. data.hlwc1 = this.table2.getdataListParm.parammaps.hlwc1
  1230. }
  1231. if(this.table2.getdataListParm.parammaps.hlwc2){
  1232. data.hlwc2 = this.table2.getdataListParm.parammaps.hlwc2
  1233. }
  1234. if(this.table2.getdataListParm.parammaps.hlzq1){
  1235. data.hlzq1 = this.table2.getdataListParm.parammaps.hlzq1
  1236. }
  1237. if(this.table2.getdataListParm.parammaps.hlzq2){
  1238. data.hlzq2 = this.table2.getdataListParm.parammaps.hlzq2
  1239. }
  1240. postJson(url, data).then(response => {
  1241. console.log('过程详情table数据', response.data.list)
  1242. if (response.data.list !== null && response.data.list.length > 0) {
  1243. this.table2.list = response.data.list
  1244. } else {
  1245. this.table2.list = []
  1246. }
  1247. setTimeout(() => {
  1248. this.table2.listLoading = false
  1249. }, 100)
  1250. })
  1251. },
  1252. // 混料详情
  1253. getList3() {
  1254. this.table3.listLoading = false
  1255. // GetDataByName(this.table3.getdataListParm).then(response => {
  1256. let page = 0
  1257. let page_size = 0
  1258. let url = '/api/v1/ops/process/analysis/mixed_sprinkle_detail' + '?page=' + page + '&page_size=' + page_size
  1259. let data = {
  1260. 'pasture_id':this.table3.getdataListParm.parammaps.pastureid,
  1261. 'api_name':this.table3.getdataListParm.name,
  1262. 'start_time':this.table.getdataListParm.parammaps.startTime,
  1263. 'end_time':this.table.getdataListParm.parammaps.stopTime
  1264. }
  1265. if(this.table3.getdataListParm.parammaps.pid){
  1266. data.pid = this.table3.getdataListParm.parammaps.pid
  1267. }
  1268. if(this.table3.getdataListParm.parammaps.fclassid){
  1269. data.fclass_id = this.table3.getdataListParm.parammaps.fclassid
  1270. }
  1271. if(this.table3.getdataListParm.parammaps.id){
  1272. data.id = this.table3.getdataListParm.parammaps.id
  1273. }
  1274. if(this.table3.getdataListParm.parammaps.tmr_name){
  1275. data.tmr_name = this.table3.getdataListParm.parammaps.tmrtname
  1276. }
  1277. if(this.table3.getdataListParm.parammaps.error_range){
  1278. data.error_range = this.table3.getdataListParm.parammaps.error_range
  1279. }
  1280. if(this.table3.getdataListParm.parammaps.work_status){
  1281. data.work_status = this.table3.getdataListParm.parammaps.work_status
  1282. }
  1283. if(this.table3.getdataListParm.parammaps.mix_feed_type){
  1284. data.mix_feed_type = this.table3.getdataListParm.parammaps.mix_feed_type
  1285. }
  1286. if(this.table3.getdataListParm.parammaps.plan_type){
  1287. data.plan_type = this.table3.getdataListParm.parammaps.plan_type
  1288. }
  1289. if(this.table3.getdataListParm.parammaps.slwc1){
  1290. data.slwc1 = this.table3.getdataListParm.parammaps.slwc1
  1291. }
  1292. if(this.table3.getdataListParm.parammaps.slwc2){
  1293. data.slwc2 = this.table3.getdataListParm.parammaps.slwc2
  1294. }
  1295. if(this.table3.getdataListParm.parammaps.slzq1){
  1296. data.slzq1 = this.table3.getdataListParm.parammaps.slzq1
  1297. }
  1298. if(this.table3.getdataListParm.parammaps.slzq2){
  1299. data.slzq2 = this.table3.getdataListParm.parammaps.slzq2
  1300. }
  1301. if(this.table3.getdataListParm.parammaps.hlwc1){
  1302. data.hlwc1 = this.table3.getdataListParm.parammaps.hlwc1
  1303. }
  1304. if(this.table3.getdataListParm.parammaps.hlwc2){
  1305. data.hlwc2 = this.table3.getdataListParm.parammaps.hlwc2
  1306. }
  1307. if(this.table3.getdataListParm.parammaps.hlzq1){
  1308. data.hlzq1 = this.table3.getdataListParm.parammaps.hlzq1
  1309. }
  1310. if(this.table3.getdataListParm.parammaps.hlzq2){
  1311. data.hlzq2 = this.table3.getdataListParm.parammaps.hlzq2
  1312. }
  1313. postJson(url, data).then(response => {
  1314. console.log('混料详情table数据', response.data.list)
  1315. if (response.data.list !== null && response.data.list.length > 0) {
  1316. this.table3.list = response.data.list
  1317. var sumlweight = 0
  1318. var sumactualweightminus = 0
  1319. var sumsweight = 0
  1320. var sumproesstime = ''
  1321. for (let i = 0; i < response.data.list.length; i++) {
  1322. if (response.data.list[i].lweight == undefined) { response.data.list[i].lweight = 0 }
  1323. if (response.data.list[i].actualweightminus == undefined) { response.data.list[i].actualweightminus = 0 }
  1324. if (response.data.list[i].sweight == undefined) { response.data.list[i].sweight = 0 }
  1325. sumlweight += parseFloat(response.data.list[i].lweight)
  1326. sumactualweightminus += parseFloat(response.data.list[i].actualweightminus)
  1327. sumsweight += parseFloat(response.data.list[i].sweight)
  1328. sumproesstime = response.data.list[0].sumproesstime
  1329. }
  1330. sumlweight = formatNum(sumlweight, 2)
  1331. sumactualweightminus = formatNum(sumactualweightminus, 2)
  1332. sumsweight = formatNum(sumsweight, 2)
  1333. this.table3.list.push({ 'sort': '合计', 'lweight': sumlweight, 'actualweightminus': sumactualweightminus, 'sweight': sumsweight, 'proesstime': sumproesstime })
  1334. } else {
  1335. this.table3.list = []
  1336. }
  1337. setTimeout(() => {
  1338. this.table3.listLoading = false
  1339. }, 100)
  1340. })
  1341. },
  1342. // 撒料详情
  1343. getList4() {
  1344. this.table4.listLoading = false
  1345. // GetDataByName(this.table4.getdataListParm).then(response => {
  1346. let page = 0
  1347. let page_size = 0
  1348. let url = '/api/v1/ops/process/analysis/mixed_sprinkle_detail' + '?page=' + page + '&page_size=' + page_size
  1349. let data = {
  1350. 'pasture_id':this.table4.getdataListParm.parammaps.pastureid,
  1351. 'api_name':this.table4.getdataListParm.name,
  1352. 'start_time':this.table.getdataListParm.parammaps.startTime,
  1353. 'end_time':this.table.getdataListParm.parammaps.stopTime
  1354. }
  1355. if(this.table4.getdataListParm.parammaps.pid){
  1356. data.pid = this.table4.getdataListParm.parammaps.pid
  1357. }
  1358. if(this.table4.getdataListParm.parammaps.fclassid){
  1359. data.fclass_id = this.table4.getdataListParm.parammaps.fclassid
  1360. }
  1361. if(this.table4.getdataListParm.parammaps.id){
  1362. data.id = this.table4.getdataListParm.parammaps.id
  1363. }
  1364. if(this.table4.getdataListParm.parammaps.tmr_name){
  1365. data.tmr_name = this.table4.getdataListParm.parammaps.tmrtname
  1366. }
  1367. if(this.table4.getdataListParm.parammaps.error_range){
  1368. data.error_range = this.table4.getdataListParm.parammaps.error_range
  1369. }
  1370. if(this.table4.getdataListParm.parammaps.work_status){
  1371. data.work_status = this.table4.getdataListParm.parammaps.work_status
  1372. }
  1373. if(this.table4.getdataListParm.parammaps.mix_feed_type){
  1374. data.mix_feed_type = this.table4.getdataListParm.parammaps.mix_feed_type
  1375. }
  1376. if(this.table4.getdataListParm.parammaps.plan_type){
  1377. data.plan_type = this.table4.getdataListParm.parammaps.plan_type
  1378. }
  1379. if(this.table4.getdataListParm.parammaps.slwc1){
  1380. data.slwc1 = this.table4.getdataListParm.parammaps.slwc1
  1381. }
  1382. if(this.table4.getdataListParm.parammaps.slwc2){
  1383. data.slwc2 = this.table4.getdataListParm.parammaps.slwc2
  1384. }
  1385. if(this.table4.getdataListParm.parammaps.slzq1){
  1386. data.slzq1 = this.table4.getdataListParm.parammaps.slzq1
  1387. }
  1388. if(this.table4.getdataListParm.parammaps.slzq2){
  1389. data.slzq2 = this.table4.getdataListParm.parammaps.slzq2
  1390. }
  1391. if(this.table4.getdataListParm.parammaps.hlwc1){
  1392. data.hlwc1 = this.table4.getdataListParm.parammaps.hlwc1
  1393. }
  1394. if(this.table4.getdataListParm.parammaps.hlwc2){
  1395. data.hlwc2 = this.table4.getdataListParm.parammaps.hlwc2
  1396. }
  1397. if(this.table4.getdataListParm.parammaps.hlzq1){
  1398. data.hlzq1 = this.table4.getdataListParm.parammaps.hlzq1
  1399. }
  1400. if(this.table4.getdataListParm.parammaps.hlzq2){
  1401. data.hlzq2 = this.table4.getdataListParm.parammaps.hlzq2
  1402. }
  1403. postJson(url, data).then(response => {
  1404. console.log('撒料详情table数据', response.data.list)
  1405. if (response.data.list !== null && response.data.list.length > 0) {
  1406. this.table4.list = response.data.list
  1407. var sumlweight = 0
  1408. var sumactualweightminus = 0
  1409. var sumsweight = 0
  1410. var sumproesstime = ''
  1411. for (let i = 0; i < response.data.list.length; i++) {
  1412. if (response.data.list[i].lweight == undefined) { response.data.list[i].lweight = 0 }
  1413. if (response.data.list[i].actualweightminus == undefined) { response.data.list[i].actualweightminus = 0 }
  1414. if (response.data.list[i].sweight == undefined) { response.data.list[i].sweight = 0 }
  1415. sumlweight += parseFloat(response.data.list[i].lweight)
  1416. sumactualweightminus += parseFloat(response.data.list[i].actualweightminus)
  1417. sumsweight += parseFloat(response.data.list[i].sweight)
  1418. sumproesstime = response.data.list[0].sumproesstime
  1419. }
  1420. sumlweight = formatNum(sumlweight, 2)
  1421. sumactualweightminus = formatNum(sumactualweightminus, 2)
  1422. sumsweight = formatNum(sumsweight, 2)
  1423. this.table4.list.push({ 'sort': '合计', 'lweight': sumlweight, 'actualweightminus': sumactualweightminus, 'sweight': sumsweight, 'proesstime': sumproesstime })
  1424. this.rowspan()
  1425. } else {
  1426. this.table4.list = []
  1427. }
  1428. setTimeout(() => {
  1429. this.table4.listLoading = false
  1430. }, 100)
  1431. })
  1432. },
  1433. rowspan() {
  1434. this.spanArr = []
  1435. this.table4.list.forEach((item, index) => {
  1436. if (index == 0) {
  1437. this.spanArr.push(1)
  1438. this.position = 0
  1439. } else {
  1440. console.log(item, index, '======')
  1441. if (this.table4.list[index].aweight == this.table4.list[index - 1].aweight) {
  1442. this.spanArr[this.position] += 1
  1443. this.spanArr.push(0)
  1444. } else {
  1445. this.spanArr.push(1)
  1446. this.position = index
  1447. }
  1448. }
  1449. })
  1450. },
  1451. objectSpanMethod({ row, column, rowIndex, columnIndex }) {
  1452. if (columnIndex == 4) {
  1453. const _row = this.spanArr[rowIndex]
  1454. const _col = _row > 0 ? 1 : 0
  1455. return {
  1456. rowspan: _row,
  1457. colspan: _col
  1458. }
  1459. }
  1460. },
  1461. getChart1() {
  1462. this.chart1.listLoading = true
  1463. let page = 0
  1464. let page_size = 0
  1465. let url = '/api/v1/ops/process/analysis/mixed_sprinkle_detail' + '?page=' + page + '&page_size=' + page_size
  1466. let data = {
  1467. 'pasture_id':this.chart1.getdataListParm.parammaps.pastureid,
  1468. 'api_name':this.chart1.getdataListParm.name,
  1469. 'start_time':this.table.getdataListParm.parammaps.startTime,
  1470. 'end_time':this.table.getdataListParm.parammaps.stopTime
  1471. }
  1472. if(this.chart1.getdataListParm.parammaps.pid){
  1473. data.pid = this.chart1.getdataListParm.parammaps.pid
  1474. }
  1475. if(this.chart1.getdataListParm.parammaps.fclassid){
  1476. data.fclass_id = this.chart1.getdataListParm.parammaps.fclassid
  1477. }
  1478. if(this.chart1.getdataListParm.parammaps.id){
  1479. data.id = this.chart1.getdataListParm.parammaps.id
  1480. }
  1481. if(this.chart1.getdataListParm.parammaps.tmr_name){
  1482. data.tmr_name = this.chart1.getdataListParm.parammaps.tmrtname
  1483. }
  1484. if(this.chart1.getdataListParm.parammaps.error_range){
  1485. data.error_range = this.chart1.getdataListParm.parammaps.error_range
  1486. }
  1487. if(this.chart1.getdataListParm.parammaps.work_status){
  1488. data.work_status = this.chart1.getdataListParm.parammaps.work_status
  1489. }
  1490. if(this.chart1.getdataListParm.parammaps.mix_feed_type){
  1491. data.mix_feed_type = this.chart1.getdataListParm.parammaps.mix_feed_type
  1492. }
  1493. if(this.chart1.getdataListParm.parammaps.plan_type){
  1494. data.plan_type = this.chart1.getdataListParm.parammaps.plan_type
  1495. }
  1496. if(this.chart1.getdataListParm.parammaps.slwc1){
  1497. data.slwc1 = this.chart1.getdataListParm.parammaps.slwc1
  1498. }
  1499. if(this.chart1.getdataListParm.parammaps.slwc2){
  1500. data.slwc2 = this.chart1.getdataListParm.parammaps.slwc2
  1501. }
  1502. if(this.chart1.getdataListParm.parammaps.slzq1){
  1503. data.slzq1 = this.chart1.getdataListParm.parammaps.slzq1
  1504. }
  1505. if(this.chart1.getdataListParm.parammaps.slzq2){
  1506. data.slzq2 = this.chart1.getdataListParm.parammaps.slzq2
  1507. }
  1508. if(this.chart1.getdataListParm.parammaps.hlwc1){
  1509. data.hlwc1 = this.chart1.getdataListParm.parammaps.hlwc1
  1510. }
  1511. if(this.chart1.getdataListParm.parammaps.hlwc2){
  1512. data.hlwc2 = this.chart1.getdataListParm.parammaps.hlwc2
  1513. }
  1514. if(this.chart1.getdataListParm.parammaps.hlzq1){
  1515. data.hlzq1 = this.chart1.getdataListParm.parammaps.hlzq1
  1516. }
  1517. if(this.chart1.getdataListParm.parammaps.hlzq2){
  1518. data.hlzq2 = this.chart1.getdataListParm.parammaps.hlzq2
  1519. }
  1520. postJson(url, data).then(response => {
  1521. console.log('-------------------',response.data.list)
  1522. // GetReportform(this.chart1.getdataListParm).then(response => {
  1523. if (response.data.list !== null) {
  1524. console.log('实时监控', response.data.list)
  1525. this.chart1.list = response.data.data
  1526. this.chart1.chartLine_data = response.data.list
  1527. this.chart1.total = response.data.total
  1528. this.roadChartLine1(this.chart1.chartLine_data)
  1529. } else {
  1530. this.chart1.list = []
  1531. }
  1532. setTimeout(() => {
  1533. this.chart1.listLoading = false
  1534. }, 100)
  1535. })
  1536. },
  1537. roadChartLine1(chartLine_data) {
  1538. console.log(chartLine_data, 'chartLine_data')
  1539. if (this.chartLine != null) {
  1540. this.chartLine.dispose()
  1541. }
  1542. this.chartLine = echarts.init(document.getElementById('chartLine'))
  1543. var option = {
  1544. title: { text: '', subtext: '' },
  1545. color: ['#ff0000', '#5199e5', '#fdb06a', '#fb8b73'], // 关键加上这句话,legend的颜色和折线的自定义颜色就一致了
  1546. legend: [{
  1547. itemWidth: 15, itemHeight: 7, right: '25%', textStyle: { fontSize: 12 },
  1548. data: [{ name: '设计重量' }, { name: '实际重量' }]
  1549. }, {
  1550. itemWidth: 5, itemHeight: 5, right: '0', textStyle: { fontSize: 12 },
  1551. data: [
  1552. // { name: '开始重量', icon: 'image://https://kptyun.cn:8081/file/pic/3.png' }, // { name: '结束重量', icon: 'image://https://kptyun.cn:8081/file/pic/4.png' },
  1553. // { name: '结束重量', icon: 'image://https://kptyun.cn:8081/file/pic/4.png' }, // { name: '结束重量', icon: 'image://https://kptyun.cn:8081/file/pic/4.png' },
  1554. { name: '开始重量' },
  1555. { name: '结束重量' }
  1556. ]
  1557. }],
  1558. tooltip: {
  1559. trigger: 'axis',
  1560. formatter: function(params) {
  1561. // console.log(params, 'params')
  1562. var tip = params[0].name
  1563. for (let i = 0; i < params.length; i++) {
  1564. if (params[i].seriesName == '设计重量') {
  1565. tip += '<br>' + params[i].seriesName + ':' + params[i].value[1]
  1566. }
  1567. if (params[i].seriesName == '实际重量') {
  1568. tip += '<br>' + params[i].seriesName + ':' + params[i].value[1]
  1569. }
  1570. if (params[i].seriesName == '开始重量') {
  1571. tip += '<br>' + params[i].seriesName + ':' + params[i].value[1]
  1572. }
  1573. if (params[i].seriesName == '结束重量') {
  1574. tip += '<br>' + params[i].seriesName + ':' + params[i].value[1] + '<br>' + params[i].value[2] + params[i].value[3]
  1575. }
  1576. }
  1577. return tip
  1578. }
  1579. },
  1580. calculable: true,
  1581. xAxis: [
  1582. { type: 'category' }
  1583. // { type: 'category', splitLine: { show: false }, name: '时间', data: chartLine_data.data1, axisLabel: { show: true, textStyle: { color: '#666' }}}
  1584. ],
  1585. yAxis: [{ type: 'value' }],
  1586. toolbox: {
  1587. show: false,
  1588. feature: {
  1589. dataZoom: { realtime: false, yAxisIndex: 'none', },
  1590. restore: {},
  1591. }
  1592. },
  1593. dataZoom: [
  1594. {type: 'inside'}, //用于添加滚轮缩放
  1595. {type:'slider' }, //用于添加滑动条缩放,
  1596. ],
  1597. series: [
  1598. { symbol: 'none', name: '实际重量', type: 'line', data: chartLine_data.data3, itemStyle: { normal: { lineStyle: { color: '#ff0000' ,width:2}}}},
  1599. { symbol: 'none', name: '设计重量', type: 'line', step: 'middle', data: chartLine_data.data2 , itemStyle: { normal: { lineStyle: { width:2}}}},
  1600. // { name: '开始重量', symbol: 'image://https://kptyun.cn:8081/file/pic/3.png', symbolSize: 10, type: 'scatter', data: chartLine_data.data4 },
  1601. // { name: '结束重量', symbol: 'image://https://kptyun.cn:8081/file/pic/4.png', symbolSize: 10, type: 'scatter', data: chartLine_data.data5 }
  1602. { name: '开始重量', symbolSize: 6, type: 'scatter', data: chartLine_data.data4 },
  1603. { name: '结束重量', symbolSize: 6, type: 'scatter', data: chartLine_data.data5 }
  1604. ]
  1605. }
  1606. this.chartLine.setOption(option)
  1607. window.onresize = function() {
  1608. this.chartLine.resize()
  1609. }
  1610. },
  1611. rowStyle({ row, rowIndex }) {
  1612. let stylejson = {};
  1613. if (row.abnormal == 1) {
  1614. stylejson.background = "#fb8072";// 背景颜色
  1615. stylejson.maxHeight = '30px';// 背景颜色
  1616. stylejson.height = '30px';// 背景颜色
  1617. // 也可以修改文字颜色
  1618. return stylejson;
  1619. } else {
  1620. return "";
  1621. }
  1622. },
  1623. changeccysChecked(){
  1624. // table.getdataListParm.parammaps.ccys
  1625. // console.log(this.table.getdataListParm.parammaps.ccys,'===')
  1626. if(this.ccys == true){
  1627. if(this.table3.getdataListParm.name !== 'getprocessAnalysisHL'){
  1628. this.hlwc1 = undefined
  1629. this.hlwc2 = undefined
  1630. this.hlzq1 = undefined
  1631. this.hlzq2 = undefined
  1632. this.slwc1 = undefined
  1633. this.slwc2 = undefined
  1634. this.slzq1 = undefined
  1635. this.slzq2 = undefined
  1636. this.table3.getdataListParm.parammaps.error = ''
  1637. this.table4.getdataListParm.parammaps.error = ''
  1638. this.table.getdataListParm.parammaps.error = ''
  1639. }
  1640. if(this.table3.getdataListParm.name == 'getprocessAnalysisHL'){
  1641. // // hlwc1,hlwc2,hlzq1,hlzq2,slwc1,slwc2,slzq1,slzq2,ccys
  1642. this.table3.getdataListParm.parammaps.hlwc1 = this.hlwc1
  1643. this.table3.getdataListParm.parammaps.hlwc2 = this.hlwc2
  1644. this.table3.getdataListParm.parammaps.hlzq1 = this.hlzq1
  1645. this.table3.getdataListParm.parammaps.hlzq2 = this.hlzq2
  1646. this.table3.getdataListParm.parammaps.slwc1 = this.slwc1
  1647. this.table3.getdataListParm.parammaps.slwc2 = this.slwc2
  1648. this.table3.getdataListParm.parammaps.slzq1 = this.slzq1
  1649. this.table3.getdataListParm.parammaps.slzq2 = this.slzq2
  1650. this.table3.getdataListParm.parammaps.error = '有误差'
  1651. }
  1652. if(this.table4.getdataListParm.name == 'getprocessAnalysisSL'){
  1653. this.table4.getdataListParm.parammaps.hlwc1 = this.hlwc1
  1654. this.table4.getdataListParm.parammaps.hlwc2 = this.hlwc2
  1655. this.table4.getdataListParm.parammaps.hlzq1 = this.hlzq1
  1656. this.table4.getdataListParm.parammaps.hlzq2 = this.hlzq2
  1657. this.table4.getdataListParm.parammaps.slwc1 = this.slwc1
  1658. this.table4.getdataListParm.parammaps.slwc2 = this.slwc2
  1659. this.table4.getdataListParm.parammaps.slzq1 = this.slzq1
  1660. this.table4.getdataListParm.parammaps.slzq2 = this.slzq2
  1661. this.table4.getdataListParm.parammaps.error = '有误差'
  1662. }
  1663. if(this.table.getdataListParm.name == 'getprocessAnalysis'){
  1664. this.table.getdataListParm.parammaps.hlwc1 = this.hlwc1
  1665. this.table.getdataListParm.parammaps.hlwc2 = this.hlwc2
  1666. this.table.getdataListParm.parammaps.hlzq1 = this.hlzq1
  1667. this.table.getdataListParm.parammaps.hlzq2 = this.hlzq2
  1668. this.table.getdataListParm.parammaps.slwc1 = this.slwc1
  1669. this.table.getdataListParm.parammaps.slwc2 = this.slwc2
  1670. this.table.getdataListParm.parammaps.slzq1 = this.slzq1
  1671. this.table.getdataListParm.parammaps.slzq2 = this.slzq2
  1672. this.table.getdataListParm.parammaps.error = '有误差'
  1673. }
  1674. this.getList2()
  1675. this.getList3()
  1676. this.getList4()
  1677. }else{
  1678. this.table.getdataListParm.parammaps.error = ''
  1679. this.table3.getdataListParm.parammaps.error = ''
  1680. this.table4.getdataListParm.parammaps.error = ''
  1681. this.getList2()
  1682. this.getList3()
  1683. this.getList4()
  1684. }
  1685. }
  1686. }
  1687. }
  1688. </script>
  1689. <style lang="scss" scoped>
  1690. .filter-item1{
  1691. margin-top: 10px;
  1692. span{margin-right: 5px;}
  1693. }
  1694. /deep/.el-table--scrollable-y .el-table__body-wrapper{
  1695. bottom: 15px;
  1696. }
  1697. .detail{
  1698. height:84px;padding:0 10px;font:16px/32px '';color:#333;background: #F9F9F9;display: flex; align-items: center;text-align: center;
  1699. div{
  1700. height: 15px;width: 20%;border-right: 1px solid #E0E0E0;color: #333;
  1701. b{line-height: 20px;font-size: 16px;display: block;margin-top: -10px;height: 20px;color: #009A69;}
  1702. span{font-size: 14px;}
  1703. }
  1704. div:last-child{border-right:none}
  1705. }
  1706. .title{height: 50px;line-height: 50px;}
  1707. </style>