addressManager.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683
  1. <template>
  2. <div class="m-container">
  3. <h2>
  4. <div class="squrt"></div>
  5. 教学点管理
  6. </h2>
  7. <div class="m-core" v-if="(tableList.length > 0 ||
  8. pageInfo.page > 1 ||
  9. searchForm.search ||
  10. searchForm.organId ||
  11. searchForm.publicFlag) &&
  12. contextFlag
  13. ">
  14. <save-form :inline="true" class="searchForm" @submit="search" @reset="onReset" :model="searchForm">
  15. <el-form-item>
  16. <el-input type="text" clearable v-model.trim="searchForm.search" placeholder="教学点名称"></el-input>
  17. </el-form-item>
  18. <el-form-item>
  19. <el-select v-model.trim="searchForm.organId" clearable filterable placeholder="请选择分部">
  20. <el-option v-for="item in selects.branchs" :key="item.id" :label="item.name" :value="item.id"></el-option>
  21. </el-select>
  22. </el-form-item>
  23. <el-form-item>
  24. <el-select v-model.trim="searchForm.publicFlag" clearable filterable placeholder="可用状态">
  25. <el-option label="个人" value="0"></el-option>
  26. <el-option label="公共" value="1"></el-option>
  27. </el-select>
  28. </el-form-item>
  29. <el-form-item>
  30. <el-button native-type="submit" type="danger">搜索</el-button>
  31. <el-button native-type="reset" type="primary">重置</el-button>
  32. <el-button @click="onExport" type="primary" v-permission="'export/exportSchoolList'">导出</el-button>
  33. </el-form-item>
  34. </save-form>
  35. <el-button @click="openTeaching('create')" v-permission="'school/add'" type="primary" style="margin-bottom: 20px">
  36. 新建
  37. </el-button>
  38. <!-- 列表 -->
  39. <div class="tableWrap">
  40. <el-table :data="tableList" :header-cell-style="{ background: '#EDEEF0', color: '#444' }">
  41. <el-table-column align="center" width="55" prop="id" label="编号">
  42. </el-table-column>
  43. <el-table-column align="center" prop="name" label="教学点名称">
  44. </el-table-column>
  45. <el-table-column align="center" prop="organName" label="所属分部">
  46. </el-table-column>
  47. <el-table-column align="center" label="教学点来源" :formatter="filterOrgan" width="120px">
  48. <!-- <template slot-scope="scope">
  49. {{ scope.row.cooperationOrganId ? scope.row.cooperationOrganId : '租赁' }}
  50. </template> -->
  51. </el-table-column>
  52. <el-table-column align="center" label="可用状态" width="120px">
  53. <template slot-scope="scope">
  54. {{ scope.row.userId ? scope.row.realName : "公共" }}
  55. </template>
  56. </el-table-column>
  57. <el-table-column align="center" width="120px" label="租赁费用">
  58. <template slot-scope="scope">
  59. {{ scope.row.cooperationOrganId ? "免费" : scope.row.remark }}
  60. </template>
  61. </el-table-column>
  62. <el-table-column align="center" label="上课地点详情">
  63. <template slot-scope="scope">
  64. {{ scope.row.address.split(",").join("") }}
  65. </template>
  66. </el-table-column>
  67. <el-table-column align="center" prop="delFlag" label="状态">
  68. <template slot-scope="scope">
  69. {{ scope.row.delFlag == 2 ? "停用" : "启用" }}
  70. </template>
  71. </el-table-column>
  72. <!-- <el-table-column align='center'
  73. label="课酬补贴">
  74. <template slot-scope="scope">
  75. {{ scope.row.subsidy ? scope.row.subsidy : '无' }}
  76. </template>
  77. </el-table-column> -->
  78. <el-table-column align="center" label="操作">
  79. <template slot-scope="scope">
  80. <el-button @click="openTeaching('update', scope.row)" v-if="$helpers.permission('school/update')"
  81. type="text">修改</el-button>
  82. <el-button v-if="scope.row.delFlag == 0 && $helpers.permission('school/update/stop')"
  83. @click="onUpdateSubmit(scope.row, 2)" type="text">停用</el-button>
  84. <el-button v-if="scope.row.delFlag == 2 && $helpers.permission('school/update/open')"
  85. @click="onUpdateSubmit(scope.row, 0)" type="text">启用</el-button>
  86. <el-button @click="onUpdateSubmit(scope.row, 1)" v-if="$helpers.permission('school/update/del')"
  87. type="text">删除</el-button>
  88. </template>
  89. </el-table-column>
  90. </el-table>
  91. <pagination sync :total.sync="pageInfo.total" :page.sync="pageInfo.page" :limit.sync="pageInfo.limit"
  92. :page-sizes="pageInfo.page_size" @pagination="getList" />
  93. </div>
  94. </div>
  95. <emptyPage @submit="openTeaching('create')" title="教学点管理" btnTitle="新建教学点" :context="context" v-if="!(
  96. tableList.length > 0 ||
  97. pageInfo.page > 1 ||
  98. searchForm.search ||
  99. searchForm.organId ||
  100. searchForm.publicFlag
  101. ) && contextFlag
  102. " />
  103. <el-dialog :title="formTitle[formActionTitle]" :visible.sync="teachingStatus" @close="onFormClose('ruleForm')"
  104. width="500px">
  105. <el-form :model="form" :rules="rules" ref="ruleForm">
  106. <el-form-item label="教学点名称" prop="name" :label-width="formLabelWidth">
  107. <el-input v-model.trim="form.name" autocomplete="off"></el-input>
  108. </el-form-item>
  109. <el-form-item label="教学点来源" prop="source" :label-width="formLabelWidth">
  110. <template v-if="formActionTitle == 'update'">
  111. <el-select v-model.trim="form.source" style="width: 100% !important" filterable clearable disabled>
  112. <el-option label="合作单位" value="1"></el-option>
  113. <el-option label="租赁" value="2"></el-option>
  114. </el-select>
  115. </template>
  116. <template v-else>
  117. <el-select v-model.trim="form.source" filterable style="width: 100% !important" clearable>
  118. <el-option label="合作单位" value="1"></el-option>
  119. <el-option label="租赁" value="2"></el-option>
  120. </el-select>
  121. </template>
  122. </el-form-item>
  123. <el-form-item v-if="form.source == 1" prop="cooperationOrganId" label="合作单位" :label-width="formLabelWidth">
  124. <el-select v-model.trim="form.cooperationOrganId" filterable style="width: 100% !important" clearable
  125. @change="onCooperationChange">
  126. <el-option v-for="item in cooperationList" :key="item.value" :label="item.label"
  127. :value="item.value"></el-option>
  128. </el-select>
  129. </el-form-item>
  130. <el-form-item v-if="formActionTitle == 'update'" prop="user" label="可用状态" :label-width="formLabelWidth">
  131. <el-input v-model="form.user" disabled></el-input>
  132. </el-form-item>
  133. <el-form-item v-if="form.source == 2" prop="remark" label="租赁费用" :label-width="formLabelWidth">
  134. <el-input v-model.trim="form.remark" type="number" autocomplete="off"></el-input>
  135. </el-form-item>
  136. <!-- v-if="form.source == 2" -->
  137. <el-form-item prop="organId" label="所属分部" :label-width="formLabelWidth">
  138. <el-select :disabled="form.source != 2" v-model.trim="form.organId" clearable style="width: 100% !important"
  139. filterable>
  140. <el-option v-for="item in selects.branchs" :key="item.id" :label="item.name" :value="item.id"></el-option>
  141. </el-select>
  142. </el-form-item>
  143. <!-- :show-message="addressMessage" -->
  144. <el-form-item prop="address" label="上课地点" :label-width="formLabelWidth">
  145. <el-input class="text-address" v-model.trim="form.address" :disabled="true">
  146. <template slot="append">
  147. <el-button class="addMapBtn" @click="addMap" type="primary" icon="el-icon-plus">选择</el-button>
  148. </template>
  149. </el-input>
  150. </el-form-item>
  151. <!-- <el-form-item
  152. label="课酬补贴"
  153. prop="subsidy"
  154. :label-width="formLabelWidth"
  155. >
  156. <el-input
  157. v-model.trim.number="form.subsidy"
  158. type="number"
  159. autocomplete="off"
  160. ></el-input>
  161. </el-form-item> -->
  162. </el-form>
  163. <span slot="footer" class="dialog-footer">
  164. <el-button @click="onTeachingCancel('ruleForm')">取 消</el-button>
  165. <el-button type="primary" @click="onTeachingSubmit('ruleForm')">确 定</el-button>
  166. </span>
  167. </el-dialog>
  168. <el-dialog :close-on-click-modal="false" title="选择地图" custom-class="map-container" :visible.sync="mapStatus"
  169. width="800px">
  170. <div style="padding: 0 20px">
  171. <el-alert style="margin: 10px 0" title="选中地点:" :closable="false" type="info" :description="addressDetail.address">
  172. </el-alert>
  173. <el-amap-search-box class="search-box" value="searchValue" :search-option="searchOption"
  174. :on-search-result="onSearchResult"></el-amap-search-box>
  175. <el-amap :zoom="zoom" :plugin="plugin" :center="center" :events="events">
  176. <el-amap-marker :events="markerEvents()" v-for="(marker, index) in markers" :key="index"
  177. :position="marker"></el-amap-marker>
  178. </el-amap>
  179. </div>
  180. <span slot="footer" class="dialog-footer">
  181. <el-button @click="mapStatus = false">取 消</el-button>
  182. <el-button type="primary" @click="setAddrss">确 定</el-button>
  183. </span>
  184. </el-dialog>
  185. </div>
  186. </template>
  187. <script>
  188. import pagination from "@/components/Pagination/index";
  189. import { Export } from "@/utils/downLoadFile";
  190. import qs from "qs";
  191. import cleanDeep from "clean-deep";
  192. // 地图
  193. (function () {
  194. let func = EventTarget.prototype.addEventListener;
  195. let supportsPassive = false;
  196. try {
  197. let opts = Object.defineProperty({}, "passive", {
  198. get: function () {
  199. supportsPassive = true;
  200. },
  201. });
  202. document.addEventListener("testPassive", null, opts);
  203. document.removeEventListener("testPassive", null, opts);
  204. } catch (e) { }
  205. EventTarget.prototype.addEventListener = function (type, fn, capture) {
  206. this.func = func;
  207. capture = capture instanceof Object ? capture : {};
  208. capture.passive = supportsPassive;
  209. this.func(type, fn, capture);
  210. };
  211. })();
  212. import {
  213. schoolQueryPage,
  214. schoolAdd,
  215. schoolUpdate,
  216. queryByOrganId,
  217. schoolDel,
  218. } from "@/api/systemManage";
  219. import { getEmployeeOrgan } from "@/api/buildTeam";
  220. import store from "@/store";
  221. import VueAMap from "vue-amap";
  222. // Vue.use(VueAMap)
  223. VueAMap.initAMapApiLoader({
  224. key: "a438ad7e22da32617110771adbe7f68b",
  225. plugin: ["AMap.Geolocation", "AMap.PlaceSearch", "AMap.Geocoder", "Geocoder"],
  226. v: "1.4.4",
  227. });
  228. import emptyPage from "@/components/emptyPage";
  229. export default {
  230. name: "addressManager",
  231. components: { pagination, emptyPage },
  232. data() {
  233. let self = this;
  234. return {
  235. searchForm: {
  236. search: null,
  237. organId: null,
  238. publicFlag: null,
  239. },
  240. searchLsit: [],
  241. tableList: [],
  242. pageInfo: {
  243. // 分页规则
  244. limit: 10, // 限制显示条数
  245. page: 1, // 当前页
  246. total: 0, // 总条数
  247. page_size: [10, 20, 40, 50], // 选择限制显示条数
  248. },
  249. formActionTitle: "create",
  250. formTitle: {
  251. create: "添加教学点",
  252. update: "修改教学点",
  253. },
  254. teachingStatus: false, // 添加教学点
  255. formLabelWidth: "100px",
  256. addressDetail: {},
  257. form: {
  258. name: null, // 教学点名称
  259. source: null, // 来源
  260. cooperationOrganId: null, // 合作单位
  261. remark: null, // 费用
  262. address: null, // 上课地点
  263. subsidy: null, // 课酬补贴
  264. organId: null, // 分部编号
  265. },
  266. selectOrganId: null, // 选中的分部编号
  267. rules: {
  268. name: [{ required: true, message: "请输入教学点名称", trigger: "blur" }],
  269. source: [{ required: true, message: "请选择教学点来源", trigger: "change" }],
  270. remark: [{ required: true, message: "请输入租赁费用", trigger: "blur" }],
  271. address: [{ required: true, message: "请选择上课地点", trigger: "blur" }],
  272. cooperationOrganId: [
  273. { required: true, message: "请选择合作单位", trigger: "change" },
  274. ],
  275. organId: [{ required: true, message: "请选择所属分部", trigger: "change" }],
  276. subsidy: [{ type: "number", message: "课酬补贴只能为数字", trigger: "blur" }],
  277. },
  278. events: {
  279. init(o) { },
  280. zoomchange: (e) => {
  281. // console.log(e);
  282. },
  283. zoomend: (e) => {
  284. //获取当前缩放zoom值
  285. // console.log(this.$refs.map.$$getInstance().getZoom());
  286. // console.log(e);
  287. },
  288. click: (e) => {
  289. this.getpoient(e);
  290. },
  291. },
  292. addressMessage: true,
  293. mapStatus: false,
  294. zoom: 16,
  295. center: [114.34371, 30.55939],
  296. markers: [],
  297. plugin: [],
  298. searchOption: {
  299. city: "",
  300. citylimit: true,
  301. pageSize: 1, // 单页显示结果条数
  302. pageIndex: 1, // 页码
  303. autoFitView: true, // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围
  304. },
  305. cooperationList: [], // 合作单位列表
  306. searchValue: "测试",
  307. activeAddress: {},
  308. context:
  309. "教学点是乐团、VIP课线下课的教学位置,不同分部可创建不同的教学点,线下课排课时需选择教学点,老师需在课程教学点的定位范围内完成考勤。教学点可设置合作单位提供、租赁两种方式。",
  310. contextFlag: false,
  311. };
  312. },
  313. mounted() {
  314. this.getList();
  315. this.getBreachList();
  316. },
  317. methods: {
  318. onTeachingSubmit(formName) {
  319. // 添加数据
  320. this.$refs[formName].validate((valid) => {
  321. if (valid) {
  322. // if(this.form.source == 1) { // 判断是租赁还是合作单位
  323. // this.form.organId = this.selectOrganId
  324. // }
  325. if (this.formActionTitle == "create") {
  326. schoolAdd(this.form).then((res) => {
  327. if (res.code == 200) {
  328. this.$message.success("添加成功");
  329. this.teachingStatus = false;
  330. this.getList();
  331. } else {
  332. this.$message.error(res.msg);
  333. }
  334. });
  335. } else if (this.formActionTitle == "update") {
  336. schoolUpdate(this.form).then((res) => {
  337. if (res.code == 200) {
  338. this.$message.success("修改成功");
  339. this.teachingStatus = false;
  340. this.getList();
  341. } else {
  342. this.$message.error(res.msg);
  343. }
  344. });
  345. }
  346. } else {
  347. return false;
  348. }
  349. });
  350. },
  351. onTeachingCancel(formName) {
  352. this.teachingStatus = false;
  353. this.$refs[formName].clearValidate();
  354. },
  355. addMap() {
  356. //
  357. this.mapStatus = true;
  358. // let poi = this.addressDetail.poi
  359. // let address = this.addressDetail.address
  360. this.addressDetail.address = this.form.address;
  361. this.addressDetail.poi = this.form.longitudeLatitude;
  362. let poi = this.form.longitudeLatitude;
  363. let address = this.form.address;
  364. // 获取经纬度
  365. if (poi) {
  366. this.markers = [];
  367. this.center = [poi.split(",")[0], poi.split(",")[1]];
  368. this.markers.push([poi.split(",")[0], poi.split(",")[1]]);
  369. } else if (address && poi == "") {
  370. let that = this;
  371. //构造地点查询类
  372. let placeSearch = new AMap.PlaceSearch({
  373. pageSize: 1, // 单页显示结果条数
  374. pageIndex: 1, // 页码
  375. });
  376. //关键字查询
  377. placeSearch.search(address, function (status, result) {
  378. if (status === "complete") {
  379. let pois = result.poiList.pois[0];
  380. poi = pois.location.lng + "," + pois.location.lat;
  381. that.center = [pois.location.lng, pois.location.lat];
  382. that.markers.push([pois.location.lng, pois.location.lat]);
  383. }
  384. });
  385. }
  386. },
  387. onCooperationChange(value) {
  388. this.form.organId = null;
  389. this.cooperationList.forEach((item) => {
  390. if (item.value == value) {
  391. // this.selectOrganId = item.organId
  392. this.form.organId = item.organId;
  393. }
  394. });
  395. },
  396. onSearchResult(pois) {
  397. // 搜索出来的Marker
  398. this.markers = []; // 搜索时进行数据重置
  399. let latSum = 0;
  400. let lngSum = 0;
  401. if (pois.length > 0) {
  402. pois.forEach((poi) => {
  403. let { lng, lat } = poi.location;
  404. lngSum += lng;
  405. latSum += lat;
  406. this.markers.push([poi.location.lng, poi.location.lat]);
  407. });
  408. let center = {
  409. lng: lngSum / pois.length,
  410. lat: latSum / pois.length,
  411. };
  412. this.center = [center.lng, center.lat];
  413. }
  414. let geocoder = null;
  415. AMap.plugin(["AMap.Geocoder"], function () {
  416. geocoder = new AMap.Geocoder();
  417. });
  418. let that = this;
  419. geocoder.getAddress(pois[0].location, function (status, result) {
  420. if (status === "complete" && result.regeocode) {
  421. result.regeocode.lnglat = pois[0].location;
  422. let ct = result.regeocode.addressComponent;
  423. that.addressDetail = {
  424. address:
  425. ct.province +
  426. "," +
  427. ct.city +
  428. "," +
  429. ct.district +
  430. "," +
  431. ct.township +
  432. ct.street +
  433. ct.streetNumber,
  434. poi: pois[0].location.lng + "," + pois[0].location.lat,
  435. };
  436. // console.log(that.form.address,that.form.longitudeLatitude)
  437. // that.form.address = result.regeocode.formattedAddress;
  438. // that.mapStatus = false
  439. // that.addressMessage = false
  440. } else {
  441. that.$message.error("请重新选择地址");
  442. }
  443. });
  444. },
  445. getpoient(e) {
  446. // let geocoder = new AMap.Geocoder()
  447. this.onSearchResult([{ location: e.lnglat }]);
  448. },
  449. markerEvents() {
  450. // marker 事件添加
  451. let that = this;
  452. return {
  453. click: (e) => {
  454. this.getpoient(e);
  455. },
  456. };
  457. },
  458. setAddrss() {
  459. this.form.address = this.addressDetail.address;
  460. this.form.longitudeLatitude = this.addressDetail.poi;
  461. this.mapStatus = false;
  462. this.addressMessage = false;
  463. },
  464. getList() {
  465. let searchForm = this.searchForm;
  466. let params = {
  467. search: searchForm.search ? searchForm.search : null,
  468. organId: searchForm.organId ? searchForm.organId : null,
  469. publicFlag: searchForm.publicFlag ? searchForm.publicFlag : null,
  470. rows: this.pageInfo.limit,
  471. page: this.pageInfo.page,
  472. };
  473. schoolQueryPage(params).then((res) => {
  474. if (res.code == 200 && res.data) {
  475. this.contextFlag = true;
  476. this.tableList = res.data.rows;
  477. this.pageInfo.total = res.data.total;
  478. }
  479. });
  480. },
  481. async getBreachList() {
  482. // 获取分部列表
  483. // 获取当前用户分部
  484. await this.$store.dispatch("setBranchs");
  485. let branchIds = [];
  486. this.selects.branchs.forEach((item) => {
  487. branchIds.push(item.id);
  488. });
  489. await queryByOrganId({
  490. organId: branchIds.join(","),
  491. }).then((res) => {
  492. if (res.code == 200) {
  493. // 判断是否有数据
  494. if (!res.data && res.data.length <= 0) return;
  495. res.data.forEach((r) => {
  496. this.cooperationList.push({
  497. value: r.id,
  498. organId: r.organId,
  499. label: r.name,
  500. });
  501. });
  502. }
  503. });
  504. },
  505. openTeaching(type, row) {
  506. // 重置数据
  507. // this.form = {
  508. // id: null,
  509. // name: null, // 教学点名称
  510. // linkman: null, // 来源
  511. // job: null, // 费用
  512. // mobileNo: null, // 合作单位
  513. // }
  514. this.teachingStatus = true;
  515. this.formActionTitle = type;
  516. // this.form.organId = ''
  517. // 修改的时候赋值
  518. if (type == "update") {
  519. // this.addressDetail = {
  520. // address: row.address,
  521. // poi: row.longitudeLatitude,
  522. // };
  523. this.form = {
  524. id: row.id,
  525. name: row.name, // 教学点名称
  526. source: row.cooperationOrganId ? "1" : "2", // 来源
  527. cooperationOrganId: row.cooperationOrganId, // 合作单位
  528. remark: row.remark, // 费用
  529. address: row.address.split(",").join(""), // 上课地点
  530. subsidy: row.subsidy, // 课酬补贴
  531. organId: row.organId,
  532. longitudeLatitude: row.longitudeLatitude,
  533. user: row.realName ? row.realName : "公共",
  534. };
  535. }
  536. },
  537. onFormClose(formName) {
  538. // 关闭弹窗重置验证
  539. // this.$refs[formName].clearValidate()
  540. this.form = {
  541. name: null, // 教学点名称
  542. source: null, // 来源
  543. cooperationOrganId: null, // 合作单位
  544. remark: null, // 费用
  545. address: null, // 上课地点
  546. subsidy: null, // 课酬补贴
  547. };
  548. this.$refs[formName].resetFields();
  549. },
  550. filterOrgan(val) {
  551. let result = "";
  552. if (val.cooperationOrganId) {
  553. this.cooperationList.forEach((res) => {
  554. if (res.value == val.cooperationOrganId) {
  555. result = res.label;
  556. }
  557. });
  558. } else {
  559. result = "租赁";
  560. }
  561. return result;
  562. },
  563. onUpdateSubmit(row, type) {
  564. let msg;
  565. if (type == 2) {
  566. msg = "停用";
  567. } else if (type == 0) {
  568. msg = "启用";
  569. } else {
  570. msg = "删除";
  571. }
  572. this.$confirm(`您确定${msg}吗?`, "提示", {
  573. confirmButtonText: "确定",
  574. cancelButtonText: "取消",
  575. type: "warning",
  576. }).then(() => {
  577. schoolUpdate({
  578. id: row.id,
  579. delFlag: type,
  580. }).then((res) => {
  581. if (res.code == 200) {
  582. this.$message.success("修改成功");
  583. this.teachingStatus = false;
  584. if (type == 2 || type == 0) {
  585. row.delFlag = type;
  586. } else {
  587. this.getList();
  588. }
  589. } else {
  590. this.$message.error(res.msg);
  591. }
  592. });
  593. });
  594. },
  595. search() {
  596. this.pageInfo.page = 1;
  597. this.getList();
  598. },
  599. onReset() {
  600. this.searchForm = {
  601. search: null,
  602. organId: null,
  603. publicFlag: null,
  604. };
  605. this.search();
  606. },
  607. onExport() {
  608. const { ...rest } = this.searchForm;
  609. let searchForm = this.searchForm;
  610. Export(
  611. this,
  612. {
  613. url: "/api-web/export/exportSchoolList",
  614. fileName: "教学点.xls",
  615. method: "post",
  616. params: qs.stringify(
  617. cleanDeep({
  618. search: searchForm.search ? searchForm.search : null,
  619. organId: searchForm.organId ? searchForm.organId : null,
  620. publicFlag: searchForm.publicFlag ? searchForm.publicFlag : null,
  621. rows: this.pageInfo.limit,
  622. page: this.pageInfo.page,
  623. })
  624. ),
  625. },
  626. "您确定导出教学点?"
  627. );
  628. },
  629. },
  630. };
  631. </script>
  632. <style lang="scss">
  633. .el-select {
  634. width: auto !important;
  635. }
  636. .el-vue-amap-container {
  637. width: 100%;
  638. height: 50vh !important;
  639. }
  640. * {
  641. // touch-action: pan-y;
  642. touch-action: none;
  643. }
  644. .map-container {
  645. .el-dialog__body {
  646. padding: 0;
  647. }
  648. }
  649. .addMapBtn {
  650. background-color: var(--color-primary) !important;
  651. color: #fff !important;
  652. }
  653. .el-input-group__append {
  654. background: #f5f7fa;
  655. border-color: #dcdfe6;
  656. color: #909399;
  657. &:hover,
  658. &:active,
  659. &:focus {
  660. background: #f5f7fa;
  661. border-color: #dcdfe6;
  662. color: #909399;
  663. }
  664. }
  665. .el-vue-search-box-container {
  666. position: absolute !important;
  667. left: 30px;
  668. margin-top: 10px;
  669. z-index: 99999 !important;
  670. }
  671. </style>