index.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <!--化学品盘点-->
  2. <template>
  3. <div class="app-container chemicalManagement">
  4. <div class="chemicalManagement-page" v-if="pageType == 1">
  5. <div class="content-box">
  6. <el-form :model="queryParams" ref="queryForm" :inline="true">
  7. <el-form-item label="关键字" prop="searchValue" label-width="60px">
  8. <el-input
  9. maxlength="10"
  10. v-model="queryParams.searchValue"
  11. placeholder="标题/实验室/房间号/盘点人"
  12. clearable
  13. size="small"
  14. />
  15. </el-form-item>
  16. <el-form-item label="学院" prop="takeDpetId">
  17. <el-select v-model="queryParams.takeDpetId" placeholder="请选择学院" clearable>
  18. <el-option
  19. v-for="dict in deptOptions"
  20. :key="dict.deptId"
  21. :label="dict.deptName"
  22. :value="dict.deptId"
  23. ></el-option>
  24. </el-select>
  25. </el-form-item>
  26. <el-form-item label="检查时间">
  27. <el-date-picker
  28. :clearable="false"
  29. v-model="dateRange"
  30. style="width: 240px"
  31. value-format="yyyy-MM-dd"
  32. type="daterange"
  33. range-separator="-"
  34. start-placeholder="开始日期"
  35. end-placeholder="结束日期"
  36. ></el-date-picker>
  37. </el-form-item>
  38. <el-form-item>
  39. <p class="inquire-button-one" @click="onSearch">查询</p>
  40. <p class="reset-button-one" @click="resetForm">重置</p>
  41. </el-form-item>
  42. </el-form>
  43. <el-table border :data="tableData" ref="multipleTable" @sort-change="sortChange">
  44. <el-table-column label="序号" width="50" align="center" type="index"/>
  45. <el-table-column label="标题" prop="takeTitle" show-overflow-tooltip/>
  46. <el-table-column label="学院" prop="takeDpetName" width="200" show-overflow-tooltip/>
  47. <el-table-column label="楼栋" prop="takeBuildName" width="180" show-overflow-tooltip/>
  48. <el-table-column label="实验室" prop="subName" width="300" show-overflow-tooltip>
  49. <template slot-scope="scope">
  50. {{scope.row.subName}}-{{scope.row.subRoom}}
  51. </template>
  52. </el-table-column>
  53. <!--<el-table-column label="备注" width="250" show-overflow-tooltip/>-->
  54. <el-table-column label="盘点人" prop="createBy" width="120" show-overflow-tooltip/>
  55. <el-table-column label="盘点时间" prop="createTimeStr" width="200" sortable="custom" show-overflow-tooltip/>
  56. <el-table-column label="操作" width="100" v-if="tableButtonType">
  57. <template slot-scope="scope">
  58. <div class="table-button-box">
  59. <p class="table-button-null"></p>
  60. <p class="table-button-p" @click="controlsButton(2,scope.row)"
  61. v-hasPermi="['chemical:takeStock:query']">详情</p>
  62. <p class="table-button-null"></p>
  63. </div>
  64. </template>
  65. </el-table-column>
  66. </el-table>
  67. <pagination :page-sizes="[20, 30, 40, 50]" v-show="total>0" :total="total"
  68. layout="total, prev, pager, next, sizes, jumper"
  69. :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
  70. @pagination="getList"/>
  71. </div>
  72. </div>
  73. <info-page v-if="pageType == 2" :infoDataProps="infoDataProps"></info-page>
  74. </div>
  75. </template>
  76. <script>
  77. import { listDepartments } from "@/api/system/dept";
  78. import { hxpTakeStockList } from '@/api/chemicalInventory/index'
  79. import infoPage from './infoPage.vue'
  80. export default {
  81. name: 'chemicalManagement',
  82. components: {
  83. infoPage
  84. },
  85. data(){
  86. return{
  87. tableButtonType:this.hasPermiDom(['chemical:takeStock:query']),
  88. pageType:1,
  89. deptOptions:[],
  90. queryParams:{
  91. pageNum:1,
  92. pageSize:20,
  93. searchValue:"",
  94. takeDpetId:"",
  95. orderTime:'1',
  96. },
  97. dateRange:[],
  98. tableData:[],
  99. total:0,
  100. infoDataProps:{},
  101. }
  102. },
  103. created(){},
  104. mounted(){
  105. this.listDepartments();
  106. this.getList();
  107. },
  108. methods:{
  109. //搜索
  110. onSearch(){
  111. this.$set(this.queryParams,'pageNum',1);
  112. this.getList();
  113. },
  114. //重置
  115. resetForm(){
  116. this.$set(this,'dateRange',[]);
  117. this.$set(this,'queryParams',{
  118. pageNum:1,
  119. pageSize:20,
  120. searchValue:"",
  121. takeDpetId:"",
  122. orderTime:'1',
  123. });
  124. this.getList();
  125. },
  126. //查询列表
  127. getList(){
  128. this.loading = true;
  129. let obj = JSON.parse(JSON.stringify(this.queryParams))
  130. if(this.dateRange[0]){
  131. obj.beginTimeStr = this.dateRange[0];
  132. obj.endTimeStr = this.dateRange[1];
  133. }else {
  134. obj.beginTimeStr = null
  135. obj.endTimeStr = null
  136. }
  137. hxpTakeStockList(obj).then( response => {
  138. this.$set(this,'tableData',response.rows);
  139. this.$set(this,'total',response.total);
  140. this.loading = false;
  141. });
  142. },
  143. //时间排序方法
  144. sortChange(val){
  145. if(val.prop == 'createTimeStr'){
  146. this.$set(this.queryParams,'orderTime',val.order=='ascending'?'1':(val.order=='descending'?'2':''));
  147. this.onSearch();
  148. }
  149. },
  150. //详情
  151. controlsButton(type,row){
  152. if(type == 1){
  153. this.$set(this,'pageType',1);
  154. }else if(type == 2){
  155. this.$set(this,'pageType',2);
  156. this.$set(this,'infoDataProps',row);
  157. }
  158. },
  159. listDepartments(){
  160. listDepartments().then( response => {
  161. this.$set(this,'deptOptions',response.data);
  162. });
  163. },
  164. }
  165. }
  166. </script>
  167. <style scoped lang="scss">
  168. .chemicalManagement{
  169. flex:1;
  170. display: flex!important;
  171. flex-direction: column;
  172. overflow: hidden;
  173. font-weight: 500;
  174. .chemicalManagement-page{
  175. flex:1;
  176. display: flex!important;
  177. flex-direction: column;
  178. overflow: hidden;
  179. .title-box{
  180. padding-top:20px;
  181. .form-box{
  182. border-bottom:1px solid #E0E0E0;
  183. }
  184. }
  185. .content-box{
  186. flex:1;
  187. overflow: hidden;
  188. display: flex;
  189. flex-direction: column;
  190. padding:20px;
  191. }
  192. }
  193. }
  194. </style>