综合办公系统
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

chooseDevice.vue 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <!--
  2. * @Author: ysh
  3. * @Date: 2024-06-21 18:51:51
  4. * @LastEditors: Please set LastEditors
  5. * @LastEditTime: 2024-07-30 15:37:00
  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;">{{ formatChooseList() }}</el-tag>
  64. <div style="text-align: center;margin-top: 20px;">
  65. <el-button type="primary" @click="confirmChoose">确认选择</el-button>
  66. <el-button @click="clearChoose">清空选择</el-button>
  67. </div>
  68. </div>
  69. </div>
  70. </template>
  71. <script>
  72. import { listDevice, listDeviceName } from "@/api/oa/device/device";
  73. import { multiply } from 'ol/transform';
  74. export default {
  75. props: {
  76. multiple: {
  77. type: Boolean,
  78. default: true
  79. }
  80. },
  81. watch: {
  82. multiple(newval) {
  83. if (newval) {
  84. this.chooseList = []
  85. } else {
  86. this.chooseList = {}
  87. }
  88. this.getList();
  89. this.getNameList();
  90. }
  91. },
  92. data() {
  93. return {
  94. queryParams: {
  95. pageNum: 1,
  96. pageSize: 10,
  97. type: '仪器设备',
  98. status: '1'
  99. },
  100. list: [],
  101. form: {},
  102. total: 0,
  103. loading: false,
  104. chooseList: undefined,
  105. nameList: [],
  106. }
  107. },
  108. created() {
  109. if (this.multiply) {
  110. this.chooseList = []
  111. } else {
  112. this.chooseList = {}
  113. }
  114. this.getList();
  115. this.getNameList();
  116. },
  117. methods: {
  118. getList() {
  119. this.loading = true;
  120. listDevice(this.queryParams).then(response => {
  121. this.list = response.rows;
  122. this.total = response.total;
  123. this.loading = false;
  124. this.clearChoose();
  125. });
  126. },
  127. getNameList() {
  128. listDeviceName().then(res => {
  129. this.nameList = res.data
  130. })
  131. },
  132. handleSelectionChange(val) {
  133. this.chooseList = val
  134. },
  135. handleCurrentChange(val) {
  136. if (!this.multiple) {
  137. this.chooseList = val
  138. }
  139. },
  140. getRowKeys(row) {
  141. return row.deviceId;
  142. },
  143. confirmChoose() {
  144. this.$emit('chooseList', this.chooseList)
  145. },
  146. confirmChooseBySingle() {
  147. if (!this.multiple) {
  148. if (this.chooseList)
  149. this.$emit('chooseList', this.chooseList)
  150. }
  151. },
  152. clearChoose() {
  153. if (this.multiple)
  154. this.$refs.chooseDevice.clearSelection();
  155. else {
  156. this.chooseDevice = {}
  157. }
  158. },
  159. statusTypeText(row) {
  160. if (row == '0') {
  161. return '被领用'
  162. }
  163. if (row == '1') {
  164. return '可领用'
  165. }
  166. if (row == '2') {
  167. return '维修中'
  168. }
  169. if (row == '3') {
  170. return '已停用'
  171. }
  172. if (row == '4') {
  173. return '已报废'
  174. }
  175. },
  176. statusType(row) {
  177. if (row == '0') {
  178. return 'warning'
  179. }
  180. if (row == '1') {
  181. return 'success'
  182. }
  183. if (row == '2') {
  184. return 'info'
  185. }
  186. if (row == '3') {
  187. return 'danger'
  188. }
  189. if (row == '4') {
  190. return 'info'
  191. }
  192. },
  193. formatChooseList() {
  194. if (this.chooseList.name) {
  195. return this.chooseList.name + '-' + this.chooseList.series + '-' + this.chooseList.brand
  196. }else{
  197. return null
  198. }
  199. }
  200. }
  201. }
  202. </script>
  203. <style lang="scss" scoped></style>