index.vue 62 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158
  1. <template>
  2. <div class="app-container">
  3. <el-tabs v-model="activeName" @tab-click="handleTabClick">
  4. <el-tab-pane :label="$t('InventoryManagement.kctj')" name="first">
  5. <div class="search">
  6. <el-date-picker v-model="tab.table.getdataListParm.parammaps.inputDatetime" :clearable="false" class="inputDatetime filter-item" type="daterange" :range-separator="$t('common.to')" :start-placeholder="$t('common.startTime')" :end-placeholder="$t('common.endTime')" style="float: left;width: 250px;margin-bottom:10px;" :picker-options="pickerOptions" />
  7. <el-button class="el-icon-arrow-left elIconArrowLeft" :disabled="Beforedisabled" style="float: left;" @click="handleBefore" />
  8. <el-button class="el-icon-arrow-right elIconArrowRight" :disabled="Nextdisabled" style="float: left;" @click="handleNext" />
  9. <el-input v-model="tab.table.getdataListParm.parammaps.feedname" class="filter-item" style="float: left;width: 245px;margin-bottom:10px;":placeholder="$t('InventoryManagement.silc')" />
  10. <el-button class="successBorder" style="float: left;margin-left: 10px;margin-bottom:10px;" @click="form_search('first')">{{$t('common.query')}}</el-button>
  11. <el-button class="export" style="float: right;margin-right: 10px;margin-bottom:10px;" icon="el-icon-upload2" @click="handleExport('tab1')">{{$t('dashboard.Export')}}</el-button>
  12. </div>
  13. <div class="table">
  14. <el-table
  15. :key="tab.table.tableKey"
  16. v-loading="tab.table.listLoading"
  17. :element-loading-text="$t('common.tableMsg')"
  18. :data="tab.table.list"
  19. border
  20. fit
  21. highlight-current-row
  22. style="width: 100%;"
  23. :row-style="rowStyle"
  24. :cell-style="cellStyle"
  25. class="elTable table-fixed"
  26. ref="table1"
  27. >
  28. <el-table-column sortable :label="$t('InventoryManagement.silc')" min-width="130px" align="center">
  29. <template slot-scope="scope">
  30. <span>{{ scope.row.feedname }}</span>
  31. </template>
  32. </el-table-column>
  33. <el-table-column :label="$t('InventoryManagement.qc')" min-width="130px" align="center">
  34. <el-table-column sortable prop="startsum" align="center" :label="$t('InventoryManagement.qckc')" min-width="120" />
  35. <el-table-column sortable prop="startprice" align="center" :label="$t('InventoryManagement.qcje')" min-width="120" />
  36. </el-table-column>
  37. <el-table-column :label="$t('InventoryManagement.yl')" min-width="110px" align="center">
  38. <el-table-column sortable prop="laidsum" align="center" :label="$t('InventoryManagement.rkylzl')" min-width="120" />
  39. <el-table-column sortable prop="usesumXT" align="center" :label="$t('InventoryManagement.xtckyl')" min-width="120" />
  40. <el-table-column sortable prop="usesumRG" align="center" :label="$t('InventoryManagement.rgylzl')" min-width="120" />
  41. <el-table-column sortable prop="usesumXH" align="center" :label="$t('InventoryManagement.chzl')" min-width="120" />
  42. </el-table-column>
  43. <el-table-column :label="$t('InventoryManagement.qm')" min-width="130px" align="center">
  44. <el-table-column sortable prop="stopsum" align="center" :label="$t('InventoryManagement.qmkc')" min-width="120" />
  45. <el-table-column sortable prop="stopprice" align="center" :label="$t('InventoryManagement.qmje')" min-width="120" />
  46. </el-table-column>
  47. </el-table>
  48. <pagination v-show="tab.table.total>=0" :total="tab.table.total" :page.sync="tab.table.getdataListParm.offset" :limit.sync="tab.table.getdataListParm.pagecount" @pagination="getTabList" />
  49. </div>
  50. </el-tab-pane>
  51. <el-tab-pane :label="$t('InventoryManagement.yltj')" name="second">
  52. <div class="search">
  53. <el-date-picker v-model="tab2.table.getdataListParm.parammaps.inputDatetime" :clearable="false" class="inputDatetime filter-item" type="daterange" :range-separator="$t('common.to')" :start-placeholder="$t('common.startTime')" :end-placeholder="$t('common.endTime')" style="width: 245px;" :picker-options="pickerOptions2" />
  54. <el-button class="el-icon-arrow-left elIconArrowLeft" :disabled="Beforedisabled2" @click="handleBefore2" />
  55. <el-button class="el-icon-arrow-right elIconArrowRight" :disabled="Nextdisabled2" @click="handleNext2" />
  56. <span style="margin-left: 10px;">{{$t('errorAnalysis.typeName')}}</span>
  57. <el-select v-model="tab2.radio" :placeholder="$t('InventoryManagement.tjlx')" class="filter-item" style="width: 120px;" @change="changeRadio2">
  58. <el-option v-for="item in statisticalTypeList2" :key="item.id" :label="item.name" :value="item.id" />
  59. </el-select>
  60. <el-checkbox v-model="tab2.table.getdataListParm.checked" :true-label="1" :false-label="0" style="margin-right:10px;" @change="changeChecked">{{$t('InventoryManagement.wc')}}</el-checkbox>
  61. <el-select v-model="tab2.table.getdataListParm.parammaps.ftType" :placeholder="$t('InventoryManagement.sfcfxl')" class="filter-item" style="width: 130px;">
  62. <el-option v-for="item in isSplitsmallmaterialsList" :key="item.id" :label="item.name" :value="item.id" />
  63. </el-select>
  64. <el-input v-if="tab2.isRadio1" v-model="tab2.table.getdataListParm.parammaps.fname" class="filter-item filter-item1" style="width: 200px;" :placeholder="$t('feedingEfficiency.cxlb')" />
  65. <el-input v-if="tab2.isRadio2" v-model="tab2.table.getdataListParm.parammaps.fname" class="filter-item filter-item1" style="width: 200px;" :placeholder="$t('errorAnalysis.isHouseName')" />
  66. <el-input v-if="tab2.isRadio3" v-model="tab2.table.getdataListParm.parammaps.fname" class="filter-item filter-item1" style="width: 200px;" :placeholder="$t('InventoryManagement.rq')" />
  67. <el-input v-if="tab2.isRadio4" v-model="tab2.table.getdataListParm.parammaps.fname" class="filter-item filter-item1" style="width: 200px;" :placeholder="$t('InventoryManagement.tmrsbbh')" />
  68. <el-input v-if="tab2.isRadio5" v-model="tab2.table.getdataListParm.parammaps.fname" class="filter-item filter-item1" style="width: 200px;" :placeholder="$t('errorAnalysis.isTrainNumber')" />
  69. <el-input v-if="tab2.isRadio6" v-model="tab2.table.getdataListParm.parammaps.fname" class="filter-item filter-item1" style="width: 200px;" :placeholder="$t('errorAnalysis.projname')" />
  70. <el-select v-model="tab2.table.getdataListParm.parammaps.typea" clearable :placeholder="$t('InventoryManagement.lbxs')" class="filter-item" style="width: 120px;">
  71. <el-option v-for="item in displayList" :key="item.id" :label="item.name" :value="item.id" />
  72. </el-select>
  73. <el-select v-model="tab2.table.getdataListParm.parammaps.times" clearable filterable :placeholder="$t('errorAnalysis.isTrainNumber')" class="filter-item" style="width: 120px;">
  74. <el-option v-for="item in frequencyList" :key="item.id" :label="item.name" :value="item.id" />
  75. </el-select>
  76. <el-button class="successBorder" @click="form_search('second')">{{$t('common.query')}}</el-button>
  77. <el-button class="export" style="float: right;margin-right: 5px;margin-top:10px;" icon="el-icon-upload2" @click="handleExport('tab2')">{{$t('dashboard.Export')}}</el-button>
  78. <el-button class="export" style="float: right;margin-right: 5px;margin-top:10px;" icon="el-icon-upload2" @click="handlesWitch()">{{
  79. $t('InventoryManagement.qhzs')
  80. }}</el-button>
  81. </div>
  82. <div v-if="isTable1">
  83. <div v-if="tab2.table.tableConfig.length > 8">
  84. <u-table v-if="isDispayTable2" ref="plTable2" v-loading="tab2.table.listLoading" :row-style="rowStyle" :cell-style="cellStyle" :max-height="myHeight2" use-virtual :row-height="rowHeight" border class="elTable table-fixed plTable2">
  85. <!-- 第一个表头 -->
  86. <u-table-column v-for="(header1, index1) in tab2.table.tableConfig" :key="'header1-' + index1" :label="header1.label" align="center" :fixed="index1==0" :show-overflow-tooltip="header1.showOverflow" >
  87. <!-- 第二个表头 -->
  88. <u-table-column v-for="(header2, index2) in header1.children" :key="'header2-' + index2" :label="header2.label" align="center" :fixed="index2==0" :show-overflow-tooltip="header2.showOverflow">
  89. <!-- 第三个表头 -->
  90. <u-table-column v-for="(header3, index3) in header2.children" :key="'header3-' + index3" :label="header3.label" :prop="header3.prop" align="center">
  91. </u-table-column>
  92. </u-table-column>
  93. </u-table-column>
  94. </u-table>
  95. <!-- <u-table v-if="isDispayTable2" ref="plTable2" v-loading="tab2.table.listLoading" :row-style="rowStyle" :cell-style="cellStyle" :max-height="myHeight2" use-virtual :row-height="rowHeight" border class="elTable table-fixed plTable2">
  96. <u-table-column v-for="(item,index) in tab2.table.tableConfig" :key="index" :label="item.label" :show-overflow-tooltip="item.showOverflow" :prop="item.prop" align="center" :fixed="index==0">
  97. <u-table-column v-for="(item1,key1) in item.children" v-if="item.children || item.children.length>0" :key="key1" :label="item1.label" :prop="item1.prop" align="center">
  98. <u-table-column v-for="(item2,key2) in item1.children" v-if="item1.children || item1.children.length>0" :key="key2" :label="item2.label" :prop="item2.prop" />
  99. </u-table-column>
  100. </u-table-column>
  101. </u-table> -->
  102. </div>
  103. <div v-else>
  104. <u-table v-if="isDispayTable2" ref="plTable2" v-loading="tab2.table.listLoading" :row-style="rowStyle" :cell-style="cellStyle" :max-height="myHeight2" use-virtual :row-height="rowHeight" border class="elTable table-fixed plTable2">
  105. <!-- 第一个表头 -->
  106. <u-table-column v-for="(header1, index1) in tab2.table.tableConfig" :key="'header1-' + index1" :label="header1.label" align="center" :fixed="index1==0" :show-overflow-tooltip="header1.showOverflow">
  107. <!-- 第二个表头 -->
  108. <u-table-column v-for="(header2, index2) in header1.children" :key="'header2-' + index2" :label="header2.label" align="center" :fixed="index2==0" :show-overflow-tooltip="header2.showOverflow">
  109. <!-- 第三个表头 -->
  110. <u-table-column v-for="(header3, index3) in header2.children" :key="'header3-' + index3" :label="header3.label" :prop="header3.prop" align="center">
  111. </u-table-column>
  112. </u-table-column>
  113. </u-table-column>
  114. </u-table>
  115. <!-- <u-table v-if="isDispayTable2" ref="plTable2" v-loading="tab2.table.listLoading" :row-style="rowStyle" :cell-style="cellStyle" :max-height="myHeight2" use-virtual :row-height="rowHeight" border class="elTable table-fixed plTable2">
  116. <u-table-column v-for="(item,index) in tab2.table.tableConfig" :key="index" :label="item.label" :show-overflow-tooltip="item.showOverflow" :prop="item.prop" align="center">
  117. <u-table-column v-for="(item1,key1) in item.children" v-if="item.children || item.children.length>0" :key="key1" :label="item1.label" :prop="item1.prop" align="center">
  118. <u-table-column v-for="(item2,key2) in item1.children" v-if="item1.children || item1.children.length>0" :key="key2" :label="item2.label" :prop="item2.prop" />
  119. </u-table-column>
  120. </u-table-column>
  121. </u-table> -->
  122. </div>
  123. <span v-if="tab2.table.listLoading == false && tab2.table.list.length>0" style="margin-right: 30px;margin-top: 10px;font-size: 14px;">{{$t('processAnalysis.total')}}{{ tab2.table.total }}{{$t('processAnalysis.tiao')}}</span>
  124. </div>
  125. <div v-else>
  126. <!-- 新展示 -->
  127. <u-table :span-method="objectSpanMethod" ref="plTable22" v-loading="tab2.table.listLoading" :row-style="rowStyle" :cell-style="cellStyle" :max-height="myHeight2" use-virtual :row-height="rowHeight" border class="elTable table-fixed plTable2">
  128. <u-table-column v-for="(column, index) in tableColumns" :key="index" :prop="column.prop" :label="column.label" align="center"></u-table-column>
  129. </u-table>
  130. </div>
  131. </el-tab-pane>
  132. <el-tab-pane :label="$t('InventoryManagement.jgfx')" name="third" >
  133. <div class="search">
  134. <el-date-picker v-model="tab3.table.getdataListParm.parammaps.inputDatetime" class="inputDatetime filter-item" type="daterange" :range-separator="$t('common.to')" :start-placeholder="$t('common.startTime')" :end-placeholder="$t('common.endTime')" :clearable="false" style="width: 250px;" :picker-options="pickerOptions" />
  135. <el-button class="el-icon-arrow-left elIconArrowLeft" :disabled="Beforedisabled3" @click="handleBefore3" />
  136. <el-button class="el-icon-arrow-right elIconArrowRight" :disabled="Nextdisabled3" @click="handleNext3" />
  137. <span style="margin-left: 10px;">{{$t('errorAnalysis.typeName')}}</span>
  138. <el-select v-model="tab3.radio" :placeholder="$t('InventoryManagement.tjlx')" class="filter-item" style="width: 120px;" @change="changeRadio3">
  139. <el-option v-for="item in statisticalTypeList3" :key="item.id" :label="item.name" :value="item.id" />
  140. </el-select>
  141. <!-- <el-radio v-model="tab3.radio" label="1" @change="changeRadio3">{{$t('feedingEfficiency.cxlb')}}</el-radio>
  142. <el-radio v-model="tab3.radio" label="2" @change="changeRadio3">{{$t('errorAnalysis.isHouseName')}}</el-radio>
  143. <el-radio v-model="tab3.radio" label="3" @change="changeRadio3">{{$t('errorAnalysis.date')}}</el-radio>
  144. <el-radio v-model="tab3.radio" label="4" @change="changeRadio3">{{$t('InventoryManagement.tmrsbbh')}}</el-radio> -->
  145. <el-input v-if="tab3.isRadio1" v-model="tab3.table.getdataListParm.parammaps.fname" class="filter-item" style="width: 185px;" :placeholder="$t('feedingEfficiency.cxlb')" />
  146. <el-input v-if="tab3.isRadio2" v-model="tab3.table.getdataListParm.parammaps.fname" class="filter-item" style="width: 185px;" :placeholder="$t('errorAnalysis.isHouseName')" />
  147. <el-input v-if="tab3.isRadio3" v-model="tab3.table.getdataListParm.parammaps.fname" class="filter-item" style="width: 185px;" :placeholder="$t('InventoryManagement.rq')" />
  148. <el-input v-if="tab3.isRadio4" v-model="tab3.table.getdataListParm.parammaps.fname" class="filter-item" style="width: 185px;" :placeholder="$t('InventoryManagement.tmrsbbh')" />
  149. <el-button class="successBorder" @click="form_search('third')">{{$t('common.query')}}</el-button>
  150. <el-button class="export filter-item1" style="float: right;margin-right: 5px;" icon="el-icon-upload2" @click="handleExport('tab3')">{{$t('dashboard.Export')}}</el-button>
  151. </div>
  152. <div v-if="tab3.table.tableConfig.length>2">
  153. <u-table v-if="isDispayTable3" ref="plTable3" v-loading="tab3.table.listLoading" :row-style="rowStyle" :cell-style="cellStyle" :max-height="myHeight2" use-virtual :row-height="rowHeight" border class="elTable table-fixed plTable3">
  154. <u-table-column v-for="(item,key) in tab3.table.tableConfig" :key="key" :label="item.label" :show-overflow-tooltip="item.showOverflow" align="center" :prop="item.prop" :fixed="key==0">
  155. <u-table-column v-for="(item1,key1) in item.children" v-if="item.children || item.children.length>0" :key="key1" align="center" :label="item1.label" :prop="item1.prop" :min-width="item1.width">
  156. <u-table-column v-for="(item2,key2) in item1.children" v-if="item1.children || item1.children.length>0" :key="key2" :label="item2.label" :prop="item2.prop" />
  157. </u-table-column>
  158. </u-table-column>
  159. </u-table>
  160. </div>
  161. <div v-else>
  162. <u-table v-if="isDispayTable3" ref="plTable3" v-loading="tab3.table.listLoading" :row-style="rowStyle" :cell-style="cellStyle" :max-height="myHeight2" use-virtual :row-height="rowHeight" border class="elTable table-fixed plTable3">
  163. <u-table-column v-for="(item,key) in tab3.table.tableConfig" :key="key" :label="item.label" :show-overflow-tooltip="item.showOverflow" align="center" :prop="item.prop">
  164. <u-table-column v-for="(item1,key1) in item.children" v-if="item.children || item.children.length>0" :key="key1" align="center" :label="item1.label" :prop="item1.prop" :min-width="item1.width">
  165. <u-table-column v-for="(item2,key2) in item1.children" v-if="item1.children || item1.children.length>0" :key="key2" :label="item2.label" :prop="item2.prop" />
  166. </u-table-column>
  167. </u-table-column>
  168. </u-table>
  169. </div>
  170. <span v-if="tab3.table.listLoading == false && tab3.table.list.length>0" style="margin-right: 30px;margin-top: 10px;font-size: 14px;">{{$t('processAnalysis.total')}}{{ tab3.table.total }}{{$t('processAnalysis.tiao')}}</span>
  171. </el-tab-pane>
  172. </el-tabs>
  173. </div>
  174. </div>
  175. </template>
  176. <script>
  177. import { GetDataByName, GetReportform,postJson } from '@/api/common'
  178. import Cookies from 'js-cookie'
  179. import { parseTime } from '@/utils/index.js'
  180. import Pagination from '@/components/Pagination'
  181. import { json2excel, export_json_to_excel } from '@/utils/index.js'
  182. export default {
  183. name: 'PastureInventoryManagement',
  184. components: { Pagination },
  185. data() {
  186. return {
  187. Beforedisabled: false,
  188. Nextdisabled: false,
  189. Beforedisabled2: false,
  190. Nextdisabled2: false,
  191. Beforedisabled3: false,
  192. Nextdisabled3: false,
  193. pickerMinDate: '',
  194. pickerOptions: {
  195. onPick: ({ maxDate, minDate }) => {
  196. this.pickerMinDate = minDate.getTime()
  197. if (maxDate) {
  198. this.pickerMinDate = ''
  199. }
  200. },
  201. // 限制不能选择今天之后的日期
  202. disabledDate: (time) => {
  203. if (this.pickerMinDate !== '') {
  204. const one = 31 * 24 * 3600 * 1000
  205. const minTime = this.pickerMinDate - one
  206. let maxTime = this.pickerMinDate + one
  207. if (maxTime > new Date()) {
  208. maxTime = new Date()
  209. }
  210. return time.getTime() < minTime || time.getTime() > maxTime
  211. }
  212. return time.getTime() > Date.now()
  213. }
  214. },
  215. pickerOptions2: {
  216. onPick: ({ maxDate, minDate }) => {
  217. this.pickerMinDate = minDate.getTime()
  218. if (maxDate) {
  219. this.pickerMinDate = ''
  220. }
  221. },
  222. // 限制不能选择今天之后的日期
  223. disabledDate: (time) => {
  224. if (this.pickerMinDate !== '') {
  225. const one = 31 * 24 * 3600 * 1000
  226. const minTime = this.pickerMinDate - one
  227. let maxTime = this.pickerMinDate + one
  228. // if (maxTime > new Date()) {
  229. // maxTime = new Date()
  230. // }
  231. return time.getTime() < minTime || time.getTime() > maxTime
  232. }
  233. // return time.getTime() > Date.now()
  234. }
  235. },
  236. fileComment: [{ 'label': '商务文件评分', 'children': [{ 'label': '1' }, { 'label': '2' }, { 'label': '管理员' }] }],
  237. displayList:[{id:'1',name:'理论'},{id:'2',name:'实际'}],//列表显示
  238. isSplitsmallmaterialsList:[{id:'0',name:'拆分'},{id:'1',name:'不拆分'}],
  239. activeName: 'first',
  240. tab: {
  241. chartDate: [],
  242. table: {
  243. getdataListParm: {
  244. name: 'getfsStaticlist',
  245. page: 1,
  246. offset: 1,
  247. pagecount: parseInt(Cookies.get('pageCount')),
  248. returntype: 'Map',
  249. parammaps: {
  250. pastureid: Cookies.get('pastureid'),
  251. startTime: parseTime(new Date(), '{y}-{m}-{d}'),
  252. stopTime: parseTime(new Date(), '{y}-{m}-{d}'),
  253. inputDatetime: [new Date(), new Date()],
  254. feedname: ''
  255. }
  256. },
  257. tableKey: 1,
  258. list: [],
  259. total: 0,
  260. listLoading: false
  261. }
  262. },
  263. tab2: {
  264. chartDate: [],
  265. display:'',
  266. table: {
  267. getdataListParm: {
  268. name: 'getMaterialAnalysisSC',
  269. page: 1,
  270. offset: 1,
  271. pagecount: '',
  272. returntype: 'Map',
  273. checked: 0,
  274. parammaps: {
  275. pastureid: Cookies.get('pastureid'),
  276. startTime: parseTime(new Date(), '{y}-{m}-{d}'),
  277. stopTime: parseTime(new Date(), '{y}-{m}-{d}'),
  278. inputDatetime: [new Date(), new Date()],
  279. fname: '',
  280. typea:'',
  281. times:'',
  282. ftType:'1'
  283. }
  284. },
  285. tableKey: 1,
  286. list: [],
  287. tableConfig: [],
  288. data: [],
  289. total: 0,
  290. listLoading: false
  291. },
  292. radio: '1',
  293. isRadio1: true,
  294. isRadio2: false,
  295. isRadio3: false,
  296. isRadio4: false,
  297. isRadio5: false,
  298. isRadio6: false
  299. },
  300. tab3: {
  301. chartDate: [],
  302. table: {
  303. getdataListParm: {
  304. name: 'getPriceAnalysisSC',
  305. page: 1,
  306. offset: 1,
  307. pagecount: parseInt(Cookies.get('pageCount')),
  308. returntype: 'Map',
  309. parammaps: {
  310. pastureid: Cookies.get('pastureid'),
  311. startTime: parseTime(new Date(), '{y}-{m}-{d}'),
  312. stopTime: parseTime(new Date(), '{y}-{m}-{d}'),
  313. inputDatetime: [new Date(), new Date()],
  314. fname: ''
  315. }
  316. },
  317. tableKey: 1,
  318. list: [],
  319. tableConfig: [],
  320. total: 0,
  321. listLoading: false
  322. },
  323. radio: '1',
  324. isRadio1: true,
  325. isRadio2: false,
  326. isRadio3: false,
  327. isRadio4: false
  328. },
  329. downLoad: {},
  330. rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
  331. cellStyle: { padding: 0 + 'px' },
  332. myHeight2: document.documentElement.clientHeight - 95 - 150,
  333. rowHeight: 30,
  334. isDispayTable2:false,
  335. isDispayTable3:false,
  336. statisticalTypeList2: [{ id: '1', name: this.$t('errorAnalysis.sxlb') }, { id: '2', name: this.$t('errorAnalysis.isHouseName') }, { id: '3', name:this.$t('errorAnalysis.date') }, { id: '4', name: this.$t('InventoryManagement.tmrsbbh') }, { id: '5', name: 'TMR班次' }, { id: '6', name: this.$t('errorAnalysis.projname') }],
  337. statisticalTypeList3: [{ id: '1', name: this.$t('errorAnalysis.sxlb') }, { id: '2', name: this.$t('errorAnalysis.isHouseName') }, { id: '3', name:this.$t('errorAnalysis.date') }, { id: '4', name: this.$t('InventoryManagement.tmrsbbh') }],
  338. frequencyList: [], // 班次
  339. isTable1:true,
  340. spanObj: {},
  341. mergekeys: ['A', 'B'],
  342. tableColumns:[],
  343. myData:{},
  344. columnsToTotal: ['10-配种']
  345. }
  346. },
  347. created() {
  348. this.getTimeFn()
  349. this.getIsDisplay()
  350. },
  351. methods: {
  352. getIsDisplay() {
  353. const url = 'authdata/GetDataByName'
  354. const data = {
  355. name: 'getSysoptEnable',
  356. page: 1,
  357. offset: 1,
  358. pagecount: 1,
  359. returntype: 'Map',
  360. parammaps: {
  361. pastureid: Cookies.get('pastureid'),
  362. inforname: 'times'
  363. }
  364. }
  365. postJson(url, data).then(response => {
  366. console.log(response.data.list[0].inforvalue)
  367. if (response.data.list[0].inforvalue == 1) {
  368. this.frequencyList = [{ id: 1, name: this.$t('errorAnalysis.one'), }]
  369. } else if (response.data.list[0].inforvalue == 2) {
  370. this.frequencyList = [
  371. { id: 1, name: this.$t('errorAnalysis.one'), }, { id: 2, name: this.$t('errorAnalysis.two'), }
  372. ]
  373. } else if (response.data.list[0].inforvalue == 3) {
  374. this.frequencyList = [
  375. { id: 1, name: this.$t('errorAnalysis.one'), }, { id: 2, name: this.$t('errorAnalysis.two'), }, { id: 3, name: this.$t('errorAnalysis.three'), }
  376. ]
  377. } else if (response.data.list[0].inforvalue == 4) {
  378. this.frequencyList = [
  379. { id: 1, name: this.$t('errorAnalysis.one'), }, { id: 2, name: this.$t('errorAnalysis.two'), }, { id: 3, name: this.$t('errorAnalysis.three'), }, { id: 4, name: this.$t('errorAnalysis.four'), }
  380. ]
  381. }else if (response.data.list[0].inforvalue == 5) {
  382. this.frequencyList = [
  383. { id: 1, name: this.$t('errorAnalysis.one'), }, { id: 2, name: this.$t('errorAnalysis.two'), }, { id: 3, name: this.$t('errorAnalysis.three'), }, { id: 4, name: this.$t('errorAnalysis.four'), }, { id: 5, name: this.$t('errorAnalysis.five'), }
  384. ]
  385. }else if (response.data.list[0].inforvalue == 6) {
  386. this.frequencyList = [
  387. { id: 1, name: this.$t('errorAnalysis.one'), }, { id: 2, name: this.$t('errorAnalysis.two'), }, { id: 3, name: this.$t('errorAnalysis.three'), }, { id: 4, name: this.$t('errorAnalysis.four'), }, { id: 5, name: this.$t('errorAnalysis.five'), }, { id: 6, name: this.$t('errorAnalysis.six'), },
  388. ]
  389. }
  390. })
  391. },
  392. getTimeFn() {
  393. const that = this
  394. const start = new Date()
  395. const end = new Date()
  396. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
  397. end.setTime(end.getTime() - 3600 * 1000 * 24 * 1)
  398. that.tab.table.getdataListParm.parammaps.startTime = parseTime(start, '{y}-{m}-{d}')
  399. that.tab.table.getdataListParm.parammaps.stopTime = parseTime(end, '{y}-{m}-{d}')
  400. that.tab.table.getdataListParm.parammaps.inputDatetime = [start, end]
  401. that.tab2.table.getdataListParm.parammaps.startTime = parseTime(end, '{y}-{m}-{d}')
  402. that.tab2.table.getdataListParm.parammaps.stopTime = parseTime(end, '{y}-{m}-{d}')
  403. that.tab2.table.getdataListParm.parammaps.inputDatetime = [end, end]
  404. that.tab3.table.getdataListParm.parammaps.startTime = parseTime(end, '{y}-{m}-{d}')
  405. that.tab3.table.getdataListParm.parammaps.stopTime = parseTime(end, '{y}-{m}-{d}')
  406. that.tab3.table.getdataListParm.parammaps.inputDatetime = [end, end]
  407. this.getTabList()
  408. },
  409. handleTabClick() {
  410. if (this.activeName == 'first') {
  411. const start = new Date()
  412. const end = new Date()
  413. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
  414. end.setTime(end.getTime() - 3600 * 1000 * 24 * 1)
  415. this.tab.table.getdataListParm.parammaps.inputDatetime = [start, end]
  416. this.getTabList()
  417. } else if (this.activeName == 'second') {
  418. const start2 = new Date()
  419. const end2 = new Date()
  420. start2.setTime(start2.getTime() - 3600 * 1000 * 24 * 1)
  421. end2.setTime(end2.getTime() - 3600 * 1000 * 24 * 1)
  422. this.tab2.table.getdataListParm.parammaps.inputDatetime = [start2, end2]
  423. this.tab2.radio = '1'
  424. this.tab2.table.getdataListParm.parammaps.ftType = '1'
  425. this.tab2.table.getdataListParm.parammaps.startTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  426. this.tab2.table.getdataListParm.parammaps.stopTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  427. this.getTab2List()
  428. } else if (this.activeName == 'third') {
  429. const start3 = new Date()
  430. const end3 = new Date()
  431. start3.setTime(start3.getTime() - 3600 * 1000 * 24 * 1)
  432. end3.setTime(end3.getTime() - 3600 * 1000 * 24 * 1)
  433. this.tab3.table.getdataListParm.parammaps.inputDatetime = [start3, end3]
  434. this.tab3.radio = '1'
  435. this.tab3.table.getdataListParm.parammaps.startTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  436. this.tab3.table.getdataListParm.parammaps.stopTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  437. this.getTab3List()
  438. }
  439. },
  440. getTabList() {
  441. this.tab.table.listLoading = true
  442. GetDataByName(this.tab.table.getdataListParm).then(response => {
  443. if (response.data.list !== null) {
  444. console.log('库存统计table数据', response.data.list)
  445. this.tab.table.list = response.data.list
  446. this.tab.table.total = response.data.total
  447. } else {
  448. this.tab.table.list = []
  449. }
  450. setTimeout(() => {
  451. this.tab.table.listLoading = false
  452. }, 100)
  453. })
  454. },
  455. form_search(item) {
  456. if (item == 'first') {
  457. if (this.tab.table.getdataListParm.parammaps.inputDatetime !== '' && this.tab.table.getdataListParm.parammaps.inputDatetime !== null) {
  458. this.tab.table.getdataListParm.parammaps.startTime = parseTime(this.tab.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  459. this.tab.table.getdataListParm.parammaps.stopTime = parseTime(this.tab.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  460. } else {
  461. this.tab.table.getdataListParm.parammaps.inputDatetime = ''
  462. this.tab.table.getdataListParm.parammaps.startTime = ''
  463. this.tab.table.getdataListParm.parammaps.stopTime = ''
  464. }
  465. this.getTabList()
  466. } else if (item == 'second') {
  467. if (this.tab2.table.getdataListParm.parammaps.inputDatetime !== '' && this.tab2.table.getdataListParm.parammaps.inputDatetime !== null) {
  468. this.tab2.table.getdataListParm.parammaps.startTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  469. this.tab2.table.getdataListParm.parammaps.stopTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  470. } else {
  471. this.tab2.table.getdataListParm.parammaps.inputDatetime = ''
  472. this.tab2.table.getdataListParm.parammaps.startTime = ''
  473. this.tab2.table.getdataListParm.parammaps.stopTime = ''
  474. }
  475. this.getTab2List()
  476. } else if (item == 'third') {
  477. if (this.tab3.table.getdataListParm.parammaps.inputDatetime !== '' && this.tab3.table.getdataListParm.parammaps.inputDatetime !== null) {
  478. this.tab3.table.getdataListParm.parammaps.startTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  479. this.tab3.table.getdataListParm.parammaps.stopTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  480. } else {
  481. this.tab3.table.getdataListParm.parammaps.inputDatetime = ''
  482. this.tab3.table.getdataListParm.parammaps.startTime = ''
  483. this.tab3.table.getdataListParm.parammaps.stopTime = ''
  484. }
  485. this.getTab3List()
  486. }
  487. },
  488. // 用料分析
  489. getTab2List() {
  490. this.tab2.table.listLoading = true
  491. this.isDispayTable2 = false
  492. setTimeout(()=>{
  493. this.isDispayTable2 = true
  494. this.$nextTick(() => {
  495. let myList = []
  496. if(this.isTable1){
  497. this.tab2.table.getdataListParm.parammaps.mode = 0
  498. }else{
  499. this.tab2.table.getdataListParm.parammaps.mode = 1
  500. }
  501. GetReportform(this.tab2.table.getdataListParm).then(response => {
  502. if(this.isTable1){
  503. if (response.data !== null && response.data.data !== null && response.data.data1 !== null) {
  504. this.tab2.table.data = response.data.data
  505. response.data.feedcode.push('')
  506. response.data.feedcode.unshift('饲料编码')
  507. for (let i = 0; i < response.data.list.data2.length; i++) {
  508. // console.log(response.data.list.data2[i],'===label')
  509. for (let j = 0; j < response.data.list.data1.length; j++) {
  510. for (let a = 0; a < response.data.list.data2[i].children.length; a++) {
  511. if (response.data.list.data1[j][response.data.list.data2[i].children[a].prop] == undefined || response.data.list.data1[j][response.data.list.data2[i].children[a].prop] == null || response.data.list.data1[j][response.data.list.data2[i].children[a].prop] == '') {
  512. response.data.list.data1[j][response.data.list.data2[i].children[a].prop] = 0
  513. }
  514. }
  515. }
  516. if (response.data.list.data2[i].children.length > 1) {
  517. for (let j = 0; j < response.data.list.data2[i].children.length; j++) {
  518. if (response.data.list.data2[i].children[j].label == '理论' || response.data.list.data2[i].children[j].label == '实际') {
  519. this.$set(response.data.list.data2[i].children[j], 'width', '80px')
  520. } else {
  521. this.$set(response.data.list.data2[i].children[j], 'width', '80px')
  522. }
  523. }
  524. } else {
  525. this.$set(response.data.list.data2[i].children[0], 'width', '80px')
  526. }
  527. }
  528. let list = response.data.list.data2
  529. let code = response.data.feedcode
  530. const headers = []
  531. for(let i=0;i<list.length;i++){
  532. for(let j=0;j<code.length;j++){
  533. if(i== j){
  534. let obj = {
  535. label:code[j],
  536. children:[
  537. list[i]
  538. ]
  539. }
  540. headers.push(obj)
  541. }
  542. }
  543. }
  544. myList = response.data.list.data1
  545. this.tab2.table.list = response.data.list.data1
  546. this.tab2.table.tableConfig = headers
  547. this.tab2.table.total = response.data.list.data1.length
  548. console.log('库存统计-用料分析this.tab2.table.data', response.data.data)
  549. console.log('库存统计-用料分析this.tab2.table.feedcode', response.data.feedcode)
  550. console.log('库存统计-用料分析this.tab2.table.list', response.data.list.data1)
  551. console.log('库存统计-用料分析this.tab2.table.tableConfig',response.data.list.data2)
  552. } else {
  553. myList = []
  554. this.tab2.table.list = []
  555. this.tab2.table.tableConfig = []
  556. }
  557. console.log(this.tab2.table.list.length)
  558. this.$refs.plTable2.reloadData(myList)
  559. }else{
  560. this.myData = response.data
  561. this.tableColumns = response.data.columns;
  562. this.tableData = response.data.data;
  563. this.$refs.plTable22.reloadData(this.tableData)
  564. this.handleSpan()
  565. }
  566. setTimeout(() => {
  567. this.tab2.table.listLoading = false
  568. }, 100)
  569. })
  570. })
  571. })
  572. },
  573. changeRadio2() {
  574. console.log(this.tab2.radio)
  575. if (this.tab2.radio == '1') {
  576. this.tab2.isRadio1 = true,
  577. this.tab2.isRadio2 = false,
  578. this.tab2.isRadio3 = false,
  579. this.tab2.isRadio4 = false,
  580. this.tab2.isRadio5 = false,
  581. this.tab2.isRadio6 = false,
  582. this.tab2.table.getdataListParm.name = 'getMaterialAnalysisSC'
  583. this.tab2.table.getdataListParm.offset = 1
  584. this.tab2.table.getdataListParm.parammaps.startTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  585. this.tab2.table.getdataListParm.parammaps.stopTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  586. this.getTab2List()
  587. } else if (this.tab2.radio == '2') {
  588. this.tab2.isRadio1 = false,
  589. this.tab2.isRadio2 = true,
  590. this.tab2.isRadio3 = false,
  591. this.tab2.isRadio4 = false,
  592. this.tab2.isRadio5 = false,
  593. this.tab2.isRadio6 = false,
  594. this.tab2.table.getdataListParm.name = 'getMaterialAnalysisLS'
  595. this.tab2.table.getdataListParm.offset = 1
  596. this.tab2.table.getdataListParm.parammaps.startTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  597. this.tab2.table.getdataListParm.parammaps.stopTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  598. this.getTab2List()
  599. } else if (this.tab2.radio == '3') {
  600. this.tab2.isRadio1 = false,
  601. this.tab2.isRadio2 = false,
  602. this.tab2.isRadio3 = true,
  603. this.tab2.isRadio4 = false,
  604. this.tab2.isRadio5 = false,
  605. this.tab2.isRadio6 = false,
  606. this.tab2.table.getdataListParm.name = 'getMaterialAnalysisRQ'
  607. this.tab2.table.getdataListParm.offset = 1
  608. this.tab2.table.getdataListParm.parammaps.startTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  609. this.tab2.table.getdataListParm.parammaps.stopTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  610. this.getTab2List()
  611. } else if (this.tab2.radio == '4') {
  612. this.tab2.isRadio1 = false,
  613. this.tab2.isRadio2 = false,
  614. this.tab2.isRadio3 = false,
  615. this.tab2.isRadio4 = true,
  616. this.tab2.isRadio5 = false,
  617. this.tab2.isRadio6 = false,
  618. this.tab2.table.getdataListParm.name = 'getMaterialAnalysisTMR'
  619. this.tab2.table.getdataListParm.offset = 1
  620. this.tab2.table.getdataListParm.parammaps.startTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  621. this.tab2.table.getdataListParm.parammaps.stopTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  622. this.getTab2List()
  623. } else if (this.tab2.radio == '5') {
  624. this.tab2.isRadio1 = false,
  625. this.tab2.isRadio2 = false,
  626. this.tab2.isRadio3 = false,
  627. this.tab2.isRadio4 = false,
  628. this.tab2.isRadio5 = true,
  629. this.tab2.isRadio6 = false,
  630. this.tab2.table.getdataListParm.name = 'getMaterialAnalysisBC'
  631. this.tab2.table.getdataListParm.offset = 1
  632. this.tab2.table.getdataListParm.parammaps.startTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  633. this.tab2.table.getdataListParm.parammaps.stopTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  634. this.getTab2List()
  635. } else if (this.tab2.radio == '6') {
  636. this.tab2.isRadio1 = false,
  637. this.tab2.isRadio2 = false,
  638. this.tab2.isRadio3 = false,
  639. this.tab2.isRadio4 = false,
  640. this.tab2.isRadio5 = false,
  641. this.tab2.isRadio6 = true,
  642. this.tab2.table.getdataListParm.name = 'getMaterialAnalysisCC'
  643. this.tab2.table.getdataListParm.offset = 1
  644. this.tab2.table.getdataListParm.parammaps.startTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  645. this.tab2.table.getdataListParm.parammaps.stopTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  646. this.getTab2List()
  647. }
  648. },
  649. // 价格分析
  650. getTab3List() {
  651. this.tab3.table.listLoading = true
  652. this.isDispayTable3 = false
  653. setTimeout(()=>{
  654. this.isDispayTable3 = true
  655. this.$nextTick(() => {
  656. let myList = []
  657. GetReportform(this.tab3.table.getdataListParm).then(response => {
  658. if (response.data !== null && response.data.list.data1 !== null && response.data.list.data2 !== null) {
  659. console.log('库存统计-价格分析', response.data.list)
  660. for (let i = 0; i < response.data.list.data2.length; i++) {
  661. for (let j = 0; j < response.data.list.data1.length; j++) {
  662. for (let a = 0; a < response.data.list.data2[i].children.length; a++) {
  663. if (response.data.list.data1[j][response.data.list.data2[i].children[a].prop] == undefined || response.data.list.data1[j][response.data.list.data2[i].children[a].prop] == null || response.data.list.data1[j][response.data.list.data2[i].children[a].prop] == '') {
  664. response.data.list.data1[j][response.data.list.data2[i].children[a].prop] = 0
  665. }
  666. }
  667. }
  668. if (response.data.list.data2[i].children.length > 1) {
  669. for (let j = 0; j < response.data.list.data2[i].children.length; j++) {
  670. if (response.data.list.data2[i].children[j].label == '理论' || response.data.list.data2[i].children[j].label == '实际') {
  671. this.$set(response.data.list.data2[i].children[j], 'width', '80px')
  672. } else {
  673. this.$set(response.data.list.data2[i].children[j], 'width', '80px')
  674. }
  675. }
  676. } else {
  677. this.$set(response.data.list.data2[i].children[0], 'width', '80px')
  678. }
  679. }
  680. myList = response.data.list.data1
  681. this.tab3.table.list = response.data.list.data1
  682. this.tab3.table.tableConfig = response.data.list.data2
  683. this.tab3.table.total = response.data.list.data1.length
  684. } else {
  685. this.tab3.table.tableConfig = []
  686. this.tab3.table.list = []
  687. myList = []
  688. }
  689. setTimeout(() => {
  690. this.$refs.plTable3.reloadData(myList)
  691. this.tab3.table.listLoading = false
  692. }, 100)
  693. })
  694. })
  695. })
  696. },
  697. handleBefore() {
  698. if (this.tab.table.getdataListParm.parammaps.inputDatetime !== '' && this.tab.table.getdataListParm.parammaps.inputDatetime !== null) {
  699. var start = new Date(this.tab.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.tab.table.getdataListParm.parammaps.inputDatetime[0].getDate() - 1))
  700. var stop = new Date(this.tab.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.tab.table.getdataListParm.parammaps.inputDatetime[1].getDate() - 1))
  701. if (stop > Date.now() - 8.64e7) {
  702. this.Nextdisabled = true
  703. this.Beforedisabled = false
  704. } else {
  705. this.Nextdisabled = false
  706. this.Beforedisabled = false
  707. }
  708. this.tab.table.getdataListParm.parammaps.inputDatetime.length = 0
  709. this.tab.table.getdataListParm.parammaps.inputDatetime.push(start, stop)
  710. this.$forceUpdate()
  711. }
  712. this.tab.table.getdataListParm.parammaps.startTime = parseTime(this.tab.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  713. this.tab.table.getdataListParm.parammaps.stopTime = parseTime(this.tab.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  714. this.getTabList()
  715. },
  716. handleNext() {
  717. if (this.tab.table.getdataListParm.parammaps.inputDatetime !== '' && this.tab.table.getdataListParm.parammaps.inputDatetime !== null) {
  718. var start2 = new Date(this.tab.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.tab.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1))
  719. var stop2 = new Date(this.tab.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.tab.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1))
  720. if (stop2 > Date.now() - 8.64e7) {
  721. this.Nextdisabled = true
  722. this.Beforedisabled = false
  723. } else {
  724. this.Nextdisabled = false
  725. this.Beforedisabled = false
  726. }
  727. this.tab.table.getdataListParm.parammaps.inputDatetime.length = 0
  728. this.tab.table.getdataListParm.parammaps.inputDatetime.push(start2, stop2)
  729. this.$forceUpdate()
  730. }
  731. this.tab.table.getdataListParm.parammaps.startTime = parseTime(this.tab.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  732. this.tab.table.getdataListParm.parammaps.stopTime = parseTime(this.tab.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  733. this.getTabList()
  734. },
  735. handleBefore2() {
  736. if (this.tab2.table.getdataListParm.parammaps.inputDatetime !== '' && this.tab2.table.getdataListParm.parammaps.inputDatetime !== null) {
  737. var start3 = new Date(this.tab2.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.tab2.table.getdataListParm.parammaps.inputDatetime[0].getDate() - 1))
  738. var stop3 = new Date(this.tab2.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.tab2.table.getdataListParm.parammaps.inputDatetime[1].getDate() - 1))
  739. if (stop3 > Date.now() - 8.64e7) {
  740. this.Nextdisabled2 = true
  741. this.Beforedisabled2 = false
  742. } else {
  743. this.Nextdisabled2 = false
  744. this.Beforedisabled2 = false
  745. }
  746. this.tab2.table.getdataListParm.parammaps.inputDatetime.length = 0
  747. this.tab2.table.getdataListParm.parammaps.inputDatetime.push(start3, stop3)
  748. this.$forceUpdate()
  749. }
  750. this.tab2.table.getdataListParm.parammaps.startTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  751. this.tab2.table.getdataListParm.parammaps.stopTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  752. this.getTab2List()
  753. },
  754. handleNext2() {
  755. if (this.tab2.table.getdataListParm.parammaps.inputDatetime !== '' && this.tab2.table.getdataListParm.parammaps.inputDatetime !== null) {
  756. var start4 = new Date(this.tab2.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.tab2.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1))
  757. var stop4 = new Date(this.tab2.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.tab2.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1))
  758. if (stop4 > Date.now() - 8.64e7) {
  759. this.Nextdisabled2 = true
  760. this.Beforedisabled2 = false
  761. } else {
  762. this.Nextdisabled2 = false
  763. this.Beforedisabled2 = false
  764. }
  765. this.tab2.table.getdataListParm.parammaps.inputDatetime.length = 0
  766. this.tab2.table.getdataListParm.parammaps.inputDatetime.push(start4, stop4)
  767. this.$forceUpdate()
  768. }
  769. this.tab2.table.getdataListParm.parammaps.startTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  770. this.tab2.table.getdataListParm.parammaps.stopTime = parseTime(this.tab2.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  771. this.getTab2List()
  772. },
  773. handleBefore3() {
  774. if (this.tab3.table.getdataListParm.parammaps.inputDatetime !== '' && this.tab3.table.getdataListParm.parammaps.inputDatetime !== null) {
  775. var start5 = new Date(this.tab3.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.tab3.table.getdataListParm.parammaps.inputDatetime[0].getDate() - 1))
  776. var stop5 = new Date(this.tab3.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.tab3.table.getdataListParm.parammaps.inputDatetime[1].getDate() - 1))
  777. if (stop5 > Date.now() - 8.64e7) {
  778. this.Nextdisabled3 = true
  779. this.Beforedisabled3 = false
  780. } else {
  781. this.Nextdisabled3 = false
  782. this.Beforedisabled3 = false
  783. }
  784. this.tab3.table.getdataListParm.parammaps.inputDatetime.length = 0
  785. this.tab3.table.getdataListParm.parammaps.inputDatetime.push(start5, stop5)
  786. this.$forceUpdate()
  787. }
  788. this.tab3.table.getdataListParm.parammaps.startTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  789. this.tab3.table.getdataListParm.parammaps.stopTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  790. this.getTab3List()
  791. },
  792. handleNext3() {
  793. if (this.tab3.table.getdataListParm.parammaps.inputDatetime !== '' && this.tab2.table.getdataListParm.parammaps.inputDatetime !== null) {
  794. var start6 = new Date(this.tab3.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.tab3.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1))
  795. var stop6 = new Date(this.tab3.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.tab3.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1))
  796. if (stop6 > Date.now() - 8.64e7) {
  797. this.Nextdisabled3 = true
  798. this.Beforedisabled3 = false
  799. } else {
  800. this.Nextdisabled3 = false
  801. this.Beforedisabled3 = false
  802. }
  803. this.tab3.table.getdataListParm.parammaps.inputDatetime.length = 0
  804. this.tab3.table.getdataListParm.parammaps.inputDatetime.push(start6, stop6)
  805. this.$forceUpdate()
  806. }
  807. this.tab3.table.getdataListParm.parammaps.startTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  808. this.tab3.table.getdataListParm.parammaps.stopTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  809. this.getTab3List()
  810. },
  811. changeRadio3() {
  812. console.log(this.tab3.radio)
  813. if (this.tab3.radio == '1') {
  814. this.tab3.isRadio1 = true,
  815. this.tab3.isRadio2 = false,
  816. this.tab3.isRadio3 = false,
  817. this.tab3.isRadio4 = false,
  818. this.tab3.table.getdataListParm.name = 'getPriceAnalysisSC'
  819. this.tab3.table.getdataListParm.offset = 1
  820. this.tab3.table.getdataListParm.parammaps.startTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  821. this.tab3.table.getdataListParm.parammaps.stopTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  822. this.getTab3List()
  823. } else if (this.tab3.radio == '2') {
  824. this.tab3.isRadio1 = false,
  825. this.tab3.isRadio2 = true,
  826. this.tab3.isRadio3 = false,
  827. this.tab3.isRadio4 = false,
  828. this.tab3.table.getdataListParm.name = 'getPriceAnalysisLS'
  829. this.tab3.table.getdataListParm.offset = 1
  830. this.tab3.table.getdataListParm.parammaps.startTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  831. this.tab3.table.getdataListParm.parammaps.stopTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  832. this.getTab3List()
  833. } else if (this.tab3.radio == '3') {
  834. this.tab3.isRadio1 = false,
  835. this.tab3.isRadio2 = false,
  836. this.tab3.isRadio3 = true,
  837. this.tab3.isRadio4 = false,
  838. this.tab3.table.getdataListParm.name = 'getPriceAnalysisRQ'
  839. this.tab3.table.getdataListParm.offset = 1
  840. this.tab3.table.getdataListParm.parammaps.startTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  841. this.tab3.table.getdataListParm.parammaps.stopTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  842. this.getTab3List()
  843. } else if (this.tab3.radio == '4') {
  844. this.tab3.isRadio1 = false,
  845. this.tab3.isRadio2 = false,
  846. this.tab3.isRadio3 = false,
  847. this.tab3.isRadio4 = true,
  848. this.tab3.table.getdataListParm.name = 'getPriceAnalysisTMR'
  849. this.tab3.table.getdataListParm.offset = 1
  850. this.tab3.table.getdataListParm.parammaps.startTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
  851. this.tab3.table.getdataListParm.parammaps.stopTime = parseTime(this.tab3.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
  852. this.getTab3List()
  853. }
  854. },
  855. changeChecked(item) {
  856. this.form_search('second')
  857. },
  858. handlesWitch(item){
  859. this.isTable1 = !this.isTable1
  860. this.getTab2List()
  861. },
  862. handleSpan() {
  863. this.mergekeys.forEach(key => {
  864. this.spanObj[key] = []
  865. let position = 0
  866. this.tableData.forEach((item, index) => {
  867. if (index === 0) {
  868. this.spanObj[key].push(1)
  869. position = 0
  870. } else {
  871. if (key == 'B') {
  872. if (this.tableData[index][key] === this.tableData[index - 1][key] && this.tableData[index]['A'] === this.tableData[index - 1]['A']) {
  873. this.spanObj[key][position] += 1
  874. this.spanObj[key].push(0)
  875. } else {
  876. this.spanObj[key].push(1)
  877. position = index
  878. }
  879. } else {
  880. if (this.tableData[index][key] === this.tableData[index - 1][key]) {
  881. this.spanObj[key][position] += 1
  882. this.spanObj[key].push(0)
  883. } else {
  884. this.spanObj[key].push(1)
  885. position = index
  886. }
  887. }
  888. }
  889. })
  890. })
  891. },
  892. objectSpanMethod({ row, column, rowIndex, columnIndex }) {
  893. for (let i = 0; i < this.mergekeys.length; i++) {
  894. if (column.property === this.mergekeys[i]) {
  895. let _row = this.spanObj[this.mergekeys[i]][rowIndex]
  896. let _col = _row > 0 ? 1 : 0
  897. console.log(_row,'_row1')
  898. return {
  899. rowspan: _row,
  900. colspan: _col
  901. }
  902. }
  903. }
  904. },
  905. handleExport(item) {
  906. if (item == 'tab1') {
  907. console.log('库存统计导出')
  908. this.downLoad.getdataListParm = {}
  909. this.downLoad.getdataListParm.name = 'getfsStaticlist'
  910. this.downLoad.getdataListParm.pagecount = ''
  911. this.downLoad.getdataListParm.parammaps = this.tab.table.getdataListParm.parammaps
  912. GetDataByName(this.downLoad.getdataListParm).then(response => {
  913. if (response.data.list !== null) {
  914. this.$nextTick(() => {
  915. this.downLoad.list = response.data.list
  916. })
  917. } else {
  918. this.downLoad.list = []
  919. }
  920. const table = this.$refs.table1;
  921. const columns = table.columns;
  922. const labels = columns.map(column => column.label);
  923. import('@/vendor/Export5Excel').then(excel => {
  924. const multiHeader = [[this.$t('InventoryManagement.silc'), , this.$t('InventoryManagement.qc'), '', this.$t('InventoryManagement.yl'), '', '', '', this.$t('InventoryManagement.qm'), '']]
  925. const multiHeader2 = labels;
  926. const filterVal = ['feedname', 'startsum', 'startprice', 'laidsum', 'usesumXT', 'usesumRG', 'usesumXH', 'stopsum', 'stopprice']
  927. const data = this.downLoad.list.map((v) => filterVal.map((j) => v[j]))
  928. const merges = ['A1:A2', 'B1:C1', 'D1:G1', 'H1:I1']
  929. excel.export_json_to_excel({ multiHeader, multiHeader2, data, filename: this.$t('InventoryManagement.kctj'), merges }) // kctj
  930. })
  931. })
  932. } else if (item == 'tab2') {
  933. if(this.isTable1){
  934. console.log('用料分析导出数据', this.tab2.table.list)
  935. console.log('用料分析导出表头', this.tab2.table.tableConfig)
  936. console.log(this.tab2.table.getdataListParm.checked, 'checked')
  937. console.log(this.tab2.table.getdataListParm)
  938. var startTime = this.tab2.table.getdataListParm.parammaps.startTime
  939. var stopTime = this.tab2.table.getdataListParm.parammaps.stopTime
  940. var exportData = []
  941. var exportTitle1 = [] // 一级标题
  942. var exportTitle2 = [] // 二级标题
  943. var exportTitle3 = [] // 一级标题
  944. var filterValArr = []
  945. for (let i = 0; i < this.tab2.table.tableConfig.length; i++) {
  946. exportTitle1.push(this.tab2.table.tableConfig[i].label)
  947. for (let j = 0; j < this.tab2.table.tableConfig[i].children.length; j++) {
  948. exportTitle2.push(this.tab2.table.tableConfig[i].children[j].label)
  949. for(let a = 0;a<this.tab2.table.tableConfig[i].children[j].children.length;a++){
  950. exportTitle3.push(this.tab2.table.tableConfig[i].children[j].children[a].label)
  951. filterValArr.push(this.tab2.table.tableConfig[i].children[j].children[a].prop)
  952. }
  953. // filterValArr.push(this.tab2.table.tableConfig[i].children[j].prop)
  954. }
  955. }
  956. console.log('一级标题exportTitle1', exportTitle1)
  957. console.log('二级标题exportTitle2', exportTitle2)
  958. console.log('三级标题exportTitle3', exportTitle3)
  959. console.log('对应字段filterValArr', filterValArr)
  960. var headerArr = []// 处理一级标题
  961. var headerArr2 = []// 处理一级标题
  962. if (this.tab2.table.getdataListParm.checked == 1) {
  963. for (let i = 0; i < exportTitle1.length; i++) {
  964. if (i > 0) {
  965. headerArr.push(exportTitle1[i], '', '', '')
  966. } else {
  967. headerArr.push(exportTitle1[i])
  968. }
  969. if (i > 0) {
  970. headerArr2.push(exportTitle2[i], '', '', '')
  971. } else {
  972. headerArr2.push(exportTitle2[i])
  973. }
  974. }
  975. } else {
  976. if(this.tab2.table.getdataListParm.parammaps.typea == ''){
  977. for (let i = 0; i < exportTitle1.length; i++) {
  978. if (i > 0) {
  979. headerArr.push(exportTitle1[i], '')
  980. } else {
  981. headerArr.push(exportTitle1[i])
  982. }
  983. if (i > 0) {
  984. headerArr2.push(exportTitle2[i], '')
  985. } else {
  986. headerArr2.push(exportTitle2[i])
  987. }
  988. }
  989. }else{
  990. headerArr = exportTitle1
  991. headerArr2 = exportTitle2
  992. }
  993. }
  994. console.log('headerArr', headerArr)
  995. console.log('exportTitle2', exportTitle2)
  996. console.log('filterValArr', filterValArr)
  997. if (headerArr.length > 0) {
  998. import('@/vendor/Export3Excel').then((excel) => {
  999. const multiHeader = [
  1000. headerArr
  1001. ]
  1002. const multiHeader2 = [
  1003. headerArr2
  1004. ]
  1005. const tHeader = exportTitle3
  1006. const filterVal = filterValArr
  1007. const data = this.tab2.table.list.map(v => filterVal.map(j => v[j]))
  1008. // const data = []
  1009. const merges = ['A1:A1']
  1010. excel.export_json_to_excel({ multiHeader, multiHeader2, header: tHeader, data, filename: '用料分析-'+startTime+'-' +stopTime , merges })
  1011. })
  1012. }else{
  1013. import('@/vendor/Export3Excel').then((excel) => {
  1014. const multiHeader = [
  1015. headerArr
  1016. ]
  1017. const multiHeader2 = []
  1018. const tHeader = exportTitle2
  1019. const filterVal = filterValArr
  1020. const data = this.tab2.table.list.map(v => filterVal.map(j => v[j]))
  1021. // const data = []
  1022. // const merges = ['A1:A1']
  1023. const merges = []
  1024. excel.export_json_to_excel({ multiHeader, multiHeader2, header: tHeader, data, filename: '用料分析', merges })
  1025. })
  1026. }
  1027. }else{
  1028. var startTime = this.tab2.table.getdataListParm.parammaps.startTime
  1029. var stopTime = this.tab2.table.getdataListParm.parammaps.stopTime
  1030. var title = '用料分析-'+startTime+'-' +stopTime
  1031. var tHeader = []
  1032. var filterVal = []
  1033. for (let i = 0; i < this.tableColumns.length; i++) {
  1034. tHeader.push(this.tableColumns[i].label)
  1035. filterVal.push(this.tableColumns[i].prop)
  1036. }
  1037. var excelDatas = [
  1038. {
  1039. tHeader: tHeader,
  1040. filterVal: filterVal,
  1041. tableDatas: this.tableData,
  1042. sheetName: 'Sheet'
  1043. }
  1044. ]
  1045. json2excel(excelDatas, title, true, 'xlsx')
  1046. }
  1047. } else if (item == 'tab3') {
  1048. console.log('价格分析导出')
  1049. console.log('价格分析导出数据', this.tab3.table.list)
  1050. console.log('价格分析导出表头', this.tab3.table.tableConfig)
  1051. var exportData = []
  1052. var exportTitle1 = [] // 一级标题
  1053. var exportTitle2 = [] // 二级标题
  1054. for (let i = 0; i < this.tab3.table.tableConfig.length; i++) {
  1055. exportTitle1.push(this.tab3.table.tableConfig[i].label)
  1056. for (let j = 0; j < this.tab3.table.tableConfig[i].children.length; j++) {
  1057. exportTitle2.push(this.tab3.table.tableConfig[i].children[j].label)
  1058. }
  1059. }
  1060. console.log('一级标题exportTitle1', exportTitle1)
  1061. console.log('二级标题exportTitle2', exportTitle2)
  1062. var headerArr = []// 处理一级标题
  1063. for (let i = 0; i < exportTitle1.length; i++) {
  1064. if (i > 0) {
  1065. headerArr.push(exportTitle1[i], '')
  1066. } else {
  1067. headerArr.push(exportTitle1[i])
  1068. }
  1069. }
  1070. console.log('一级表头处理后', headerArr)
  1071. var valueArr = [] // 对应字段
  1072. for (let i = 0; i < exportTitle2.length; i++) {
  1073. if (i == 0) {
  1074. valueArr.push('A')
  1075. } else {
  1076. valueArr.push('a' + [i - 1])
  1077. }
  1078. }
  1079. console.log('对应字段valueArr', valueArr)
  1080. if (headerArr.length > 0) {
  1081. import('@/vendor/Export3Excel').then((excel) => {
  1082. const multiHeader = [
  1083. headerArr
  1084. ]
  1085. const multiHeader2 = []
  1086. const tHeader = exportTitle2
  1087. const filterVal = valueArr// 表头所对应的字段,这里未填写
  1088. const data = this.tab3.table.list.map(v => filterVal.map(j => v[j]))
  1089. // const data = [];
  1090. // 进行所有表头的单元格合并
  1091. // const merges = ['A1:A1', 'B1:E1','F1:J1' ];
  1092. const merges = ['A1:A1']
  1093. excel.export_json_to_excel({ multiHeader, multiHeader2, header: tHeader, data, filename: '价格分析', merges })
  1094. })
  1095. }
  1096. }
  1097. },
  1098. format(jsonData) { // 数据处理
  1099. const dataList = []
  1100. for (let i = 0; i < jsonData.length; i++) {
  1101. const list = []
  1102. list.push(jsonData[i].index)
  1103. list.push(jsonData[i].Personel)
  1104. list.push(jsonData[i].address)
  1105. for (let j = 0; j < jsonData[0]['time'].length; j++) {
  1106. list.push(jsonData[i]['time'][j].morning)
  1107. list.push(jsonData[i]['time'][j].afternoon)
  1108. }
  1109. dataList.push(list)
  1110. }
  1111. return dataList
  1112. }
  1113. }
  1114. }
  1115. </script>
  1116. <style lang="scss" scoped>
  1117. .search{
  1118. margin-bottom:10px;
  1119. .el-radio{margin-right: 10px;}
  1120. .filter-item1{margin-top: 10px;}
  1121. }
  1122. /deep/ .el-table th>.cell{
  1123. padding-left: 0 !important;;
  1124. padding-right: 0 !important;;
  1125. }
  1126. /deep/ .el-table td>.cell{
  1127. padding-left: 0 !important;;
  1128. padding-right: 0 !important;;
  1129. }
  1130. // .el-radio{margin-right: 20px;}
  1131. </style>
  1132. <style lang="scss">
  1133. .el-tooltip__popper{
  1134. max-width: 60% !important;
  1135. }
  1136. .plTableBox .el-table td.is-hidden>*, .plTableBox .el-table th.is-hidden>*{
  1137. visibility:inherit;
  1138. }
  1139. .plTableBox .el-table th>.cell{
  1140. white-space: pre-wrap;
  1141. }
  1142. </style>