laboratory.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905
  1. <!-- -->
  2. <template>
  3. <div class="laboratory_box">
  4. <!-- 筛选 -->
  5. <el-row>
  6. <el-col>
  7. <div class="search_box">
  8. <!-- 任务处理人 -->
  9. <el-select
  10. filterable
  11. v-model="input"
  12. clearable
  13. @change="searchData"
  14. placeholder="请选择任务处理人/实际处理人"
  15. size="mini"
  16. >
  17. <el-option
  18. v-for="item in conductorList"
  19. :key="item.value"
  20. :label="item.label"
  21. :value="item.value"
  22. >
  23. </el-option>
  24. </el-select>
  25. <!-- 任务状态 -->
  26. <el-select
  27. filterable
  28. v-model="value"
  29. @change="searchData"
  30. clearable
  31. placeholder="请选择任务状态"
  32. size="mini"
  33. >
  34. <el-option
  35. v-for="item in options"
  36. :key="item.value"
  37. :label="item.label"
  38. :value="item.value"
  39. >
  40. </el-option>
  41. </el-select>
  42. <!-- 时间筛选 -->
  43. <el-date-picker
  44. size="mini"
  45. v-model="value1"
  46. @change="searchData"
  47. type="daterange"
  48. range-separator="至"
  49. start-placeholder="开始日期"
  50. end-placeholder="结束日期"
  51. align="right"
  52. :editable="false"
  53. >
  54. </el-date-picker>
  55. <div class="btn_box">
  56. <el-button type="info" size="mini" @click="searchData"
  57. >搜索</el-button
  58. >
  59. <el-button type="info" size="mini" @click="reset"
  60. >重置</el-button
  61. >
  62. </div>
  63. </div>
  64. </el-col>
  65. </el-row>
  66. <el-card style="margin-top: 15px">
  67. <!-- 列表 -->
  68. <el-table
  69. :data="tableData"
  70. stripe
  71. v-loading="loading"
  72. :height="48 * 13"
  73. style="width: 100%; overflow-y: auto"
  74. >
  75. <el-table-column prop="serial" label="序号" width="100">
  76. </el-table-column>
  77. <el-table-column prop="trap_number" label="设备编号" width="120">
  78. </el-table-column>
  79. <el-table-column prop="lng" label="经度" width="150">
  80. <template slot-scope="scope">
  81. <span>{{ scope.row.lng || "无" }}</span>
  82. </template>
  83. </el-table-column>
  84. <el-table-column prop="lat" label="纬度" width="150">
  85. <template slot-scope="scope">
  86. <span>{{ scope.row.lat || "无" }}</span>
  87. </template>
  88. </el-table-column>
  89. <el-table-column prop="id" label="任务编号" width="180">
  90. </el-table-column>
  91. <el-table-column
  92. prop="operator_user_name"
  93. label="任务处理人"
  94. width="180"
  95. >
  96. </el-table-column>
  97. <el-table-column
  98. prop="actual_operator_name"
  99. label="实际处理人"
  100. width="180"
  101. >
  102. <template slot-scope="scope">
  103. <span>{{ scope.row.actual_operator_name || "暂无" }}</span>
  104. </template>
  105. </el-table-column>
  106. <el-table-column prop="report_time" label="带回时间">
  107. <template slot-scope="scope">
  108. <span>{{ scope.row.report_time || "暂无" }}</span>
  109. </template>
  110. </el-table-column>
  111. <el-table-column prop="discern_status" label="任务状态" width="280">
  112. <template slot-scope="scope">
  113. <span v-if="scope.row.discern_status == '待接收'">
  114. <span
  115. style="
  116. width: 6px;
  117. height: 6px;
  118. background: #f93f3d;
  119. border-radius: 50%;
  120. display: inline-block;
  121. margin: 0 0 2px 0;
  122. "
  123. ></span>
  124. <span>待接收样本</span>
  125. </span>
  126. <span v-if="scope.row.discern_status == '已接收'">
  127. <span
  128. style="
  129. width: 6px;
  130. height: 6px;
  131. background: #f93f3d;
  132. border-radius: 50%;
  133. display: inline-block;
  134. margin: 0 0 2px 0;
  135. "
  136. ></span>
  137. <span>已接收样本</span>
  138. </span>
  139. <span v-if="scope.row.discern_status == '已填报'">
  140. <span
  141. style="
  142. width: 6px;
  143. height: 6px;
  144. background: #e6a23c;
  145. border-radius: 50%;
  146. display: inline-block;
  147. margin: 0 0 2px 0;
  148. "
  149. ></span>
  150. <span>已填报样本</span>
  151. </span>
  152. </template>
  153. </el-table-column>
  154. <el-table-column label="操作" fixed="right">
  155. <template slot-scope="scope">
  156. <a
  157. v-if="scope.row.discern_status == '待接收'"
  158. class="reset"
  159. href="javascript:;"
  160. @click="receive(scope.row)"
  161. >确认接收</a
  162. >
  163. <a
  164. v-if="scope.row.discern_status == '已接收'"
  165. class="reset"
  166. @click="examine(scope.row)"
  167. href="javascript:;"
  168. >填报</a
  169. >
  170. <a
  171. v-if="scope.row.discern_status == '已填报'"
  172. class="reset"
  173. href="javascript:;"
  174. @click="examine(scope.row)"
  175. >编辑</a
  176. >
  177. </template>
  178. </el-table-column>
  179. </el-table>
  180. <!-- 分页 -->
  181. <el-pagination
  182. style="margin: 60px 0 0 0"
  183. :page-size="20"
  184. @current-change="newPage"
  185. :current-page="page"
  186. v-if="tableData.length > 0"
  187. background
  188. layout="prev, pager, next, jumper"
  189. :total="tableSum"
  190. >
  191. </el-pagination>
  192. </el-card>
  193. <!-- 填报弹框 -->
  194. <el-dialog
  195. title="填报"
  196. v-loading="loading1"
  197. :visible.sync="dialogVisible"
  198. width="800px"
  199. :close-on-click-modal="false"
  200. :close-on-press-escape="false"
  201. >
  202. <ul class="fill_ul">
  203. <li class="fill_listTlt">
  204. <div class="fill_div">
  205. <div class="fill_tltie">有害生物</div>
  206. <div class="fill_tltie">数量</div>
  207. </div>
  208. </li>
  209. <li class="fill_list1" v-if="fillList.length !== 0">
  210. <div v-for="(item, index) in fillList" :key="item.ind">
  211. <el-select
  212. v-model="models[index]"
  213. disabled
  214. size="mini"
  215. clearable
  216. @change="compileInsect($event, item, index)"
  217. placeholder="请选择"
  218. >
  219. <el-option
  220. v-for="item1 in fillList"
  221. :key="item1.value"
  222. :label="item1.label"
  223. :value="item1.value"
  224. >
  225. </el-option>
  226. </el-select>
  227. <el-input
  228. disabled
  229. placeholder="请输入内容"
  230. size="mini"
  231. v-model="item.num"
  232. clearable
  233. type="number"
  234. style="width: 30%"
  235. >
  236. </el-input>
  237. <span @click="delInsect(item)">删除</span>
  238. </div>
  239. </li>
  240. <!-- 添加 -->
  241. <li class="fill_list">
  242. <el-select
  243. style="margin: 0 0 0 -8px"
  244. v-model="insectVal"
  245. size="mini"
  246. clearable
  247. placeholder="请选择"
  248. filterable
  249. >
  250. <el-option
  251. v-for="item1 in options2"
  252. :key="item1.value"
  253. :label="item1.label"
  254. :value="item1.value"
  255. :disabled="item1.disabled"
  256. >
  257. </el-option>
  258. </el-select>
  259. <el-input
  260. placeholder="请输入数量"
  261. size="mini"
  262. v-model="numVal"
  263. clearable
  264. onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)));"
  265. @keyup.native="proving2($event)"
  266. type="number"
  267. style="width: 30%"
  268. >
  269. </el-input>
  270. <span
  271. style="color: #000; font-size: 30px; cursor: pointer"
  272. @click="addInsect()"
  273. >+</span
  274. >
  275. </li>
  276. </ul>
  277. <span slot="footer" class="dialog-footer">
  278. <el-button @click="dialogVisible = false">取 消</el-button>
  279. <el-button :disabled="submitBtn" type="primary" @click="confirmAxios">{{
  280. submitBtn == true ? "发布中..." : "发布"
  281. }}</el-button>
  282. </span>
  283. </el-dialog>
  284. </div>
  285. </template>
  286. <script>
  287. export default {
  288. components: {},
  289. data() {
  290. //这里存放数据
  291. return {
  292. fullHeight: document.documentElement.clientHeight - 116, //
  293. // 筛选
  294. input: "", // 任务处理人
  295. conductorList: [], // 任务处理人列表
  296. options: [
  297. {
  298. value: "待接收",
  299. label: "待接收",
  300. },
  301. {
  302. value: "已接收",
  303. label: "已接收",
  304. },
  305. {
  306. value: "已填报",
  307. lanbel: "已填报",
  308. },
  309. ],
  310. value: "", // 任务状态
  311. value1: "", // 时间筛选
  312. startTime: "",
  313. endTime: "",
  314. // 表格
  315. tableData: [],
  316. page: 1,
  317. tableSum: 0, // 总页数
  318. // 填报弹框
  319. dialogVisible: false,
  320. options1: [],
  321. options2: [], //新增有害生物
  322. value2: "",
  323. input2: "",
  324. loading: false, // 加载
  325. // 已识别
  326. examineObj: {}, // 选中的对象值
  327. fillList: [], // 填报详情数据
  328. spareData: [], // 填报详情备用数据
  329. // models: Array(fillList.length).fill(''), // 填报select数据
  330. models: null, // 填报select数据
  331. insectVal: "", // 添加 - 有害生物
  332. numVal: "", // 添加 - 数量
  333. loading1: false, // 加载
  334. submitBtn: false, // 防止弹框确定按钮重复请求
  335. };
  336. },
  337. //监听属性 类似于data概念
  338. computed: {},
  339. //监控data中的数据变化
  340. watch: {
  341. fullHeight(val) {
  342. //监控浏览器高度变化
  343. if (!this.timer) {
  344. this.fullHeight = val;
  345. this.timer = true;
  346. let that = this;
  347. setTimeout(function () {
  348. //防止过度调用监测事件,导致卡顿
  349. that.timer = false;
  350. }, 400);
  351. }
  352. },
  353. // 填报弹框
  354. dialogVisible(val) {
  355. if (val == false) {
  356. this.fillList = [];
  357. this.models = [];
  358. this.spareData = []; // 备用数据
  359. }
  360. },
  361. // 填报 - 新添加数据
  362. numValZ(val) {
  363. console.log(val);
  364. },
  365. },
  366. //方法集合
  367. methods: {
  368. //动态获取浏览器高度
  369. get_boderHeight() {
  370. const that = this;
  371. window.onresize = () => {
  372. return (() => {
  373. window.fullHeight = document.documentElement.clientHeight;
  374. that.fullHeight = window.fullHeight;
  375. })();
  376. };
  377. },
  378. // 筛选
  379. searchData() {
  380. // 对时间筛选中获取到的时间进行处理
  381. if (this.value1) {
  382. this.startTime = this.formatTime(this.value1[0], "yyyy-MM-dd");
  383. this.endTime = this.formatTime(this.value1[1], "yyyy-MM-dd");
  384. } else {
  385. this.startTime = "";
  386. this.endTime = "";
  387. }
  388. this.loading = true;
  389. this.page = 1
  390. this.tableData = [];
  391. this.tableList();
  392. },
  393. // 重置
  394. reset() {
  395. this.input = "";
  396. this.value = "";
  397. this.value1 = "";
  398. this.startTime = "";
  399. this.endTime = "";
  400. this.loading = true;
  401. this.page = 1;
  402. this.tableList();
  403. },
  404. // 下页
  405. newPage(page) {
  406. this.loading = true;
  407. this.page = page;
  408. this.tableData = [];
  409. this.tableList();
  410. },
  411. // 表格数据
  412. tableList() {
  413. this.$axios({
  414. method: "POST",
  415. url: "/api/api_gateway?method=control_center.task.discern_list",
  416. data: this.qs.stringify({
  417. page: this.page,
  418. page_item: 20,
  419. operator_user_id: this.input, // 任务处理人id
  420. start_time: this.startTime, // 开始时间
  421. end_time: this.endTime, // 结束时间
  422. task_status: this.value, // 任务状态
  423. }),
  424. })
  425. .then((res) => {
  426. if (res.data.data.total_item !== 0) {
  427. this.tableSum = res.data.data.total_item;
  428. var data = res.data.data.page_list;
  429. var list = [];
  430. data.forEach((item, index) => {
  431. item.serial = index + 1;
  432. list.push(item);
  433. });
  434. this.tableData = list;
  435. }
  436. this.loading = false;
  437. })
  438. .catch((err) => {
  439. this.loading = false;
  440. });
  441. },
  442. // 筛选列表 - 任务处理人
  443. conductorAxios() {
  444. this.$axios({
  445. method: "POST",
  446. url: "/api/api_gateway?method=control_center.task.task_user_list",
  447. data: this.qs.stringify({
  448. user_type: "operator", // 用户类型,operator(任务处理人), supervisor(任务监督人), owner(任务发布人)
  449. operator_id: "", // 已经选择的任务处理人id
  450. supervisor_id: "", // 已经选择的任务监督人id
  451. owner_id: "", // 已经选择的任务发布人id
  452. }),
  453. })
  454. .then((res) => {
  455. if (res.data.data.length !== 0) {
  456. var data = res.data.data;
  457. var list = [];
  458. data.forEach((item) => {
  459. var obj = {};
  460. obj["value"] = item.user_id;
  461. obj["label"] = item.real_name;
  462. list.push(obj);
  463. });
  464. this.conductorList = list;
  465. }
  466. })
  467. .catch((err) => {});
  468. },
  469. // 确认接收
  470. receive(data) {
  471. this.$confirm("此操作将确认接收, 是否继续?", "提示", {
  472. confirmButtonText: "确定",
  473. cancelButtonText: "取消",
  474. type: "warning",
  475. })
  476. .then(() => {
  477. this.$axios({
  478. method: "POST",
  479. url: "/api/api_gateway?method=control_center.task.discern_modify",
  480. data: this.qs.stringify({
  481. record_id: data.id, // 任务id
  482. }),
  483. })
  484. .then((res) => {
  485. if (res.data.data == true) {
  486. if (document.getElementsByClassName("el-message").length == 0) {
  487. this.$message({
  488. type: "success",
  489. message: "接收成功!",
  490. duration: 1500,
  491. });
  492. }
  493. this.loading = true;
  494. this.tableList();
  495. }
  496. })
  497. .catch((err) => {
  498. console.log(err);
  499. });
  500. })
  501. .catch(() => {
  502. if (document.getElementsByClassName("el-message").length == 0) {
  503. this.$message({
  504. type: "info",
  505. message: "已取消接收",
  506. duration: 1500,
  507. });
  508. }
  509. });
  510. },
  511. // 填报、编辑事件 (表格中的操作)
  512. examine(data) {
  513. // console.log(data);
  514. this.examineObj = data;
  515. // 填报记录详情接口
  516. this.$axios({
  517. method: "POST",
  518. url: "/api/api_gateway?method=control_center.task.trap_pest_record_info",
  519. data: this.qs.stringify({
  520. trap_record_id: data.id, // 任务id
  521. }),
  522. })
  523. .then((res) => {
  524. var data = res.data.data;
  525. var list = [];
  526. var arr = [];
  527. data.forEach((item, index) => {
  528. var obj = {};
  529. obj["value"] = item.id;
  530. obj["label"] = item.pest_name;
  531. obj["num"] = item.pest_number;
  532. obj["ind"] = index;
  533. obj["disabled"] = false;
  534. list.push(obj);
  535. arr.push(item.id);
  536. });
  537. this.fillList = list;
  538. this.spareData = list; // 备用数据
  539. this.models = arr;
  540. this.dialogVisible = true;
  541. this.addEditor(); // 新添加 - 编辑接口
  542. })
  543. .catch((err) => {
  544. console.log(err);
  545. });
  546. },
  547. // 新添加 -编辑
  548. addEditor() {
  549. this.$axios({
  550. method: "POST",
  551. url: "/api/api_gateway?method=sysmenage.maintain.pest_list",
  552. data: this.qs.stringify({
  553. page: 1, // 页码
  554. page_item: "1000000000000000000000000000", // 每页条目数,默认10
  555. pest_name: "", // 有害生物
  556. }),
  557. })
  558. .then((res) => {
  559. if (res.data.data.total_item !== 0) {
  560. var data = res.data.data;
  561. var list = [];
  562. for (var i = 0; i < data.page_list.length; i++) {
  563. var obj = {};
  564. obj["id"] = data.page_list[i].pest_id;
  565. obj["value"] = data.page_list[i].pest_name;
  566. obj["label"] = data.page_list[i].pest_name;
  567. obj["disabled"] = false;
  568. list.push(obj);
  569. }
  570. this.options2 = list;
  571. this.indexRedact(); // 有害生物删除添加
  572. }
  573. })
  574. .catch((err) => {
  575. console.log(err);
  576. });
  577. },
  578. // 添加有害生物
  579. addInsect() {
  580. if (this.insectVal !== "" && this.numVal !== "") {
  581. var array = [];
  582. var arr = [];
  583. for (var i = 0; i < this.options2.length; i++) {
  584. if (this.options2[i].label == this.insectVal) {
  585. var obj = {};
  586. obj["value"] = this.options2[i].id;
  587. obj["label"] = this.options2[i].label;
  588. obj["num"] = Number(this.numVal);
  589. arr = [obj, ...this.fillList];
  590. this.models = [obj.value, ...this.models];
  591. }
  592. }
  593. // 修改原数据
  594. this.fillList = [];
  595. this.insectVal = "";
  596. this.numVal = "";
  597. arr.forEach((item, index) => {
  598. item.ind = index;
  599. this.fillList.push(item);
  600. });
  601. // for (var i = 0; i < this.fillList.length; i++) {
  602. // for (var j = 0; j < this.options2.length; j++) {
  603. // if (this.fillList[i].label == this.options2[j].label) {
  604. // this.options2[j].disabled = true;
  605. // } else {
  606. // this.options2[j].disabled = false;
  607. // }
  608. // }
  609. // }
  610. this.indexRedact(); // 有害生物添加
  611. } else {
  612. if (document.getElementsByClassName("el-message").length == 0) {
  613. this.$message({
  614. type: "info",
  615. message: "请将信息填写完整!",
  616. duration: 1500,
  617. });
  618. }
  619. }
  620. },
  621. // 删除有害生物
  622. delInsect(data) {
  623. this.$delete(this.fillList, data.ind); // 删除渲染列表对应数据
  624. this.$delete(this.models, data.ind); // 删除对应双向绑定数据
  625. var list = [];
  626. this.fillList.forEach((item, index) => {
  627. item.ind = index;
  628. list.push(item);
  629. });
  630. this.fillList = [];
  631. this.fillList = list;
  632. this.options2.forEach((item) => {
  633. item.disabled = false
  634. })
  635. this.indexRedactA(); // 有害生物删除
  636. },
  637. // 添加、删除确定事件
  638. confirmAxios() {
  639. this.submitBtn = true;
  640. var array = [];
  641. for (var i = 0; i < this.fillList.length; i++) {
  642. var obj = {};
  643. obj["pest_name"] = this.fillList[i].label;
  644. obj["pest_number"] = this.fillList[i].num;
  645. array.push(obj);
  646. }
  647. if (this.insectVal !== "" && this.numVal !== "") {
  648. array = [
  649. {
  650. pest_name: this.insectVal,
  651. pest_number: this.numVal,
  652. },
  653. ...array,
  654. ];
  655. }
  656. this.$axios({
  657. method: "POST",
  658. url: "/api/api_gateway?method=control_center.task.discern_add",
  659. data: this.qs.stringify({
  660. record_id: this.examineObj.id, // 任务id
  661. pest_list: JSON.stringify(array), // 害虫数组
  662. }),
  663. })
  664. .then((res) => {
  665. if (res.data.message == "") {
  666. if (document.getElementsByClassName("el-message").length == 0) {
  667. this.$message({
  668. type: "success",
  669. message: "成功!",
  670. duration: 1500,
  671. });
  672. }
  673. this.fillList = [];
  674. this.models = [];
  675. this.dialogVisible = false;
  676. }
  677. this.insectVal = "";
  678. this.numVal = "";
  679. this.submitBtn = false;
  680. })
  681. .catch((err) => {
  682. this.submitBtn = false;
  683. });
  684. },
  685. // 编辑有害生物
  686. compileInsect(e, data, index) {
  687. var list = this.spareData;
  688. var newList = [];
  689. // 下拉框数据改变处理
  690. var name = "";
  691. for (var i = 0; i < list.length; i++) {
  692. var obj = {};
  693. if (e == list[i].value) {
  694. name = list[i].label;
  695. }
  696. }
  697. this.$set(this.models, index, e);
  698. this.fillList[index].label = name;
  699. this.fillList[index].value = e;
  700. },
  701. getBit(value, bit) {
  702. let str = Number(value);
  703. str = str.toFixed(bit);
  704. return str;
  705. },
  706. proving2(e) {
  707. var keynum = window.event ? e.keyCode : e.which; //获取键盘码
  708. var keychar = String.fromCharCode(keynum); //获取键盘码对应的字符
  709. if (keynum == 189 || keynum == 109) {
  710. //禁止输入负数
  711. if (document.getElementsByClassName("el-message").length == 0) {
  712. this.$message.warning("禁止输入负数");
  713. }
  714. e.target.value = 0;
  715. }
  716. if (String(e.target.value).indexOf("-") == -1) {
  717. } else {
  718. //禁止输入负数
  719. if (document.getElementsByClassName("el-message").length == 0) {
  720. this.$message.warning("禁止输入负数");
  721. }
  722. e.target.value = 0;
  723. }
  724. },
  725. // 有害生物添加
  726. indexRedact() {
  727. this.fillList.forEach((item) => {
  728. this.options2.forEach((e) => {
  729. if (item.label == e.label) {
  730. e.disabled = true;
  731. // console.log(e.label, e.disabled);
  732. }
  733. });
  734. });
  735. },
  736. // 有害生物删除
  737. indexRedactA() {
  738. this.fillList.forEach((item) => {
  739. this.options2.forEach((e) => {
  740. if (item.label == e.label) {
  741. // console.log(e.label, e.disabled)
  742. e.disabled = true;
  743. }
  744. });
  745. });
  746. }
  747. },
  748. //生命周期 - 创建完成(可以访问当前this实例)
  749. created() {},
  750. //生命周期 - 挂载完成(可以访问DOM元素)
  751. mounted() {
  752. this.loading = true;
  753. this.get_boderHeight(); // 动态获取浏览器高度
  754. this.tableList(); // 表格列表数据
  755. this.conductorAxios(); // 筛选列表 - 任务处理人列表
  756. },
  757. beforeCreate() {}, //生命周期 - 创建之前
  758. beforeMount() {}, //生命周期 - 挂载之前
  759. beforeUpdate() {}, //生命周期 - 更新之前
  760. updated() {}, //生命周期 - 更新之后
  761. beforeDestroy() {}, //生命周期 - 销毁之前
  762. destroyed() {}, //生命周期 - 销毁完成
  763. activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
  764. };
  765. </script>
  766. <style lang="less" scoped>
  767. .laboratory_box {
  768. // 搜索
  769. .search_box {
  770. display: flex;
  771. /deep/.el-select {
  772. margin: 0 15px 0 0;
  773. }
  774. /deep/.el-input {
  775. // width: 15%;
  776. margin: 0 15px 0 0;
  777. }
  778. .btn_box {
  779. margin: 0 0 0 15px;
  780. // width: 50%;
  781. display: flex;
  782. justify-content: start;
  783. }
  784. /deep/.el-range-editor--mini.el-input__inner {
  785. width: 20%;
  786. }
  787. }
  788. a {
  789. text-decoration: none;
  790. }
  791. .reset {
  792. color: #1890ff;
  793. }
  794. // 填报弹框
  795. .fill_ul {
  796. .fill_listTlt {
  797. width: 95%;
  798. .fill_div {
  799. width: 60%;
  800. margin: 0 0 0 60px;
  801. display: flex;
  802. justify-content: space-between;
  803. .fill_tltie {
  804. margin: 0 0 10px 0;
  805. width: 35%;
  806. display: inline-block;
  807. }
  808. }
  809. }
  810. .fill_list {
  811. display: flex;
  812. justify-content: space-around;
  813. margin: 0 20px 10px 0;
  814. span {
  815. line-height: 30px;
  816. color: #1890ff;
  817. }
  818. }
  819. .fill_list1 {
  820. div {
  821. display: flex;
  822. justify-content: space-around;
  823. margin: 0 20px 10px 0;
  824. span {
  825. line-height: 30px;
  826. color: #1890ff;
  827. cursor: pointer;
  828. }
  829. }
  830. }
  831. }
  832. /deep/.el-card {
  833. overflow: hidden;
  834. overflow-y: auto;
  835. }
  836. }
  837. // 去除elementui input数字框里上下箭头
  838. /deep/ input::-webkit-outer-spin-button,
  839. /deep/ input::-webkit-inner-spin-button {
  840. -webkit-appearance: none !important;
  841. }
  842. /deep/ input[type="number"] {
  843. -moz-appearance: textfield !important;
  844. }
  845. /deep/.el-date-editor {
  846. cursor: pointer;
  847. .el-range-input {
  848. cursor: pointer;
  849. }
  850. }
  851. /deep/.el-button--info {
  852. background-color: #409eff;
  853. border-color: #409eff;
  854. }
  855. </style>