harmfulBiology.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464
  1. <!-- -->
  2. <template>
  3. <div class="harmfulBiology_box">
  4. <!-- 筛选 -->
  5. <el-row>
  6. <el-col>
  7. <!-- 组织搜索 -->
  8. <div class="search_box">
  9. <el-input
  10. size="mini"
  11. placeholder="请输入有害生物名称"
  12. v-model.trim="input"
  13. @change="searchData"
  14. clearable
  15. >
  16. </el-input>
  17. <div class="btn_box">
  18. <el-button type="primary" size="mini" @click="searchData"
  19. >搜索</el-button
  20. >
  21. <el-button type="primary" size="mini" @click="addrHarmfulBiology"
  22. >添加有害生物</el-button
  23. >
  24. </div>
  25. </div>
  26. </el-col>
  27. </el-row>
  28. <el-card style="margin-top: 15px">
  29. <!-- 列表 -->
  30. <el-table
  31. :data="tableData"
  32. v-loading="loading"
  33. stripe
  34. :height="48 * 13"
  35. style="width: 100%"
  36. >
  37. <el-table-column prop="ind" label="序号" width="120"> </el-table-column>
  38. <el-table-column
  39. prop="pest_name"
  40. :show-overflow-tooltip="true"
  41. label="有害生物名称"
  42. width="280"
  43. >
  44. </el-table-column>
  45. <el-table-column
  46. prop="quarantine"
  47. label="检疫性有害生物(是/否)"
  48. width="180"
  49. >
  50. </el-table-column>
  51. <el-table-column prop="alien_specie" label="是否外来物种" width="180">
  52. </el-table-column>
  53. <el-table-column
  54. prop="messages"
  55. :show-overflow-tooltip="true"
  56. label="备注"
  57. width="280"
  58. >
  59. <template slot-scope="scope">
  60. <span>{{ scope.row.messages || "无" }}</span>
  61. </template>
  62. </el-table-column>
  63. <el-table-column prop="create_time" label="添加时间" width="180">
  64. </el-table-column>
  65. <el-table-column prop="modify_time" label="最后修改时间" width="180">
  66. </el-table-column>
  67. <el-table-column label="操作">
  68. <template slot-scope="scope">
  69. <a class="reset" href="javascript:;" @click="actionFunc(scope.row)"
  70. >编辑</a
  71. >
  72. <i class="line"></i>
  73. <a class="delete" href="javascript:;" @click="deleteFunc(scope.row)"
  74. >删除</a
  75. >
  76. </template>
  77. </el-table-column>
  78. </el-table>
  79. <!-- 分页 -->
  80. <el-pagination
  81. v-if="tableData.length !== 0"
  82. @current-change="changeList"
  83. background
  84. :page-size="20"
  85. layout="prev, pager, next, jumper"
  86. :current-page="page"
  87. :total="pageSum"
  88. >
  89. </el-pagination>
  90. </el-card>
  91. <!-- 添加、编辑弹出框 -->
  92. <el-dialog
  93. :close-on-click-modal="false"
  94. :close-on-press-escape="false"
  95. :title="tltData"
  96. :visible.sync="addrInsectVisible"
  97. width="30%"
  98. >
  99. <el-form ref="form" :rules="rules" :model="form" label-width="150px">
  100. <el-form-item label="有害生物名称: " prop="name">
  101. <el-input
  102. style="width: 80%"
  103. size="mini"
  104. v-model.trim="form.name"
  105. ></el-input>
  106. </el-form-item>
  107. <el-form-item label="检疫性有害生物: " prop="judge">
  108. <el-select v-model="form.judge" placeholder="请选择检疫性有害生物">
  109. <el-option label="是" value="是"></el-option>
  110. <el-option label="否" value="否"></el-option>
  111. </el-select>
  112. </el-form-item>
  113. <el-form-item label="是否外来入侵物种: " prop="judge2">
  114. <el-select v-model="form.judge2" placeholder="请选择否外来入侵物种">
  115. <el-option label="是" value="是"></el-option>
  116. <el-option label="否" value="否"></el-option>
  117. </el-select>
  118. </el-form-item>
  119. <el-form-item label="备注: " prop="remark">
  120. <el-input
  121. style="width: 80%"
  122. size="mini"
  123. type="textarea"
  124. resize="none"
  125. v-model.trim="form.remark"
  126. ></el-input>
  127. </el-form-item>
  128. <el-form-item>
  129. <el-button
  130. :disabled="submitBtn"
  131. size="small"
  132. type="primary"
  133. @click="submitForm"
  134. >{{ submitBtn == true ? "发布中..." : "发布" }}</el-button
  135. >
  136. <el-button size="small" @click="cancel">取消</el-button>
  137. </el-form-item>
  138. </el-form>
  139. </el-dialog>
  140. </div>
  141. </template>
  142. <script>
  143. export default {
  144. //import引入的组件需要注入到对象中才能使用
  145. components: {},
  146. data() {
  147. //这里存放数据
  148. return {
  149. fullHeight: document.documentElement.clientHeight - 116, //
  150. input: "", // 搜索
  151. page: 1, //当前页码
  152. pageSum: 0, // 总数量
  153. // 列表
  154. tableData: [
  155. {
  156. ind: "1",
  157. name: "冥蛾引诱剂",
  158. judge: "是",
  159. judge2: "是",
  160. remark: "这是一个有害虫类",
  161. addDate: "2016-05-02 10:00:00",
  162. endDate: "2021-01-06 10:00:00"
  163. }
  164. ],
  165. loading: false, // 加载
  166. // 编辑、 添加
  167. tltData: "添加有害生物",
  168. addrInsectVisible: false,
  169. form: {
  170. name: "", //有害生物名称
  171. judge: "", // 检疫性有害生物
  172. judge2: "", //是否外来入侵物种
  173. remark: "" // 备注
  174. },
  175. rules: {
  176. name: [
  177. { required: true, message: "请输入有害生物名称", trigger: "blur" }
  178. // { min: 3, max: 5, message: "长度在 1 到 15 个字符", trigger: "blur" },
  179. ],
  180. judge: [
  181. { required: true, message: "请选检疫性有害生物", trigger: "blur" }
  182. // { min: 3, max: 5, message: "长度在 1 到 15 个字符", trigger: "blur" },
  183. ],
  184. judge2: [
  185. {
  186. required: true,
  187. message: "请选择是否外来入侵物种",
  188. trigger: "blur"
  189. }
  190. // { min: 3, max: 5, message: "长度在 1 到 30 个字符", trigger: "blur" },
  191. ]
  192. // remark: [
  193. // { required: true, message: "请输入备注", trigger: "blur" },
  194. // // { min: 3, max: 5, message: "长度在 1 到 30 个字符", trigger: "blur" },
  195. // ],
  196. },
  197. insectObj: {},
  198. isClick: true, // 防止重复弹框
  199. submitBtn: false // 防止弹框确定按钮重复请求
  200. };
  201. },
  202. //监听属性 类似于data概念
  203. computed: {},
  204. //监控data中的数据变化
  205. watch: {
  206. fullHeight(val) {
  207. //监控浏览器高度变化
  208. if (!this.timer) {
  209. this.fullHeight = val;
  210. this.timer = true;
  211. let that = this;
  212. setTimeout(function() {
  213. //防止过度调用监测事件,导致卡顿
  214. that.timer = false;
  215. }, 400);
  216. }
  217. },
  218. addrInsectVisible(val) {
  219. if (val == false) {
  220. console.log("gsjdgsjdgjsgdjsgdghj");
  221. this.form.name = ""; // 有害生物名称
  222. this.form.judge = ""; // 检疫性有害生物
  223. this.form.judge2 = ""; // 是否外来入侵物种
  224. this.form.remark = ""; // 备注
  225. // this.$refs["form"].resetFields();
  226. }
  227. }
  228. },
  229. //方法集合
  230. methods: {
  231. //动态获取浏览器高度
  232. get_boderHeight() {
  233. const that = this;
  234. window.onresize = () => {
  235. return (() => {
  236. window.fullHeight = document.documentElement.clientHeight;
  237. that.fullHeight = window.fullHeight;
  238. })();
  239. };
  240. },
  241. // 搜索
  242. searchData() {
  243. this.harmfulBiologyList();
  244. },
  245. // 添加有害生物
  246. addrHarmfulBiology() {
  247. this.tltData = "添加有害生物";
  248. this.addrInsectVisible = true;
  249. },
  250. // 获取有害生物列表
  251. harmfulBiologyList() {
  252. this.$axios({
  253. method: "POST",
  254. url: "/api/api_gateway?method=sysmenage.maintain.pest_list",
  255. data: this.qs.stringify({
  256. page: this.page,
  257. page_item: "10",
  258. pest_name: this.input
  259. })
  260. })
  261. .then(res => {
  262. if (res.data.data.total_item !== 0) {
  263. var data = res.data.data;
  264. this.pageSum = data.total_item;
  265. var list = [];
  266. data.page_list.forEach((item, index) => {
  267. item.ind = index + 1;
  268. list.push(item);
  269. });
  270. this.tableData = list;
  271. } else {
  272. this.tableData = [];
  273. }
  274. this.loading = false;
  275. })
  276. .catch(err => {
  277. this.loading = false;
  278. });
  279. },
  280. // 分页
  281. changeList(page) {
  282. this.page = page;
  283. this.loading = true;
  284. this.tableData = [];
  285. this.harmfulBiologyList();
  286. },
  287. // 编辑
  288. actionFunc(data) {
  289. this.tltData = "编辑有害生物";
  290. this.insectObj = data;
  291. this.form = {
  292. name: data.pest_name, //有害生物名称
  293. judge: data.quarantine, // 检疫性有害生物
  294. judge2: data.alien_specie, //是否外来入侵物种
  295. remark: data.messages // 备注
  296. };
  297. this.addrInsectVisible = true;
  298. },
  299. // 删除
  300. deleteFunc(data) {
  301. this.$confirm("此操作将永久删除, 是否继续?", "提示", {
  302. confirmButtonText: "确定",
  303. cancelButtonText: "取消",
  304. type: "warning"
  305. })
  306. .then(() => {
  307. this.$axios({
  308. method: "POST",
  309. url: "/api/api_gateway?method=sysmenage.maintain.pest_delete",
  310. data: this.qs.stringify({
  311. pest_id: data.pest_id
  312. })
  313. }).then(res => {
  314. console.log(res.data.data);
  315. if (res.data.data == true) {
  316. this.$message({
  317. type: "success",
  318. message: "成功",
  319. duration: 1500
  320. });
  321. } else {
  322. this.$message({
  323. type: "error",
  324. message: "失败",
  325. duration: 1500
  326. });
  327. }
  328. this.harmfulBiologyList();
  329. });
  330. })
  331. .catch(() => {
  332. this.$message({
  333. type: "info",
  334. message: "已取消删除"
  335. });
  336. });
  337. },
  338. // 添加 - 编辑 确定
  339. submitForm() {
  340. this.$refs["form"].validate(valid => {
  341. if (valid) {
  342. this.submitBtn = true;
  343. if (this.tltData == "添加有害生物") {
  344. var url = "/api/api_gateway?method=sysmenage.maintain.pest_add";
  345. var postData = this.qs.stringify({
  346. pest_name: this.form.name,
  347. alien_specie: this.form.judge2,
  348. quarantine: this.form.judge,
  349. messages: this.form.remark
  350. });
  351. } else if (this.tltData == "编辑有害生物") {
  352. var url = "/api/api_gateway?method=sysmenage.maintain.pest_modify";
  353. var postData = this.qs.stringify({
  354. pest_id: this.insectObj.pest_id,
  355. pest_name: this.form.name,
  356. alien_specie: this.form.judge2,
  357. quarantine: this.form.judge,
  358. messages: this.form.remark
  359. });
  360. }
  361. this.$axios({
  362. method: "POST",
  363. url,
  364. data: postData
  365. })
  366. .then(res => {
  367. if (res.data.message == "") {
  368. this.$message({
  369. type: "success",
  370. message: "成功",
  371. duration: 1500
  372. });
  373. }
  374. this.$refs["form"].resetFields();
  375. this.addrInsectVisible = false;
  376. this.harmfulBiologyList();
  377. this.submitBtn = false;
  378. })
  379. .catch(err => {
  380. this.submitBtn = false;
  381. });
  382. } else {
  383. return false;
  384. }
  385. });
  386. },
  387. cancel() {
  388. this.$refs["form"].resetFields();
  389. this.addrInsectVisible = false;
  390. }
  391. },
  392. //生命周期 - 创建完成(可以访问当前this实例)
  393. created() {},
  394. //生命周期 - 挂载完成(可以访问DOM元素)
  395. mounted() {
  396. this.loading = true;
  397. this.harmfulBiologyList();
  398. },
  399. beforeCreate() {}, //生命周期 - 创建之前
  400. beforeMount() {}, //生命周期 - 挂载之前
  401. beforeUpdate() {}, //生命周期 - 更新之前
  402. updated() {}, //生命周期 - 更新之后
  403. beforeDestroy() {}, //生命周期 - 销毁之前
  404. destroyed() {}, //生命周期 - 销毁完成
  405. activated() {} //如果页面有keep-alive缓存功能,这个函数会触发
  406. };
  407. </script>
  408. <style lang="less" scoped>
  409. .harmfulBiology_box {
  410. .search_box {
  411. display: flex;
  412. /deep/.el-input {
  413. width: 300px;
  414. }
  415. .btn_box {
  416. margin: 0 0 0 15px;
  417. }
  418. }
  419. a {
  420. text-decoration: none;
  421. }
  422. .reset {
  423. color: #1890ff;
  424. }
  425. .delete {
  426. color: #f56c6c;
  427. }
  428. .line {
  429. display: inline-block;
  430. width: 1px;
  431. background: rgba(0, 0, 0, 0.09);
  432. margin: 0 11px;
  433. height: 14px;
  434. }
  435. // 弹框
  436. /deep/.el-select {
  437. width: 80%;
  438. }
  439. }
  440. // 文本域样式更改
  441. /deep/.el-textarea__inner {
  442. font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;
  443. }
  444. </style>