setting.blade.php 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883
  1. @extends('layouts.base')
  2. @section('title', '基础设置')
  3. @section('content')
  4. <script src="https://webapi.amap.com/maps?v=1.4.15&key={!!$a_map_key!!}&plugin=AMap.PolyEditor"></script>
  5. {{-- <link rel="stylesheet" type="text/css" href="{{static_url('yunshop/goods/vue-goods1.css?time='.time())}}"/>--}}
  6. {{-- <link rel="stylesheet" type="text/css" href="{{static_url('yunshop/goods/vue-ohter.css?time='.time())}}"/>--}}
  7. <link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css"/>
  8. <style>
  9. .el-checkbox-group {
  10. position: relative;
  11. z-index: 0;
  12. }
  13. .el-checkbox {
  14. margin-top: 10px !important;
  15. }
  16. body {
  17. font-family: arial, 'Hiragino Sans GB', 'Microsoft Yahei', '微软雅黑', '宋体', \5b8b\4f53, Tahoma, Arial, Helvetica, STHeiti
  18. }
  19. #container {
  20. width: 100%;
  21. height: 500px;
  22. }
  23. .rightlist #app .el-breadcrumb {
  24. padding: 30px 0;
  25. font-size: 16px;
  26. }
  27. .el-breadcrumb__inner a {
  28. font-weight: 500;
  29. }
  30. .rightlist #app {
  31. margin-left: 30px;
  32. }
  33. .el-form-item__label {
  34. padding-right: 30px;
  35. }
  36. .el-button {
  37. margin-right: 30px;
  38. }
  39. /* 滑块选择小白点 */
  40. .el-switch.is-checked .el-switch__core::after {
  41. left: 100%;
  42. margin-left: -17px;
  43. }
  44. .el-switch__core::after {
  45. content: "";
  46. position: absolute;
  47. top: 1px;
  48. left: 1px;
  49. border-radius: 100%;
  50. transition: all .3s;
  51. width: 16px;
  52. height: 16px;
  53. background-color: #fff;
  54. }
  55. /* 上传图片 */
  56. .avatar-uploader .el-upload {
  57. margin-top: 15px;
  58. border: 1px dashed #d9d9d9;
  59. border-radius: 6px;
  60. cursor: pointer;
  61. position: relative;
  62. overflow: hidden;
  63. }
  64. .avatar-uploader .el-upload:hover {
  65. border-color: #409EFF;
  66. }
  67. .avatar-uploader-icon {
  68. font-size: 28px;
  69. color: #8c939d;
  70. width: 178px;
  71. height: 178px;
  72. line-height: 178px;
  73. text-align: center;
  74. }
  75. .avatar {
  76. width: 178px;
  77. height: 178px;
  78. display: block;
  79. }
  80. .el-upload-tip {
  81. width: 178px;
  82. margin: 0;
  83. padding: 0;
  84. color: #999;
  85. text-align: center;
  86. }
  87. input[type=file] {
  88. display: none;
  89. }
  90. .avatar-uploader-box {
  91. position: relative;
  92. width: 200px;
  93. }
  94. .el-icon-circle-close {
  95. position: absolute;
  96. top: 10px;
  97. right: 0;
  98. color: #999;
  99. }
  100. .tip {
  101. color: #999;
  102. font-size: 12px;
  103. }
  104. .input-card {
  105. display: flex;
  106. flex-direction: column;
  107. min-width: 0;
  108. word-wrap: break-word;
  109. background-color: #fff;
  110. background-clip: border-box;
  111. border-radius: .25rem;
  112. width: 22rem;
  113. border-width: 0;
  114. border-radius: 0.4rem;
  115. box-shadow: 0 2px 6px 0 rgba(114, 124, 245, .5);
  116. position: fixed;
  117. bottom: 1rem;
  118. right: 1rem;
  119. -ms-flex: 1 1 auto;
  120. flex: 1 1 auto;
  121. padding: 0.75rem 1.25rem;
  122. }
  123. .amap-marker .amap-icon img[src="//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png"] {
  124. width: 25px;
  125. height: 34px;
  126. }
  127. </style>
  128. <div id='re_content' class="rightlist">
  129. <div class="con">
  130. <el-form ref="form" label-width="15%">
  131. <div class="vue-head">
  132. <div class="vue-main-title">
  133. <div class="title" style="margin-top: 20px;">
  134. <span style="width: 4px;height: 18px;background-color: #29ba9c;margin-right:15px;display:inline-block;"></span>
  135. <b>[[plugin_name]]</b>
  136. </div>
  137. </div>
  138. <div class="vue-main-form">
  139. <el-form-item label="应用名">
  140. <el-input size="medium" v-model="form.plugin_name"
  141. style="width:50%;"></el-input>
  142. </el-form-item>
  143. </div>
  144. <div class="vue-main-form">
  145. <el-form-item label="开启插件">
  146. <el-switch
  147. :active-value="1"
  148. :inactive-value="0"
  149. v-model="form.open_state"
  150. active-color="#13ce66"
  151. inactive-color="#808080"
  152. >
  153. </el-switch>
  154. </el-form-item>
  155. </div>
  156. <div class="vue-main-form">
  157. <el-form-item label="第三方配送">
  158. <el-switch
  159. :active-value="1"
  160. :inactive-value="0"
  161. v-model="form.another_delivery_state"
  162. active-color="#13ce66"
  163. inactive-color="#808080"
  164. >
  165. </el-switch>
  166. </el-form-item>
  167. </div>
  168. <template v-if="form.another_delivery_state==1">
  169. <div class="vue-main-form">
  170. <el-form-item label="自动创建第三方订单">
  171. <el-switch
  172. :active-value="1"
  173. :inactive-value="0"
  174. v-model="form.auto_push"
  175. active-color="#13ce66"
  176. inactive-color="#808080"
  177. >
  178. </el-switch>
  179. </el-form-item>
  180. </div>
  181. <div class="vue-main-form">
  182. <el-form-item label="配送方式">
  183. <el-radio-group v-model="form.delivery_type">
  184. <el-radio :label="1">顺丰同城</el-radio>
  185. </el-radio-group>
  186. </el-form-item>
  187. </div>
  188. <div class="vue-main-form" v-if="form.delivery_type==1">
  189. <el-form-item label="开发者账号">
  190. <el-input size="medium" style="width: 50%" v-model="form.sf_key"></el-input>
  191. </el-form-item>
  192. <el-form-item label="开发者秘钥">
  193. <el-input size="medium" style="width: 50%" v-model="form.sf_secret"></el-input>
  194. </el-form-item>
  195. <el-form-item label="店铺ID">
  196. <el-input size="medium" style="width: 50%" v-model="form.sf_store_id"></el-input>
  197. </el-form-item>
  198. <el-form-item label="顺丰同城回调地址">
  199. <el-input size="medium" style="width: 50%" v-model="sf_callback_url"
  200. disabled="true"></el-input>
  201. <el-button size="medium" type="primary" @click="copyUrl(sf_callback_url)">复制</el-button>
  202. </el-form-item>
  203. </div>
  204. </template>
  205. </div>
  206. <div class="vue-head">
  207. <div class="vue-main-title">
  208. <div class="title" style="margin-top: 20px">
  209. <span style="width: 4px;height: 18px;background-color: #29ba9c;margin-right:15px;display:inline-block;"></span>
  210. <b>预约配送</b>
  211. </div>
  212. </div>
  213. <div class="vue-main-form">
  214. <el-form-item label="预约配送">
  215. <el-switch
  216. :active-value="1"
  217. :inactive-value="0"
  218. v-model="form.future_state"
  219. active-color="#13ce66"
  220. inactive-color="#808080"
  221. >
  222. </el-switch>
  223. </el-form-item>
  224. </div>
  225. <template v-if="form.future_state==1">
  226. <div class="vue-main-form">
  227. <el-form-item label="配送时段">
  228. <el-radio-group v-model="form.time_type">
  229. <el-radio :label="0">全天</el-radio>
  230. <el-radio :label="1">自定义</el-radio>
  231. </el-radio-group>
  232. </el-form-item>
  233. </div>
  234. <div class="vue-main-form">
  235. <el-form-item label="配送时段" v-if="form.time_type==1">
  236. <el-button size="medium" @click="addFutureWeekArr()">添加星期</el-button>
  237. <template v-for="(v,k) in form.time_arr">
  238. <el-row>
  239. <el-col :span="10">
  240. <el-checkbox-group @change="futureWeekChange()" v-model="v.week_day">
  241. <el-checkbox :disabled="futureWeekDisabled(k,1)" :label=1>周一
  242. </el-checkbox>
  243. <el-checkbox :disabled="futureWeekDisabled(k,2)" :label=2>周二
  244. </el-checkbox>
  245. <el-checkbox :disabled="futureWeekDisabled(k,3)" :label=3>周三
  246. </el-checkbox>
  247. <el-checkbox :disabled="futureWeekDisabled(k,4)" :label=4>周四
  248. </el-checkbox>
  249. <el-checkbox :disabled="futureWeekDisabled(k,5)" :label=5>周五
  250. </el-checkbox>
  251. <el-checkbox :disabled="futureWeekDisabled(k,6)" :label=6>周六
  252. </el-checkbox>
  253. <el-checkbox :disabled="futureWeekDisabled(k,7)" :label=7>周日
  254. </el-checkbox>
  255. </el-checkbox-group>
  256. </el-col>
  257. <el-col :span="6">
  258. <el-button-group style="align:left">
  259. <el-button size="medium" @click="addFutureTimeArr(k)">添加时间段</el-button>
  260. <el-button size="medium" type="danger" @click="deleteFutureWeekArr(k)">
  261. 删除星期
  262. </el-button>
  263. </el-button-group>
  264. </el-col>
  265. {{-- <el-col :span="2">--}}
  266. {{-- <el-button size="medium" type="danger" @click="deleteFutureWeekArr(k)">删除星期--}}
  267. {{-- </el-button>--}}
  268. {{-- <el-button size="medium" @click="addFutureTimeArr(k)">添加时间段</el-button>--}}
  269. {{-- </el-col>--}}
  270. </el-row>
  271. <template v-for="(vv,kk) in v.time_arr">
  272. <el-select size="medium" v-model="vv.start_time">
  273. <el-option
  274. v-for="item in start_time_arr"
  275. :label="item.label"
  276. :value="item.value"
  277. ></el-option>
  278. </el-select>
  279. <el-select size="medium" v-model="vv.end_time">
  280. <el-option
  281. v-for="item in end_time_arr"
  282. :label="item.label"
  283. :value="item.value"
  284. ></el-option>
  285. </el-select>
  286. <el-button size="medium" type="danger" @click="deleteFutureTimeArr(k,kk)">删除
  287. </el-button>
  288. <p></p>
  289. </template>
  290. </template>
  291. </el-form-item>
  292. <el-form-item label="细分时段">
  293. <el-radio-group v-model="form.time_divide">
  294. <el-radio :label="1">天</el-radio>
  295. <el-radio :label="2">小时</el-radio>
  296. <el-radio :label="3">30分钟</el-radio>
  297. <el-radio :label="4">15分钟</el-radio>
  298. </el-radio-group>
  299. </el-form-item>
  300. <el-form-item label="预约下单">
  301. <el-row>
  302. <el-col :span="5">
  303. <el-input size="medium" v-model="form.before_time"></el-input>
  304. </el-col>
  305. <el-col :span="4">
  306. <el-select size="medium" v-model="form.before_time_type">
  307. <el-option :label="'天'" :value=1></el-option>
  308. <el-option :label="'小时'" :value=2></el-option>
  309. <el-option :label="'分钟'" :value=3></el-option>
  310. </el-select>
  311. </el-col>
  312. </el-row>
  313. <div class="tip">填0时为无需提前</div>
  314. <div class="tip">按天时为自然天,不论当前几点,只能下明天以后的订单</div>
  315. </el-form-item>
  316. <el-form-item label="最长预约">
  317. <el-row>
  318. <el-col :span="5">
  319. <el-input size="medium" v-model="form.max_day">
  320. <template slot="prepend">可预约</template>
  321. <template slot="append">天内下单</template>
  322. </el-input>
  323. </el-col>
  324. </el-row>
  325. <div class="tip">当天数小于等于1时,只能当天下单</div>
  326. <div class="tip">如:可预约7天内订单,即今天与未来6天的送达时间可让买家选择</div>
  327. </el-form-item>
  328. <el-form-item label="下单时默认选择">
  329. <el-radio-group v-model="form.default_choose">
  330. <el-radio :label="0">不选择</el-radio>
  331. <el-radio :label="1">选择最近时段</el-radio>
  332. </el-radio-group>
  333. </el-form-item>
  334. </div>
  335. </template>
  336. </div>
  337. <div class="vue-head">
  338. <div class="vue-main-title">
  339. <div class="title" style="margin-top: 20px">
  340. <span style="width: 4px;height: 18px;background-color: #29ba9c;margin-right:15px;display:inline-block;"></span>
  341. <b>配送区域</b>
  342. </div>
  343. </div>
  344. <div class="vue-main-form">
  345. <el-form-item label="店铺地址">
  346. <el-input size="medium" style="width: 50%" :disabled="true"
  347. v-model="form.store_address"></el-input>
  348. <a href="{{yzWebFullUrl("setting.shop.contact")}}" target="_blank" style="margin-left:15px">修改地址</a>
  349. </el-form-item>
  350. <el-form-item label="配送区域">
  351. <el-radio-group v-model="form.distance_type" @change="showMapDiv()">
  352. <el-radio :label="1">按距离</el-radio>
  353. <el-radio :label="2">行政区域</el-radio>
  354. <el-radio :label="3">社区</el-radio>
  355. </el-radio-group>
  356. </el-form-item>
  357. <el-form-item label="起送金额">
  358. <el-input size="medium" style="width: 50%" v-model="form.min_amount">
  359. <template slot="append">元</template>
  360. </el-input>
  361. </el-form-item>
  362. <template v-if="form.distance_type!=3">
  363. <el-form-item label="距离加价">
  364. <div class="tip">
  365. <el-button @click="addDistance()">添加距离范围</el-button>
  366. 根据用户下单定位地址经纬度+商家地址经纬度,请求高德计算骑行距离,如留空则不计算距离加价,高德请求次数存在每日限制,请根据实际情况申请配额
  367. </div>
  368. <p></p>
  369. <template v-for="(v,k) in form.distance_setting">
  370. <el-input size="medium" style="width: 30%" v-model="v.unit">
  371. <template slot="append" v-if="v.level==1">公里内</template>
  372. <template slot="prepend" v-if="v.level!=1">范围</template>
  373. <template slot="append" v-if="v.level!=1">公里</template>
  374. </el-input>
  375. <el-input size="medium" style="width: 30%" v-model="v.amount">
  376. <template slot="prepend" v-if="v.level==1">起步价</template>
  377. <template slot="prepend" v-if="v.level!=1">每公里加价</template>
  378. <template slot="append">元</template>
  379. </el-input>
  380. <el-button size="medium" type="danger" @click="deleteDistance(k)">删除</el-button>
  381. <p></p>
  382. </template>
  383. </el-form-item>
  384. <el-form-item label="重量加价">
  385. <div class="tip">
  386. <el-button size="medium" @click="addWeight()">添加重量范围</el-button>
  387. 取商品设置的重量计算,如留空则不计算重量加价
  388. </div>
  389. <p></p>
  390. <template v-for="(v,k) in form.weight_setting">
  391. <el-input size="medium" style="width: 30%" v-model="v.unit">
  392. <template slot="append" v-if="v.level==1">KG内</template>
  393. <template slot="prepend" v-if="v.level!=1">范围</template>
  394. <template slot="append" v-if="v.level!=1">KG</template>
  395. </el-input>
  396. <el-input size="medium" style="width: 30%" v-model="v.amount">
  397. <template slot="prepend" v-if="v.level==1">起步价</template>
  398. <template slot="prepend" v-if="v.level!=1">每KG加价</template>
  399. <template slot="append">元</template>
  400. </el-input>
  401. <el-button size="medium" type="danger" @click="deleteWeight(k)">删除</el-button>
  402. <p></p>
  403. </template>
  404. </el-form-item>
  405. <el-form-item label="夜间加价">
  406. <div class="tip">
  407. <el-button size="medium" @click="addNight()">添加夜间范围</el-button>
  408. 在设置的夜间时间范围内下单,加收费用!如留空,则不计算夜间加价。当配送时间与多个夜间加价时间范围重叠时,取加价费用最高的一个。当开启预约时间且细分时间设置为天时,夜间加价失效。
  409. </div>
  410. <p></p>
  411. <template v-for="(v,k) in form.night_setting">
  412. 时间段
  413. <el-select size="medium" v-model="v.start_time">
  414. <el-option
  415. v-for="item in start_time_arr"
  416. :label="item.label"
  417. :value="item.value"
  418. ></el-option>
  419. </el-select>
  420. <el-select size="medium" v-model="v.end_time">
  421. <el-option
  422. v-for="item in end_time_arr"
  423. :label="item.label"
  424. :value="item.value"
  425. ></el-option>
  426. </el-select>
  427. <el-input v-model="v.amount" style="width: 30%" size="medium">
  428. <template slot="prepend">加价</template>
  429. <template slot="append">元</template>
  430. </el-input>
  431. <el-button size="medium" type="danger" @click="deleteNight(k)">删除</el-button>
  432. <p></p>
  433. </template>
  434. </el-form-item>
  435. </template>
  436. <el-form-item label="配送价格" v-if="form.distance_type==3">
  437. <el-input size="medium" style="width: 50%" v-model="form.community_price"
  438. placeholder="请输入配送价格"></el-input>
  439. </el-form-item>
  440. <el-form-item label="配送区域" style="margin-bottom: 200px">
  441. <div id="map_div" style="display: none">
  442. <div style="position: relative;width:70%;">
  443. <div id="container"></div>
  444. <div class="input-card" style="width: 120px;position: absolute;">
  445. <button type="button" class="btn" onclick="openEdit()"
  446. style="margin-bottom: 5px">
  447. 开始编辑
  448. </button>
  449. <button type="button" class="btn" onclick="polyEditor.close()">结束编辑</button>
  450. </div>
  451. </div>
  452. </div>
  453. <div v-if="form.distance_type==2">
  454. <el-select size="medium" filterable v-model="form.province_id" @change="provinceChange">
  455. <el-option :label="'请选择省份'" :value="0"></el-option>
  456. <el-option
  457. v-for="item in province_list"
  458. :label="item.areaname"
  459. :value="item.id"
  460. ></el-option>
  461. </el-select>
  462. <el-select size="medium" filterable v-model="form.city_id" @change="cityChange">
  463. <el-option :label="'请选择城市'" :value="0"></el-option>
  464. <el-option
  465. v-for="item in city_list"
  466. v-if="item.parentid==form.province_id"
  467. :label="item.areaname"
  468. :value="item.id"
  469. ></el-option>
  470. </el-select>
  471. <el-cascader
  472. v-model="form.choose_area"
  473. :options="area_list"
  474. :props="{ multiple: true, checkStrictly: true }"
  475. clearable></el-cascader>
  476. </div>
  477. <div v-if="form.distance_type==3" style="width: 70%">
  478. <el-input size="medium" style="width: 50%" v-model="new_community_name"
  479. placeholder="请输入社区名称"></el-input>
  480. <el-button size="medium" type="primary" @click="addCommunity()">新增社区</el-button>
  481. <p></p>
  482. <el-tag style="margin-left: 10px" v-for="tag in form.community_list"
  483. closable @close="deleteCommunity(tag)" :disable-transitions="true">
  484. [[tag]]
  485. </el-tag>
  486. </div>
  487. </el-form-item>
  488. </div>
  489. </div>
  490. </el-form>
  491. <div style=" width: calc(100% - 266px);
  492. position: fixed;
  493. bottom: 0;
  494. right: 0;
  495. margin-right: 10px;
  496. line-height: 63px;
  497. background-color: #ffffff;
  498. box-shadow: 0px 8px 23px 1px rgba(51, 51, 51, 0.3);
  499. background-color: #fff;
  500. text-align: center;">
  501. <el-button type="primary" @click="submit">提交</el-button>
  502. </div>
  503. </el-form>
  504. </div>
  505. </div>
  506. <script>
  507. var polyEditor;
  508. var path_list = [];
  509. var longitude = "";
  510. var latitude = "";
  511. var set = {!! $set?:'{}' !!};
  512. if (set.longitude) {
  513. longitude = set.longitude;
  514. }
  515. if (set.latitude) {
  516. latitude = set.latitude;
  517. }
  518. console.log(set);
  519. if (set.delivery_area) {
  520. if (set.delivery_area[0] instanceof Array) {
  521. path_list = set.delivery_area;
  522. } else {
  523. set.delivery_area.forEach((item, index) => {
  524. path_list.push([item[0], item[1]]);
  525. })
  526. }
  527. } else {
  528. path_list.push(
  529. [parseFloat((parseFloat(longitude) + 0.012).toFixed(6)), parseFloat((parseFloat(latitude) + 0.019).toFixed(6))],
  530. [parseFloat((parseFloat(longitude) + 0.012).toFixed(6)), parseFloat((parseFloat(latitude) - 0.008).toFixed(6))],
  531. [parseFloat((parseFloat(longitude) - 0.022).toFixed(6)), parseFloat((parseFloat(latitude) - 0.012).toFixed(6))],
  532. [parseFloat((parseFloat(longitude) - 0.012).toFixed(6)), parseFloat((parseFloat(latitude) + 0.032).toFixed(6))],
  533. )
  534. }
  535. var app = new Vue({
  536. el: "#re_content",
  537. delimiters: ['[[', ']]'],
  538. name: 'test',
  539. data() {
  540. return {
  541. plugin_name: '同城配送',
  542. form: {
  543. delivery_area: [],
  544. longitude: '',
  545. latitude: '',
  546. },
  547. start_time_arr: [],
  548. end_time_arr: [],
  549. area_list: [],
  550. new_community_name: '',
  551. province_list: [],
  552. city_list: [],
  553. }
  554. },
  555. created() {
  556. this.getData();
  557. },
  558. mounted() {
  559. },
  560. methods: {
  561. provinceChange() {
  562. this.form.city_id = 0;
  563. this.cityChange();
  564. },
  565. cityChange() {
  566. this.form.choose_area = [];
  567. this.refreshAreaList();
  568. },
  569. addCommunity() {
  570. if (!this.new_community_name) {
  571. this.$message({message: '请输入社区名称', type: 'error'});
  572. return false;
  573. }
  574. if (this.form.community_list.indexOf(this.new_community_name) === -1) {
  575. this.form.community_list.push(this.new_community_name);
  576. } else {
  577. this.$message({message: '存在重复的社区名称', type: 'error'});
  578. return false;
  579. }
  580. },
  581. deleteCommunity(tag) {
  582. var key = this.form.community_list.indexOf(tag);
  583. if (key === -1) {
  584. this.$message({message: '标签不存在', type: 'error'});
  585. return false;
  586. }
  587. this.form.community_list.splice(key, 1);
  588. },
  589. showMapDiv: function () {
  590. if (this.form.distance_type === 1) {
  591. document.getElementById("map_div").style.display = "block"
  592. } else {
  593. document.getElementById("map_div").style.display = "none"
  594. }
  595. },
  596. addNight: function () {
  597. this.form.night_setting.push({
  598. unit: '',
  599. amount: '',
  600. level: this.form.night_setting.length + 1,
  601. });
  602. },
  603. deleteNight: function (key) {
  604. this.form.night_setting.splice(key, 1);
  605. var night_setting = this.form.night_setting;
  606. this.form.night_setting.forEach(function (v, k) {
  607. night_setting[k].level = k + 1;
  608. });
  609. },
  610. addWeight: function () {
  611. this.form.weight_setting.push({
  612. unit: '',
  613. amount: '',
  614. level: this.form.weight_setting.length + 1,
  615. });
  616. },
  617. deleteWeight: function (key) {
  618. this.form.weight_setting.splice(key, 1);
  619. var weight_setting = this.form.weight_setting;
  620. this.form.weight_setting.forEach(function (v, k) {
  621. weight_setting[k].level = k + 1;
  622. });
  623. },
  624. addDistance: function () {
  625. this.form.distance_setting.push({
  626. unit: '',
  627. amount: '',
  628. level: this.form.distance_setting.length + 1,
  629. });
  630. },
  631. deleteDistance: function (key) {
  632. this.form.distance_setting.splice(key, 1);
  633. var distance_setting = this.form.distance_setting;
  634. this.form.distance_setting.forEach(function (v, k) {
  635. distance_setting[k].level = k + 1;
  636. });
  637. },
  638. futureWeekDisabled: function (key, week) {
  639. if (this.form.time_arr[key].week_day.indexOf(week) !== -1) {
  640. return false;
  641. }
  642. if (this.form.had_choose_week_day.indexOf(week) === -1) {
  643. return false;
  644. }
  645. return true;
  646. },
  647. futureWeekChange: function () {
  648. var arr = [];
  649. this.form.time_arr.forEach(function (v, k) {
  650. v.week_day.forEach(function (vv, kk) {
  651. if (arr.indexOf(vv) === -1) {
  652. arr.push(vv);
  653. }
  654. })
  655. });
  656. this.form.had_choose_week_day = arr;
  657. },
  658. deleteFutureWeekArr: function (key) {
  659. this.form.time_arr.splice(key, 1);
  660. this.futureWeekChange();
  661. },
  662. addFutureWeekArr: function () {
  663. this.form.time_arr.push({
  664. 'week_day': [],
  665. 'time_arr': [],
  666. });
  667. },
  668. addFutureTimeArr: function (key) {
  669. this.form.time_arr[key].time_arr.push({
  670. 'start_time': '',
  671. 'end_time': '',
  672. });
  673. // this.form.time_arr.splice(key);
  674. },
  675. deleteFutureTimeArr: function (key1, key2) {
  676. this.form.time_arr[key1].time_arr.splice(key2, 1);
  677. },
  678. copyUrl: function (url) {
  679. let oInput = document.createElement('input');
  680. oInput.value = url;
  681. document.body.appendChild(oInput);
  682. oInput.select(); // 选择对象;
  683. console.log(oInput.value);
  684. document.execCommand("Copy"); // 执行浏览器复制命令
  685. this.$message({message: '复制成功', type: 'success'});
  686. oInput.remove()
  687. },
  688. refreshAreaList() {
  689. this.$http.post('{!! yzWebFullUrl('plugin.city-delivery.admin.setting.getAreaListByCity') !!}', {city_id: this.form.city_id}).then(response => {
  690. if (response.data.result) {
  691. this.area_list = response.data.data;
  692. } else {
  693. this.$message({message: response.data.msg, type: 'error'});
  694. }
  695. }, response => {
  696. this.$message({message: response.data.msg, type: 'error'});
  697. })
  698. },
  699. getData() {
  700. this.$http.post('{!! yzWebFullUrl('plugin.city-delivery.admin.setting.index') !!}', {is_json: 1}).then(response => {
  701. if (response.data.result) {
  702. console.log(response.data.data.setting);
  703. this.form = response.data.data.setting;
  704. this.plugin_name = this.form.plugin_name;
  705. this.start_time_arr = response.data.data.start_time_arr;
  706. this.end_time_arr = response.data.data.end_time_arr;
  707. this.province_list = response.data.data.province_list;
  708. this.city_list = response.data.data.city_list;
  709. this.sf_callback_url = response.data.data.sf_callback_url;
  710. this.showMapDiv();
  711. if (this.form.city_id) {
  712. this.refreshAreaList();
  713. }
  714. } else {
  715. this.$message({message: response.data.msg, type: 'error'});
  716. }
  717. }, response => {
  718. this.$message({message: response.data.msg, type: 'error'});
  719. })
  720. },
  721. submit() {
  722. this.form.delivery_area = path_list;
  723. this.$http.post('{!! yzWebFullUrl('plugin.city-delivery.admin.setting.edit') !!}', this.form).then(response => {
  724. if (response.data.result) {
  725. this.$message({message: response.data.msg, type: 'success'});
  726. this.getData();
  727. } else {
  728. this.$message({message: response.data.msg, type: 'error'});
  729. }
  730. }, response => {
  731. this.$message({message: response.data.msg, type: 'error'});
  732. })
  733. },
  734. },
  735. });
  736. function openEdit() {
  737. console.log("开始编辑")
  738. polyEditor.open();
  739. }
  740. console.log([longitude, latitude]);
  741. var map = new AMap.Map("container", {
  742. // center: [116.400274, 39.905812],
  743. center: [longitude, latitude],
  744. zoom: 14
  745. });
  746. var marker = new AMap.Marker({
  747. icon: "//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png",
  748. // position: [116.400274, 39.905812],
  749. center: [longitude, latitude],
  750. });
  751. marker.setMap(map);
  752. var path = path_list;
  753. polygon = new AMap.Polygon({
  754. path: path,
  755. strokeColor: "#FF33FF",
  756. strokeWeight: 6,
  757. strokeOpacity: 0.2,
  758. fillOpacity: 0.4,
  759. fillColor: '#1791fc',
  760. zIndex: 50,
  761. });
  762. map.add(polygon);
  763. // 缩放地图到合适的视野级别
  764. map.setFitView([polygon]);
  765. polyEditor = new AMap.PolyEditor(map, polygon);
  766. polyEditor.on('addnode', function (event) {
  767. // log.info('触发事件:addnode')
  768. console.log(event);
  769. });
  770. polyEditor.on('adjust', function (event) {
  771. console.log(event);
  772. // log.info('触发事件:adjust')
  773. });
  774. polyEditor.on('removenode', function (event) {
  775. console.log(event);
  776. // log.info('触发事件:removenode')
  777. });
  778. polyEditor.on('end', function (event) {
  779. console.log(event.target.w.path);
  780. path_list = [];
  781. for (let i = 0; i < event.target.w.path.length; i++) {
  782. // path_list.push([event.target.w.path[i].lng,event.target.w.path[i].lat])
  783. path_list.push(event.target.w.path[i]);
  784. }
  785. console.log(path_list)
  786. // log.info('触发事件: end')
  787. // event.target 即为编辑后的多边形对象
  788. })
  789. </script>
  790. @endsection