综合办公系统
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

chooseDevice.vue 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <!--
  2. * @Author: ysh
  3. * @Date: 2024-03-27 11:10:26
  4. * @LastEditors: Please set LastEditors
  5. * @LastEditTime: 2024-07-29 11:19:05
  6. -->
  7. <template>
  8. <div>
  9. <el-form :inline="true">
  10. <el-form-item label="出厂编号:">
  11. <el-input v-model="queryParams.code" clearable @keyup.enter.native="getList"></el-input>
  12. </el-form-item>
  13. <el-form-item label="设备状态:">
  14. <el-select v-model="queryParams.status" filterable clearable @change="getList">
  15. <el-option :value="'0'" label="被领用"></el-option>
  16. <el-option :value="'1'" label="可领用"></el-option>
  17. <el-option :value="'2'" label="维修中"></el-option>
  18. <el-option :value="'3'" label="已停用"></el-option>
  19. <el-option :value="'4'" label="已报废"></el-option>
  20. </el-select>
  21. </el-form-item>
  22. <el-form-item label="设备名称:">
  23. <el-select v-model="queryParams.name" filterable @change="getList" clearable>
  24. <el-option v-for="item in nameList" :key="item.name" :label="item.name" :value="item.name">
  25. </el-option>
  26. </el-select>
  27. <!-- <el-input v-model="queryParams.name" clearable></el-input> -->
  28. </el-form-item>
  29. <el-form-item label="品牌:">
  30. <el-input v-model="queryParams.brand" clearable @keyup.enter.native="getList"></el-input>
  31. </el-form-item>
  32. <el-form-item>
  33. <el-button @click="getList" type="primary">搜索</el-button>
  34. </el-form-item>
  35. </el-form>
  36. <el-table ref="chooseDevice" :data="list" @selection-change="handleSelectionChange" :row-key="getRowKeys"
  37. @current-change="handleCurrentChange" @row-dblclick="confirmChooseBySingle" :highlight-current-row="!multiple">
  38. <el-table-column type="selection" width="50" align="center" :reserve-selection="true" v-if="multiple" />
  39. <el-table-column label="设备状态" align="center" prop="status">
  40. <template slot-scope="scope">
  41. <el-tag :type="statusType(scope.row.status)">
  42. {{ statusTypeText(scope.row.status) }}
  43. </el-tag>
  44. </template>
  45. </el-table-column>
  46. <el-table-column label="出厂编号" align="center" prop="code" />
  47. <el-table-column label="设备品牌" align="center" prop="brand" />
  48. <el-table-column label="设备名称" align="center" prop="name" />
  49. <el-table-column label="规格型号" align="center" prop="series" />
  50. <el-table-column label="存放地址" align="center" prop="place" />
  51. <el-table-column label="单日成本" align="center" prop="dayCost" />
  52. </el-table>
  53. <div style="text-align: right;">
  54. <el-pagination @current-change="getList" :current-page.sync="queryParams.pageNum"
  55. :page-size="queryParams.pageSize" layout="total, prev, pager, next" :total="total">
  56. </el-pagination>
  57. </div>
  58. <div>
  59. 已选设备:
  60. <el-tag v-if="multiple" v-for="item in chooseList" style="margin: 5px;" :key="item.deviceIdId">
  61. {{ item.name + '-' + item.series + '-' + item.brand }}
  62. </el-tag>
  63. <el-tag v-if="!multiple" style="margin: 5px;">{{ chooseList.name + '-' + chooseList.series + '-' +
  64. chooseList.brand
  65. }}</el-tag>
  66. <div style="text-align: center;margin-top: 20px;">
  67. <el-button type="primary" @click="confirmChoose">确认选择</el-button>
  68. <el-button @click="clearChoose">清空选择</el-button>
  69. </div>
  70. </div>
  71. </div>
  72. </template>
  73. <script>
  74. import { listDevice, listDeviceName } from "@/api/oa/device/device";
  75. import { multiply } from 'ol/transform';
  76. export default {
  77. props: {
  78. multiple: {
  79. type: Boolean,
  80. default: true
  81. }
  82. },
  83. watch: {
  84. multiple(newval) {
  85. if (newval) {
  86. this.chooseList = []
  87. } else {
  88. this.chooseList = {}
  89. }
  90. this.getList();
  91. this.getNameList();
  92. }
  93. },
  94. data() {
  95. return {
  96. queryParams: {
  97. pageNum: 1,
  98. pageSize: 10,
  99. type: '仪器设备',
  100. status: '1'
  101. },
  102. list: [],
  103. form: {},
  104. total: 0,
  105. loading: false,
  106. chooseList: undefined,
  107. nameList: [],
  108. }
  109. },
  110. created() {
  111. if (this.multiply) {
  112. this.chooseList = []
  113. } else {
  114. this.chooseList = {}
  115. }
  116. this.getList();
  117. this.getNameList();
  118. },
  119. methods: {
  120. getList() {
  121. this.loading = true;
  122. listDevice(this.queryParams).then(response => {
  123. this.list = response.rows;
  124. this.total = response.total;
  125. this.loading = false;
  126. this.clearChoose();
  127. });
  128. },
  129. getNameList() {
  130. listDeviceName().then(res => {
  131. this.nameList = res.data
  132. })
  133. },
  134. handleSelectionChange(val) {
  135. this.chooseList = val
  136. },
  137. handleCurrentChange(val) {
  138. if (!this.multiple) {
  139. this.chooseList = val
  140. }
  141. },
  142. getRowKeys(row) {
  143. return row.deviceId;
  144. },
  145. confirmChoose() {
  146. this.$emit('chooseList', this.chooseList)
  147. },
  148. confirmChooseBySingle() {
  149. if (!this.multiple) {
  150. if (this.chooseList)
  151. this.$emit('chooseList', this.chooseList)
  152. }
  153. },
  154. clearChoose() {
  155. if (this.multiple)
  156. this.$refs.chooseDevice.clearSelection();
  157. else {
  158. this.chooseDevice = {}
  159. }
  160. },
  161. statusTypeText(row) {
  162. if (row == '0') {
  163. return '被领用'
  164. }
  165. if (row == '1') {
  166. return '可领用'
  167. }
  168. if (row == '2') {
  169. return '维修中'
  170. }
  171. if (row == '3') {
  172. return '已停用'
  173. }
  174. if (row == '4') {
  175. return '已报废'
  176. }
  177. },
  178. statusType(row) {
  179. if (row == '0') {
  180. return 'warning'
  181. }
  182. if (row == '1') {
  183. return 'success'
  184. }
  185. if (row == '2') {
  186. return 'info'
  187. }
  188. if (row == '3') {
  189. return 'danger'
  190. }
  191. if (row == '4') {
  192. return 'info'
  193. }
  194. }
  195. }
  196. }
  197. </script>
  198. <style lang="scss" scoped></style>