FuelInventoryList.cshtml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. 
  2. <div id="FuelInventoryListDiv" class="tank_table_div">
  3. <form action="" method="post" class="tank_form_div">
  4. <div v-if="currentTab == 'lastDelivery' || currentTab == 'historyDelivery'">
  5. <div class="tank_form_head">
  6. <label style="width: 32%" class="tank_form_label">开始/结束时间</label>
  7. <label style="width: 13%" class="tank_form_label">加油量(升)</label>
  8. <label style="width: 23%" class="tank_form_label">温度补偿油量(升)</label>
  9. <label style="width: 13%" class="tank_form_label">油位(mm)</label>
  10. <label style="width: 13%" class="tank_form_label" :style="showFilter">水位(mm)</label>
  11. </div>
  12. <div v-for="(r, index) in deliveryFilter" :key="index" class="tank_form_body">
  13. <div style="width: 90%; margin-left: 8.6%; text-align: left;">
  14. {{r.TankNumber}}号罐
  15. </div>
  16. <div style="width: 98%; margin-left: 1%;">
  17. <label style="width: 32.9%" class="tank_form_label">开始:{{r.StartingDateTime | formatDate}}</label>
  18. <label style="width: 13.9%" class="tank_form_label">{{r.StartingFuelVolume | numFilter}}</label>
  19. <label style="width: 23.5%" class="tank_form_label">{{r.StartingFuelTCVolume | numFilter}}</label>
  20. <label style="width: 13.9%" class="tank_form_label">{{r.StartingFuelHeight | numFilter}}</label>
  21. <label style="width: 13.5%" class="tank_form_label" :style="showFilter">{{r.StartingWaterHeight | numFilter}}</label>
  22. </div>
  23. <div style="width: 98%; margin-left: 1%;">
  24. <label style="width: 32.9%" class="tank_form_label">开始:{{r.EndingDateTime | formatDate}}</label>
  25. <label style="width: 13.9%" class="tank_form_label">{{r.EndingFuelVolume | numFilter}}</label>
  26. <label style="width: 23.5%" class="tank_form_label">{{r.EndingFuelTCVolume | numFilter}}</label>
  27. <label style="width: 13.9%" class="tank_form_label">{{r.EndingFuelHeight | numFilter}}</label>
  28. <label style="width: 13.5%" class="tank_form_label" :style="showFilter">{{r.EndingWaterHeight | numFilter}}</label>
  29. </div>
  30. <div style="width: 98%; margin-left: 1%;">
  31. <label style="width: 32.9%;padding-right: 12.8%" class="tank_form_label">统计:</label>
  32. <label style="width: 13.9%" class="tank_form_label">{{(r.EndingFuelVolume - r.StartingFuelVolume) | numFilter}}</label>
  33. <label style="width: 23.5%" class="tank_form_label">{{(r.EndingFuelTCVolume - r.StartingFuelTCVolume) | numFilter}}</label>
  34. <label style="width: 13.9%" class="tank_form_label"></label>
  35. <label style="width: 13.5%" class="tank_form_label"></label>
  36. </div>
  37. </div>
  38. </div>
  39. <div v-if="currentTab == 'lastInventory' || currentTab == 'inventoryReport'">
  40. <div class="tank_form_head">
  41. <label style="width: 22%" class="tank_form_label">日期时间</label>
  42. <label style="width: 13%" class="tank_form_label">油量(升)</label>
  43. <label style="width: 23%" class="tank_form_label">温度补偿油量(升)</label>
  44. <label style="width: 13%" class="tank_form_label">油位(mm)</label>
  45. <label style="width: 13%" class="tank_form_label">水位(mm)</label>
  46. <label style="width: 13%" class="tank_form_label" :style="showFilter">油温(℃)</label>
  47. </div>
  48. <div v-for="(r, index) in inventoryFilter" :key="index" class="tank_form_body">
  49. <label style="width: 22%" class="tank_form_label">{{r.TimeStamp | formatDate}}</label>
  50. <label style="width: 13%" class="tank_form_label">{{r.FuelVolume | numFilter}}</label>
  51. <label style="width: 23%" class="tank_form_label">{{r.FuelTCVolume | numFilter}}</label>
  52. <label style="width: 13%" class="tank_form_label">{{r.FuelHeight | numFilter}}</label>
  53. <label style="width: 13%" class="tank_form_label">{{r.WaterHeight | numFilter}}</label>
  54. <label style="width: 13%" class="tank_form_label" :style="showFilter">{{r.Temperture | numFilter}}</label>
  55. </div>
  56. </div>
  57. </form>
  58. <div class="config-right-navigation" :style="panelStyle">
  59. <div class="config-topright-tab">筛选查询</div>
  60. <div class="config-topright-settingselect">起始日期:</div>
  61. <input class="config-form-input" type="text" v-model="startDate" />
  62. @*<input class="config-form-date" type="date" v-model="startDate" />*@
  63. <div class="config-topright-settingselect">结束日期:</div>
  64. <input class="config-form-input" type="text" v-model="endDate" />
  65. @*<input class="config-form-date" type="date" v-model="endDate" />*@
  66. <div class="config-topright-settingselect">油罐选择:</div>
  67. <select class="config-form-select" v-model="tankNumber">
  68. <option v-for="(item, i) in tankArray" :key="i" :value="item.TankNumber">{{item.TankNumber}}号罐 {{item.Product.ProductLabel}}</option>
  69. </select>
  70. <div class="config-topright-settingselect">查询条件:</div>
  71. <div :class="currentTab == 'lastDelivery' ? 'config-topright-rnav-image' : 'config-topright-rnav'" @@click="search('lastDelivery')">最新进油</div>
  72. <div :class="currentTab == 'historyDelivery' ? 'config-topright-rnav-image' : 'config-topright-rnav'" @@click="search('historyDelivery')">进油报表</div>
  73. <div :class="currentTab == 'lastInventory' ? 'config-topright-rnav-image' : 'config-topright-rnav'" @@click="search('lastInventory')">最新库存</div>
  74. <div :class="currentTab == 'inventoryReport' ? 'config-topright-rnav-image' : 'config-topright-rnav'" @@click="search('inventoryReport')">库存报表</div>
  75. </div>
  76. <div class="tank_filter_div" :style="showFilter" @@click="clickFilter()">
  77. </div>
  78. </div>
  79. <script type="text/javascript">
  80. var vm = new Vue({
  81. el: '#FuelInventoryListDiv',
  82. data: {
  83. inventory: [],
  84. delivery: [],
  85. tankArray: [],
  86. startDate: null,
  87. endDate: null,
  88. tankNumber: 1,
  89. inventoryFilter: [],
  90. deliveryFilter: [],
  91. currentTab: 'lastInventory',
  92. panelStyle: 'visibility: hidden;',
  93. showFilter: 'visibility: visible;'
  94. },
  95. filters: {
  96. formatDate(value) {
  97. let realVal = ''
  98. if (value !== null && typeof (value) !== 'undefined') {
  99. realVal = value.substring(0, 16).replace('T', ' ')
  100. } else {
  101. realVal = 'N/A'
  102. }
  103. return realVal
  104. },
  105. numFilter(value) {
  106. let realVal = ''
  107. if (!isNaN(value) && value !== '') {
  108. realVal = parseFloat(value).toFixed(3)
  109. } else {
  110. realVal = 'N/A'
  111. }
  112. return realVal
  113. }
  114. },
  115. methods: {
  116. search(tab) {
  117. this.currentTab = tab
  118. this.panelStyle = 'visibility: hidden;'
  119. this.showFilter = 'visibility: visible;'
  120. let path = '/sys/VeederRoot_ATG_Console_Tcp/VeederRoot_ATG_Console.Handler/thing/service/'
  121. let endDateHour = this.toDateString(new Date(this.endDate + ' 24:0:0'))
  122. if (tab == 'lastDelivery') {
  123. Publish2('[1, 10, 0, null]', path, 'GetTankDeliveryAsync')
  124. } else if (tab == 'historyDelivery') {
  125. this.deliveryFilter = this.delivery.filter(item => item.TankNumber == this.tankNumber && item.StartingDateTime >= this.startDate && item.EndingDateTime < endDateHour)
  126. } else if (tab == 'lastInventory') {
  127. Publish2('[1, 10, 0, null]', path, 'GetTankInventoryAsync')
  128. } else if (tab == 'inventoryReport') {
  129. this.inventoryFilter = this.inventory.filter(item => item.TimeStamp >= this.startDate && item.TimeStamp < endDateHour)
  130. }
  131. this.$forceUpdate()
  132. },
  133. clickFilter() {
  134. this.panelStyle = 'visibility: visible;'
  135. this.showFilter = 'visibility: hidden;'
  136. },
  137. PrefixInteger(num, length) {
  138. return ('000' + num).substr(-length)
  139. },
  140. toDateString(date) {
  141. return date.getFullYear() + '-' + this.PrefixInteger(date.getMonth() + 1, 2) + '-' + this.PrefixInteger(date.getDate(), 2)
  142. }
  143. },
  144. watch: {
  145. inventory: {
  146. handler(newValue, oldValue) {
  147. if (this.inventoryFilter.length <= 0) {
  148. this.inventoryFilter = newValue
  149. this.$forceUpdate()
  150. }
  151. },
  152. deep: true
  153. },
  154. delivery: {
  155. handler(newValue, oldValue) {
  156. if (this.deliveryFilter.length <= 0) {
  157. this.deliveryFilter = newValue
  158. this.$forceUpdate()
  159. }
  160. },
  161. deep: true
  162. }
  163. },
  164. mounted() {
  165. this.startDate = this.toDateString(new Date())
  166. this.endDate = this.toDateString(new Date())
  167. let path = '/sys/VeederRoot_ATG_Console_Tcp/VeederRoot_ATG_Console.Handler/thing/service/'
  168. Publish2('[1, 10, 0, null]', path, 'GetTankInventoryAsync')
  169. Publish1(path, 'GetTanksAsync')
  170. }
  171. })
  172. function OnReply(apis, topic, jsonObj) {
  173. let tankspath = apis.has("GetTanksAsync_Reply") ? apis.get("GetTanksAsync_Reply") : '/sys/VeederRoot_ATG_Console_Tcp/VeederRoot_ATG_Console.Handler/thing/service/GetTanksAsync_Reply'
  174. let inventorypath = apis.has("GetTankInventoryAsync_Reply") ? apis.get("GetTankInventoryAsync_Reply") : '/sys/VeederRoot_ATG_Console_Tcp/VeederRoot_ATG_Console.Handler/thing/service/GetTankInventoryAsync_Reply'
  175. let deliverypath = apis.has("GetTankDeliveryAsync_Reply") ? apis.get("GetTankDeliveryAsync_Reply") : '/sys/VeederRoot_ATG_Console_Tcp/VeederRoot_ATG_Console.Handler/thing/service/GetTankDeliveryAsync_Reply'
  176. if (topic === inventorypath) {
  177. vm.inventory = jsonObj
  178. } else if (topic === tankspath) {
  179. vm.tankArray = jsonObj
  180. } else if (topic === deliverypath) {
  181. vm.delivery = jsonObj
  182. }
  183. }
  184. </script>