base.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717
  1. <!-- eslint-disable vue/valid-v-on -->
  2. <template>
  3. <div>
  4. <h3 class="title">
  5. <div>{{ title }}</div>
  6. <div class="title-right">格力商用空调登录表提示:带*的为必填项</div>
  7. </h3>
  8. <el-divider />
  9. <div class="diy-table-1">
  10. <el-row :gutter="0">
  11. <el-col v-if="['cross'].includes(pageType)" :xs="24" :sm="24" :lg="24" class="item">
  12. <div class="label">项目性质*:</div>
  13. <div class="value">
  14. <el-radio-group v-model="formData.orderType" style="width: 100%">
  15. <el-radio
  16. v-for="item in [
  17. { label: '工装', value: 'WORK' },
  18. { label: '家装', value: 'HOME' }
  19. ]"
  20. :key="item.value"
  21. :label="item.value"
  22. >
  23. {{ item.label }}
  24. </el-radio>
  25. </el-radio-group>
  26. </div>
  27. </el-col>
  28. <el-col :xs="24" :sm="12" :lg="12" class="item">
  29. <div class="label">销售公司名称:</div>
  30. <div class="value">
  31. <el-input v-model="formData.salesCompanyName" disabled placeholder="请填写" size="mini" clearable />
  32. </div>
  33. </el-col>
  34. <el-col :xs="24" :sm="12" :lg="12" class="item">
  35. <div class="label">{{ ['cross'].includes(pageType) ? '业务' : '项目' }}所在区域*:</div>
  36. <div class="value">
  37. <el-select v-model="formData.projectArea" placeholder="请选择" clearable filterable>
  38. <el-option
  39. v-for="item in commonData.dict['TRADE_PROJECT_AREA']"
  40. :key="item.value"
  41. :label="item.label"
  42. :value="item.value"
  43. />
  44. </el-select>
  45. </div>
  46. </el-col>
  47. <el-col :xs="24" :sm="12" :lg="12" class="item">
  48. <div class="label">跟进人*:</div>
  49. <div class="value">
  50. <el-select v-model="formData.serviceId" placeholder="请选择" clearable filterable @change="handleService">
  51. <el-option
  52. v-for="item in commonData.salesmanList"
  53. :key="item.value"
  54. :label="item.label"
  55. :value="item.value"
  56. />
  57. </el-select>
  58. </div>
  59. </el-col>
  60. <el-col v-if="['frock', 'cross'].includes(pageType) && formData.orderType === 'WORK'" :xs="24" :sm="12" :lg="12" class="item">
  61. <div class="label">甲方名称*:</div>
  62. <div class="value">
  63. <el-select v-model="formData.partyAId" placeholder="请选择" clearable filterable @change="handlePartyA">
  64. <el-option
  65. v-for="item in commonData.PartyAList"
  66. :key="item.value"
  67. :label="item.label"
  68. :value="item.value"
  69. />
  70. </el-select>
  71. </div>
  72. </el-col>
  73. <el-col v-else :xs="24" :sm="12" :lg="12" class="item">
  74. <div class="label" />
  75. <div class="value" />
  76. </el-col>
  77. <el-col :xs="24" :sm="12" :lg="8" class="item">
  78. <div class="label">经销商*:</div>
  79. <div class="value">
  80. <el-select v-model="formData.customerId" placeholder="请选择" clearable filterable @change="handleCustomer">
  81. <el-option
  82. v-for="item in commonData.customerList"
  83. :key="item.value"
  84. :label="item.label"
  85. :value="item.value"
  86. />
  87. </el-select>
  88. </div>
  89. </el-col>
  90. <el-col :xs="24" :sm="12" :lg="8" class="item">
  91. <div class="label">经销商联系人:</div>
  92. <div class="value">
  93. <el-input v-model="formData.customerLinkName" placeholder="请填写" size="mini" clearable />
  94. </div>
  95. </el-col>
  96. <el-col :xs="24" :sm="12" :lg="8" class="item">
  97. <div class="label">经销商联系电话:</div>
  98. <div class="value">
  99. <el-input v-model="formData.customerLinkMobile" placeholder="请填写" size="mini" clearable />
  100. </div>
  101. </el-col>
  102. <el-col :xs="24" :sm="12" :lg="8" class="item">
  103. <div class="label">经销商办公地址:</div>
  104. <div class="value">
  105. <el-input v-model="formData.customerAddress" placeholder="请填写" size="mini" clearable />
  106. </div>
  107. </el-col>
  108. <el-col :xs="24" :sm="12" :lg="8" class="item">
  109. <div class="label">跟进经销商*:</div>
  110. <div class="value">
  111. <el-input v-model="formData.followCustomer" placeholder="请填写" size="mini" clearable />
  112. </div>
  113. </el-col>
  114. <el-col :xs="24" :sm="12" :lg="8" class="item">
  115. <div class="label">跟进经销商电话*:</div>
  116. <div class="value">
  117. <el-input v-model="formData.followCustomerMobile" placeholder="请填写" size="mini" clearable />
  118. </div>
  119. </el-col>
  120. <el-col
  121. v-if="['frock', 'cross'].includes(pageType) && formData.orderType !== 'HOME'"
  122. :xs="24"
  123. :sm="24"
  124. :lg="8"
  125. class="item"
  126. >
  127. <div class="label">工程项目名称*:</div>
  128. <div class="value">
  129. <el-input v-model="formData.projectName" placeholder="请填写" size="mini" clearable />
  130. </div>
  131. </el-col>
  132. <el-col
  133. :xs="24"
  134. :sm="12"
  135. :lg="['home'].includes(pageType) || formData.orderType === 'HOME' ? 12 : 8"
  136. class="item"
  137. >
  138. <div class="label">工程联系人*:</div>
  139. <div class="value">
  140. <el-input v-model="formData.enginLinkName" placeholder="请填写" size="mini" clearable />
  141. </div>
  142. </el-col>
  143. <el-col
  144. :xs="24"
  145. :sm="12"
  146. :lg="['home'].includes(pageType) || formData.orderType === 'HOME' ? 12 : 8"
  147. class="item"
  148. >
  149. <div class="label">电话*:</div>
  150. <div class="value">
  151. <el-input v-model="formData.enginLinkMobile" placeholder="请填写" size="mini" clearable />
  152. </div>
  153. </el-col>
  154. <el-col
  155. v-if="['home'].includes(pageType) || formData.orderType === 'HOME'"
  156. :xs="24"
  157. :sm="24"
  158. :lg="24"
  159. class="item"
  160. >
  161. <div class="label" style="height: auto">工程项目名称*:</div>
  162. <div class="value my-center" style="height: 100%">
  163. <el-radio-group v-model="formData.homeProjectNameRadio">
  164. <el-radio label="AREA">
  165. <el-input
  166. v-model="formData.homeProjectNameArea"
  167. class="my-width"
  168. placeholder="请填写"
  169. size="mini"
  170. clearable
  171. />小区
  172. <el-input
  173. v-model="formData.homeProjectNameSeat"
  174. class="my-width"
  175. placeholder="请填写"
  176. size="mini"
  177. clearable
  178. />座
  179. <el-input
  180. v-model="formData.homeProjectNameNumber"
  181. class="my-width"
  182. placeholder="请填写"
  183. size="mini"
  184. clearable
  185. />号
  186. </el-radio>
  187. <el-radio label="SELF">
  188. <el-input
  189. v-model="formData.homeProjectNameArea2"
  190. class="my-width"
  191. placeholder="请填写"
  192. size="mini"
  193. clearable
  194. />(业主名称)自建房
  195. </el-radio>
  196. <el-radio label="VILLA">
  197. <el-input
  198. v-model="formData.homeProjectNameArea3"
  199. class="my-width"
  200. placeholder="请填写"
  201. size="mini"
  202. clearable
  203. />小区
  204. <el-input
  205. v-model="formData.homeProjectNameNumber3"
  206. class="my-width"
  207. placeholder="请填写"
  208. size="mini"
  209. clearable
  210. />号别墅
  211. </el-radio>
  212. </el-radio-group>
  213. </div>
  214. </el-col>
  215. <el-col :xs="24" :sm="24" :lg="24" class="item">
  216. <div class="label">工程(建筑)地址*:</div>
  217. <div class="value">
  218. <el-select v-model="formData.provinceId" placeholder="请选择省" class="my-width" @change="changeProvince">
  219. <el-option v-for="item in provinceList" :key="item.id" :label="item.name" :value="item.id" />
  220. </el-select>
  221. <el-select v-model="formData.cityId" placeholder="请选择市" class="my-width" @change="changeCity">
  222. <el-option v-for="item in cityList" :key="item.id" :label="item.name" :value="item.id" />
  223. </el-select>
  224. <el-select v-model="formData.areaId" placeholder="请选择区" class="my-width" @change="changeArea">
  225. <el-option v-for="item in areaList" :key="item.id" :label="item.name" :value="item.id" />
  226. </el-select>
  227. <el-select v-model="formData.streetId" placeholder="请选择街道" class="my-width" @change="changeStreet">
  228. <el-option v-for="item in streetList" :key="item.id" :label="item.name" :value="item.id" />
  229. </el-select>
  230. </div>
  231. </el-col>
  232. <el-col :xs="24" :sm="24" :lg="24" class="item">
  233. <div class="label">详细地址*:</div>
  234. <div class="value">
  235. <el-input v-model="formData.address" placeholder="请填写" size="mini" clearable />
  236. <geographicalPosi v-if="module !== 'detail'" :form-data="formData" @selectPosi="handleSelectPosi" />
  237. </div>
  238. </el-col>
  239. <template v-if="isTradeExaminer">
  240. <el-col v-if="module !== 'add'" :xs="24" :sm="24" :lg="24" class="item" style="height: 400px">
  241. <div class="label" style="height: auto">地图位置</div>
  242. <div class="value" style="height: auto; padding: 0">
  243. <zj-amap-polygon
  244. eid="bMap"
  245. :zoom="zoom"
  246. :center="center"
  247. :markers="markers"
  248. :electronic-fence="electronicFence"
  249. @getPolygons="getPolygons"
  250. />
  251. </div>
  252. </el-col>
  253. </template>
  254. <el-col :xs="24" :sm="24" :lg="24" class="item">
  255. <div class="label">项目类别*:</div>
  256. <div class="value">
  257. <el-radio-group v-model="formData.projectCategory">
  258. <el-radio v-for="item in commonData.dict['TRADE_LOGIN_CATEGORY']" :key="item.value" :label="item.value">
  259. {{ item.label }}
  260. </el-radio>
  261. </el-radio-group>
  262. </div>
  263. </el-col>
  264. <el-col :xs="24" :sm="12" :lg="12" class="item">
  265. <div class="label">图纸上传:</div>
  266. <div class="value" style="justify-content: flex-end">
  267. <FileUpload :file-list="formData.fileList" size="mini" :limit="1" class="file" />
  268. <!-- <el-input v-model="formData.drawUpload" size="mini" clearable /> -->
  269. </div>
  270. </el-col>
  271. <el-col :xs="24" :sm="12" :lg="12" class="item">
  272. <div class="label">类型</div>
  273. <div class="value">
  274. <el-radio-group v-model="formData.type">
  275. <el-radio v-for="item in commonData.dict['TRADE_LOGIN_TYPE']" :key="item.value" :label="item.value">
  276. {{ item.label }}
  277. </el-radio>
  278. </el-radio-group>
  279. </div>
  280. </el-col>
  281. <el-col :xs="24" :sm="12" :lg="12" class="item">
  282. <div class="label">建筑面积㎡*:</div>
  283. <div class="value">
  284. <el-input v-model="formData.extent" placeholder="请填写" size="mini" clearable />
  285. </div>
  286. </el-col>
  287. <el-col :xs="24" :sm="12" :lg="12" class="item">
  288. <div class="label">空调使用面积㎡*:</div>
  289. <div class="value">
  290. <el-input v-model="formData.useExtent" placeholder="请填写" size="mini" clearable />
  291. </div>
  292. </el-col>
  293. <el-col :xs="24" :sm="12" :lg="12" class="item">
  294. <div class="label">项目所在行业分类*:</div>
  295. <div class="value">
  296. <el-select
  297. v-model="formData.tradeParentId"
  298. placeholder="请选择"
  299. clearable
  300. filterable
  301. @change="handleTradeParent"
  302. >
  303. <el-option v-for="item in tradeParentList" :key="item.id" :label="item.name" :value="item.id" />
  304. </el-select>
  305. </div>
  306. </el-col>
  307. <el-col :xs="24" :sm="12" :lg="12" class="item">
  308. <div class="label">行业细分*:</div>
  309. <div class="value">
  310. <el-select v-model="formData.tradeId" placeholder="请选择" clearable filterable @change="handleTrade">
  311. <el-option v-for="item in tradeList" :key="item.id" :label="item.name" :value="item.id" />
  312. </el-select>
  313. </div>
  314. </el-col>
  315. <el-col v-if="['frock', 'cross'].includes(pageType)" :xs="24" :sm="24" :lg="24" class="item">
  316. <div class="label">项目性质*:</div>
  317. <div class="value">
  318. {{ pageType === 'frock' ? '工程': '家装' }}
  319. </div>
  320. </el-col>
  321. <el-col :xs="24" :sm="24" :lg="24" class="item">
  322. <div class="label">机组类型*:</div>
  323. <div class="value">
  324. <el-select v-model="formData.machineType" placeholder="请选择" clearable filterable>
  325. <el-option
  326. v-for="item in commonData.dict['MACHINE_TYPE']"
  327. :key="item.value"
  328. :label="item.label"
  329. :value="item.value"
  330. />
  331. </el-select>
  332. </div>
  333. </el-col>
  334. <el-col :xs="24" :sm="24" :lg="24" class="item">
  335. <div class="label">成功机率*:</div>
  336. <div class="value">
  337. <el-radio-group v-model="formData.successRate">
  338. <el-radio v-for="item in commonData.dict['SUCCESS_RATE']" :key="item.value" :label="item.value">
  339. {{ item.label }}
  340. </el-radio>
  341. </el-radio-group>
  342. </div>
  343. </el-col>
  344. <el-col :xs="24" :sm="12" :lg="12" class="item">
  345. <div class="label">预计签定合同日期*:</div>
  346. <div class="value">
  347. <el-date-picker
  348. v-model="formData.preSignDate"
  349. class="date"
  350. value-format="yyyy-MM-dd HH:mm:ss"
  351. default-time="00:00:00"
  352. style="width: 100%"
  353. placeholder="选择日期"
  354. />
  355. </div>
  356. </el-col>
  357. <el-col :xs="24" :sm="12" :lg="12" class="item">
  358. <div class="label">预计设备金额*:</div>
  359. <div class="value">
  360. <el-input v-model="formData.preDeviceAmount" placeholder="请填写" size="mini" clearable />万
  361. </div>
  362. </el-col>
  363. <el-col :xs="24" :sm="24" :lg="24" class="item">
  364. <div class="label">工程跟进状态*:</div>
  365. <div class="value">
  366. <el-radio-group v-model="formData.status">
  367. <el-radio v-for="item in commonData.dict['FOLLOW_STATUS']" :key="item.value" :label="item.value">
  368. {{ item.label }}
  369. </el-radio>
  370. </el-radio-group>
  371. </div>
  372. </el-col>
  373. <el-col :xs="24" :sm="24" :lg="24" class="item">
  374. <div class="label" style="height: auto">备注:</div>
  375. <div class="value" style="height: 100%">
  376. <el-input
  377. v-model="formData.remark"
  378. style="margin: 5px 0"
  379. type="textarea"
  380. :rows="4"
  381. placeholder="请输入备注"
  382. />
  383. </div>
  384. </el-col>
  385. <el-col :xs="24" :sm="24" :lg="24" class="item">
  386. <div class="label" style="height: auto">工程概况及此工程相关的社会关系以及其他相关信息:</div>
  387. <div class="value" style="height: 100%">
  388. <el-input
  389. v-model="formData.otherInfo"
  390. style="margin: 5px 0"
  391. type="textarea"
  392. :rows="3"
  393. placeholder="请输入内容"
  394. />
  395. </div>
  396. </el-col>
  397. </el-row>
  398. </div>
  399. </div>
  400. </template>
  401. <script>
  402. import { findElem } from '@/utils/util'
  403. import { getRegion } from '@/api/sales'
  404. import { getTradeConfigList } from '@/api/basic_data/sectorAllocation'
  405. import GeographicalPosi from './geographicalPosi.vue'
  406. import FileUpload from '@/components/Common/file-upload.vue'
  407. import { mapGetters } from 'vuex'
  408. export default {
  409. components: {
  410. FileUpload,
  411. GeographicalPosi
  412. },
  413. props: {
  414. // 标题
  415. title: {
  416. type: String,
  417. default: '登录信息'
  418. },
  419. // 数据源
  420. formData: {
  421. type: Object,
  422. default: () => ({})
  423. },
  424. // 页面类型
  425. pageType: {
  426. type: String,
  427. default: 'frock'
  428. },
  429. // 功能类型
  430. module: {
  431. type: String,
  432. default: 'add'
  433. },
  434. commonData: {
  435. type: Object,
  436. default: () => {}
  437. }
  438. },
  439. data() {
  440. return {
  441. fileList: [],
  442. // 地图缩放比例
  443. zoom: 16,
  444. // 地图默认中心
  445. center: [113.36242, 23.1368425],
  446. markers: [],
  447. // 是否启用电子围栏
  448. electronicFence: false,
  449. provinceList: [],
  450. cityList: [],
  451. areaList: [],
  452. streetList: [],
  453. tradeParentList: [],
  454. tradeList: []
  455. }
  456. },
  457. computed: {
  458. ...mapGetters(['isTradeExaminer'])
  459. },
  460. watch: {
  461. async 'formData.id'(newValue, oldValue) {
  462. if (newValue) {
  463. if (this.commonData.vicinityMarkers.length) {
  464. this.markers = this.commonData.vicinityMarkers.map(k => {
  465. return {
  466. id: '',
  467. name: k.projectName,
  468. center: [k.lnt, k.lat]
  469. }
  470. })
  471. }
  472. this.getTradeConfigList(this.formData.tradeParentId)
  473. await this.getCallbackPosition(0, this.formData.provinceId, 'province', 'id')
  474. await this.getCallbackPosition(this.formData.provinceId, this.formData.cityId, 'city', 'id')
  475. await this.getCallbackPosition(this.formData.cityId, this.formData.areaId, 'area', 'id')
  476. await this.getCallbackPosition(this.formData.areaId, this.formData.streetId, 'street', 'id')
  477. }
  478. }
  479. },
  480. created() {
  481. this.getTradeConfigList()
  482. if (this.module === 'add') {
  483. this.getRegion()
  484. }
  485. },
  486. methods: {
  487. // 获取省市区街道
  488. getRegion(level = 0, id = 0) {
  489. getRegion({ pid: id }).then(res => {
  490. if (level === 0) {
  491. this.provinceList = res.data
  492. this.getPosition(res.data, 'provinceId', 'province')
  493. } else if (level === 1) {
  494. this.cityList = res.data
  495. this.getPosition(res.data, 'cityId', 'city')
  496. } else if (level === 2) {
  497. this.areaList = res.data
  498. } else if (level === 3) {
  499. this.streetList = res.data
  500. }
  501. })
  502. },
  503. getPosition(data, id, name) {
  504. if (this.module === 'add') {
  505. const item = data.find(k => k.name === this.$IpAdd[name])
  506. this.formData[id] = item.id
  507. this.formData[name] = item.name
  508. if (name === 'province') {
  509. this.getRegion(1, item.id)
  510. } else {
  511. this.getRegion(2, item.id)
  512. }
  513. }
  514. },
  515. handleArea(value, type) {
  516. this.formData[type] = this[type + 'List'].find(k => k.id === value).name
  517. },
  518. // 切换省
  519. changeProvince(value) {
  520. this.formData.cityId = ''
  521. this.formData.areaId = ''
  522. this.formData.streetId = ''
  523. this.cityList = []
  524. this.areaList = []
  525. this.streetList = []
  526. this.getRegion(1, value)
  527. this.handleArea(value, 'province')
  528. },
  529. // 切换市
  530. changeCity(value) {
  531. this.formData.areaId = ''
  532. this.formData.streetId = ''
  533. this.areaList = []
  534. this.streetList = []
  535. this.getRegion(2, value)
  536. this.handleArea(value, 'city')
  537. },
  538. // 切换区
  539. changeArea(value) {
  540. this.areaValue = value
  541. this.formData.streetId = ''
  542. this.streetList = []
  543. this.getRegion(3, value)
  544. this.handleArea(value, 'area')
  545. },
  546. // 切换街道
  547. changeStreet(value) {
  548. this.getRegion(3, this.areaValue)
  549. this.handleArea(value, 'street')
  550. },
  551. // 初始化省市区街道
  552. initRegion(level, item, id = 0) {
  553. const { province, city, area, street } = item
  554. let nextId = null
  555. getRegion({ pid: id }).then(res => {
  556. if (level === 0) {
  557. this.provinceList = res.data
  558. nextId = this.formData.provinceId = this.provinceList[findElem(this.provinceList, 'name', province)].id
  559. } else if (level === 1) {
  560. this.cityList = res.data
  561. nextId = this.formData.cityId = this.cityList[findElem(this.cityList, 'name', city)].id
  562. } else if (level === 2) {
  563. this.areaList = res.data
  564. nextId = this.formData.areaId = this.areaList[findElem(this.areaList, 'name', area)].id
  565. } else if (level === 3) {
  566. this.streetList = res.data
  567. nextId = this.formData.streetId = this.streetList[findElem(this.streetList, 'name', street)].id
  568. }
  569. if (level < 3) {
  570. level = level + 1
  571. this.initRegion(level, item, nextId)
  572. }
  573. })
  574. },
  575. handleTradeParent(e) {
  576. if (e) {
  577. const item = this.tradeParentList.find(k => k.id === e)
  578. this.formData.tradeParentName = item.name
  579. this.getTradeConfigList(e)
  580. return
  581. }
  582. this.formData.tradeId = ''
  583. },
  584. handleTrade(e) {
  585. if (e) {
  586. const item = this.tradeList.find(k => k.id === e)
  587. this.formData.tradeName = item.name
  588. } else {
  589. this.formData.tradeId = ''
  590. this.formData.tradeName = ''
  591. }
  592. },
  593. getTradeConfigList(parentId = '') {
  594. getTradeConfigList({
  595. pageNum: 1,
  596. pageSize: -1,
  597. parentId: parentId
  598. }).then(res => {
  599. if (parentId) {
  600. this.tradeList = res.data.records
  601. return
  602. }
  603. this.tradeParentList = res.data.records
  604. })
  605. },
  606. handleService(e) {
  607. if (e) {
  608. const item = this.commonData.salesmanList.find(k => k.value === e)
  609. this.formData.serviceName = item.label
  610. } else {
  611. this.formData.serviceName = ''
  612. }
  613. },
  614. handlePartyA(e) {
  615. if (e) {
  616. const item = this.commonData.PartyAList.find(k => k.value === e)
  617. this.formData.partyA = item.label
  618. } else {
  619. this.formData.partyA = ''
  620. }
  621. },
  622. handleCustomer(e) {
  623. if (e) {
  624. const item = this.commonData.customerList.find(k => k.value === e)
  625. this.formData.customerName = item.label
  626. this.formData.customerNumber = item.number
  627. } else {
  628. this.formData.customerName = ''
  629. this.formData.customerNumber = ''
  630. }
  631. },
  632. onSbumit() {},
  633. getPolygons(data) {
  634. console.log(data)
  635. },
  636. async handleSelectPosi(data) {
  637. this.formData.lnt = data.center[0]
  638. this.formData.lat = data.center[1]
  639. this.formData.positionAddress = data.name
  640. this.formData.address = data.name
  641. var { province, city, district, township } = data.data.addressComponent
  642. const area = district
  643. const street = township
  644. await this.getCallbackPosition(0, province, 'province')
  645. await this.getCallbackPosition(this.formData.provinceId, city, 'city')
  646. await this.getCallbackPosition(this.formData.cityId, area, 'area')
  647. await this.getCallbackPosition(this.formData.areaId, street, 'street')
  648. },
  649. /**
  650. * @param {*} id // 父级id
  651. * @param {*} value // 值
  652. * @param {*} name // 字段名称
  653. * @param {*} way // 筛选属性,默认name
  654. */
  655. async getCallbackPosition(id = 0, value = '', name, way = 'name') {
  656. const { data } = await getRegion({ pid: id })
  657. this[name + 'List'] = data
  658. const temp = data.find(k => k[way] == value)
  659. this.formData[name] = temp && temp.name
  660. this.formData[name + 'Id'] = temp && temp.id
  661. }
  662. }
  663. }
  664. </script>
  665. <style lang="scss" scoped>
  666. .diy-table-1 .item .label {
  667. width: 180px;
  668. padding: 10px;
  669. }
  670. ::v-deep .el-select {
  671. width: 100% !important;
  672. }
  673. ::v-deep .date .el-input__icon,
  674. ::v-deep .date .el-input__prefix {
  675. right: 50px !important;
  676. left: auto;
  677. }
  678. ::v-deep .el-textarea__inner {
  679. padding: 0;
  680. border: none;
  681. }
  682. ::v-deep .file:first-child > div {
  683. display: flex !important;
  684. align-items: center;
  685. flex-direction: row-reverse;
  686. }
  687. ::v-deep .file .is-success {
  688. margin-top: 0;
  689. }
  690. .my-width {
  691. width: 150px;
  692. }
  693. .title {
  694. display: flex;
  695. justify-content: space-between;
  696. .title-right {
  697. font-size: 16px;
  698. font-weight: 300;
  699. }
  700. }
  701. ::v-deep .my-center{
  702. input{
  703. text-align: center !important;
  704. }
  705. }
  706. ::v-deep .el-upload-list__item-name{
  707. width: 200px !important;
  708. }
  709. </style>