harmfulBiology.vue 12 KB

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