bpighouse.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368
  1. <template>
  2. <div class="bpighouse">
  3. <el-form
  4. :inline="true"
  5. :model="dataForm"
  6. @keyup.enter.native="getDataList()">
  7. <el-form-item>
  8. <el-input
  9. v-model="dataForm.key"
  10. placeholder="用户名/用户操作"
  11. clearable>
  12. </el-input>
  13. </el-form-item>
  14. <el-form-item>
  15. <el-button @click="getDataList()">查询</el-button>
  16. </el-form-item>
  17. <el-form-item>
  18. <el-button
  19. v-if="isAuth('sys:role:save')"
  20. type="primary"
  21. @click="addOrUpdateHandle()">
  22. 新增
  23. </el-button>
  24. </el-form-item>
  25. <el-form-item>
  26. <el-button
  27. v-if="isAuth('sys:role:delete')"
  28. type="danger"
  29. @click="deleteHandle()"
  30. :disabled="selectionDataList.length <= 0">
  31. 批量删除
  32. </el-button>
  33. </el-form-item>
  34. </el-form>
  35. <el-table
  36. :data="dataList"
  37. @selection-change="selectionChangeHandle"
  38. v-loading="dataListLoading"
  39. style="width: 100%">
  40. <el-table-column
  41. type="selection"
  42. header-align="center"
  43. align="center"
  44. width="50">
  45. </el-table-column>
  46. <el-table-column
  47. prop="number"
  48. header-align="center"
  49. align="center"
  50. label="猪舍编号">
  51. </el-table-column>
  52. <el-table-column
  53. prop="name"
  54. header-align="center"
  55. align="center"
  56. label="所属牧场">
  57. </el-table-column>
  58. <el-table-column
  59. prop="feeder"
  60. header-align="center"
  61. align="center"
  62. label="养殖员">
  63. </el-table-column>
  64. <el-table-column
  65. fixed="right"
  66. header-align="center"
  67. align="center"
  68. label="操作">
  69. <template slot-scope="scope">
  70. <el-button
  71. v-if="isAuth('sys:user:update')"
  72. type="success"
  73. size="mini"
  74. @click="addOrUpdateHandle(scope.row)">
  75. 修改
  76. </el-button>
  77. <el-button
  78. v-if="isAuth('sys:user:delete')"
  79. type="danger"
  80. size="mini"
  81. @click="deleteHandle(scope.row.id)">
  82. 删除
  83. </el-button>
  84. </template>
  85. </el-table-column>
  86. </el-table>
  87. <el-dialog
  88. :title="!form.id ? '新增' : '修改'"
  89. :close-on-click-modal="false"
  90. :visible.sync="visible"
  91. @close="cancel">
  92. <el-form
  93. :model="form"
  94. ref="form"
  95. @keyup.enter.native="formSubmit()"
  96. label-width="80px">
  97. <el-form-item label="所属牧场" prop="name">
  98. <el-select v-model="form.pastureId" placeholder="请选择所属牧场">
  99. <el-option
  100. v-for="item in pastureList"
  101. :key="item.id"
  102. :label="item.name"
  103. :value="item.id">
  104. </el-option>
  105. </el-select>
  106. </el-form-item>
  107. <el-form-item label="猪舍编号" prop="number">
  108. <el-input v-model="form.number" placeholder="猪舍编号"></el-input>
  109. </el-form-item>
  110. <el-form-item label="养殖员" prop="location">
  111. <el-select v-model="form.feeder" placeholder="请选择养殖员">
  112. <el-option
  113. v-for="item in employeeList"
  114. :key="item.id"
  115. :label="item.name"
  116. :value="item.id">
  117. </el-option>
  118. </el-select>
  119. </el-form-item>
  120. </el-form>
  121. <span slot="footer" class="dialog-footer">
  122. <el-button @click="cancel">取消</el-button>
  123. <el-button type="primary" @click="formSubmit()">确定</el-button>
  124. </span>
  125. </el-dialog>
  126. </div>
  127. </template>
  128. <script>
  129. export default {
  130. data() {
  131. return {
  132. dataForm: {
  133. key: "",
  134. },
  135. dataList: [
  136. {
  137. buildTime: "",
  138. id: "",
  139. location: "",
  140. manager: "",
  141. name: "",
  142. },
  143. ],
  144. pageIndex: 1,
  145. pageSize: 10,
  146. totalPage: 0,
  147. dataListLoading: false,
  148. selectionDataList: [],
  149. visible: false,
  150. form: {
  151. id: "",
  152. number: "",
  153. pastureId: "",
  154. feeder: "",
  155. },
  156. pastureList: [], // 牧场list
  157. employeeList: [] // 养殖员list
  158. };
  159. },
  160. mounted() {
  161. this.getDataList();
  162. },
  163. methods: {
  164. // 获取数据列表
  165. getDataList() {
  166. this.dataListLoading = true;
  167. this.$http({
  168. url: this.$http.adornUrl("/management/pigsty/list"),
  169. method: "post",
  170. params: this.$http.adornParams({
  171. page: 1,
  172. limit: 10,
  173. keywords: this.dataForm.key
  174. })
  175. }).then(async ({ data }) => {
  176. let pastureResult = await this.$http({
  177. url: this.$http.adornUrl("/management/pasture/findAll"),
  178. method: "post"
  179. });
  180. pastureResult.data.all && (this.pastureList = pastureResult.data.all)
  181. let employeeResult = await this.$http({
  182. url: this.$http.adornUrl("/management/employee/findAll"),
  183. method: "post"
  184. });
  185. employeeResult.data.all && (this.employeeList = employeeResult.data.all)
  186. console.log(this.employeeList);
  187. if (data && data.code === 0) {
  188. this.dataList = data.page.list;
  189. this.totalPage = data.page.totalCount;
  190. this.dataList.forEach((item) => {
  191. for (let pasture of this.pastureList) {
  192. if (item.pastureId === pasture.id) {
  193. item["name"] = pasture.name;
  194. break;
  195. }
  196. }
  197. for (let feeder of this.employeeList) {
  198. if (parseInt(item.feederId) === feeder.id) {
  199. item["feeder"] = feeder.name;
  200. break;
  201. }
  202. }
  203. });
  204. console.log(this.dataList);
  205. } else {
  206. this.dataList = [];
  207. this.totalPage = 0;
  208. }
  209. this.dataListLoading = false;
  210. });
  211. },
  212. // 每页数
  213. sizeChangeHandle(val) {
  214. this.pageSize = val;
  215. this.pageIndex = 1;
  216. this.getDataList();
  217. },
  218. // 当前页
  219. currentChangeHandle(val) {
  220. this.pageIndex = val;
  221. this.getDataList();
  222. },
  223. // 新增 or 修改牧场
  224. addOrUpdateHandle(row) {
  225. // 显示牧场新增 or 修改面板
  226. this.visible = true;
  227. if (row) {
  228. this.form = row;
  229. }
  230. },
  231. // 选择n个牧场
  232. selectionChangeHandle(val) {
  233. this.selectionDataList = [];
  234. val.forEach((item) => {
  235. this.selectionDataList.push(item.id);
  236. });
  237. },
  238. // 删除n个牧场
  239. deleteHandle(id) {
  240. this.$confirm(`确定删除牧场?`, "提示", {
  241. confirmButtonText: "确定",
  242. cancelButtonText: "取消",
  243. type: "warning",
  244. })
  245. .then(() => {
  246. // 删除操作
  247. if (id) {
  248. this.selectionDataList.push(id);
  249. }
  250. if (this.selectionDataList.length <= 0) {
  251. return;
  252. }
  253. this.$http({
  254. url: this.$http.adornUrl("/management/pigsty/delete"),
  255. method: "post",
  256. data: this.$http.adornData(this.selectionDataList, false),
  257. }).then((result) => {
  258. console.log(result);
  259. if (result.data.code === 0) {
  260. this.$message({
  261. message: "成功删除牧场",
  262. type: "success",
  263. duration: 1000,
  264. });
  265. } else {
  266. this.$message.error("删除牧场失败");
  267. }
  268. this.resetForm();
  269. this.selectionDataList = [];
  270. });
  271. })
  272. .catch(() => {});
  273. },
  274. formSubmit() {
  275. if (this.form.id) {
  276. // 修改
  277. if (this.form.number && this.form.pastureId && this.form.feeder) {
  278. // 进行修改操作
  279. this.$http({
  280. url: this.$http.adornUrl("/management/pigsty/update"),
  281. method: "post",
  282. data: this.$http.adornData({
  283. id: this.form.id,
  284. number: this.form.number,
  285. pastureId: this.form.pastureId,
  286. feederId: this.form.feeder,
  287. }),
  288. }).then((result) => {
  289. if (result.data.code === 0) {
  290. this.resetForm();
  291. this.visible = false;
  292. this.$message({
  293. message: "成功修改猪舍信息",
  294. type: "success",
  295. duration: 1000,
  296. });
  297. } else {
  298. this.$message.error("修改猪舍信息失败");
  299. }
  300. });
  301. } else {
  302. // 请输入完整
  303. this.$confirm(`请输入完整`, "提示", {
  304. confirmButtonText: "确定",
  305. cancelButtonText: "取消",
  306. type: "warning",
  307. })
  308. .then(() => {
  309. return;
  310. })
  311. .catch(() => {});
  312. }
  313. } else {
  314. // 新增
  315. if (this.form.number && this.form.pastureId && this.form.feeder) {
  316. // 进行新增操作
  317. this.$http({
  318. url: this.$http.adornUrl("/management/pigsty/save"),
  319. method: "post",
  320. data: this.$http.adornData({
  321. number: this.form.number,
  322. pastureId: this.form.pastureId,
  323. feederId: this.form.feeder,
  324. }),
  325. }).then((result) => {
  326. if (result.data.code === 0) {
  327. this.resetForm();
  328. this.visible = false;
  329. this.$message({
  330. message: "成功添加猪舍",
  331. type: "success",
  332. duration: 1000,
  333. });
  334. } else {
  335. this.$message.error("添加猪舍失败");
  336. }
  337. });
  338. } else {
  339. // 请输入完整
  340. this.$confirm(`请输入完整`, "提示", {
  341. confirmButtonText: "确定",
  342. cancelButtonText: "取消",
  343. type: "warning",
  344. })
  345. .then(() => {
  346. return;
  347. })
  348. .catch(() => {});
  349. }
  350. }
  351. },
  352. // 清空form
  353. resetForm() {
  354. for (let i in this.form) {
  355. this.form[i] = "";
  356. }
  357. this.getDataList();
  358. },
  359. // 取消
  360. cancel() {
  361. this.visible = false;
  362. this.resetForm();
  363. },
  364. },
  365. };
  366. </script>
  367. <style scoped>
  368. </style>