platform.html 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891
  1. <link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/element/element.css">
  2. <link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/common.css">
  3. <style>
  4. #configPlatform {
  5. color: #444;
  6. padding: 0 20px 40px 0;
  7. background-color: #fff;
  8. position: relative;
  9. height: calc(100vh - 40px);
  10. overflow-y: auto;
  11. }
  12. .wx-type .el-radio {
  13. margin-bottom: 10px;
  14. margin-right: 10px;
  15. }
  16. .platform-images {
  17. width: 60px;
  18. height: 60px;
  19. border-radius: 4px;
  20. position: relative;
  21. border: 1px solid #7438D5;
  22. margin-right: 10px;
  23. margin-bottom: 10px;
  24. }
  25. .el-image {
  26. width: 100%;
  27. height: 100%;
  28. border-radius: 4px;
  29. }
  30. .del-image-btn {
  31. position: absolute;
  32. width: 14px;
  33. height: 14px;
  34. line-height: 14px;
  35. text-align: center;
  36. border-radius: 50%;
  37. font-size: 12px;
  38. font-weight: 600;
  39. background: #fff;
  40. color: #7438D5;
  41. top: -8px;
  42. right: -8px;
  43. font-size: 16px;
  44. }
  45. .add-img {
  46. width: 60px;
  47. height: 60px;
  48. border: 1px dashed #E6E6E6;
  49. border-radius: 4px;
  50. justify-content: center;
  51. }
  52. .form-item-tip {
  53. color: #999;
  54. }
  55. .form-item-tip>p {
  56. line-height: 20px;
  57. }
  58. .el-form-item {
  59. margin-bottom: 10px;
  60. }
  61. .el-image__error {
  62. font-size: 12px
  63. }
  64. .divider-title {
  65. font-weight: 600;
  66. margin-bottom: 20px;
  67. color: #666;
  68. padding-left: 20px;
  69. }
  70. .el-input-group__append,
  71. .el-input-group__prepend {
  72. background: #f9f9f9;
  73. }
  74. .dialog-footer {
  75. position: fixed;
  76. right: 20px;
  77. bottom: 0px;
  78. width: 100%;
  79. background: #fff;
  80. padding: 30px 10px 30px;
  81. }
  82. .el-input-group__append {
  83. line-height: 30px !important;
  84. }
  85. #configPlatform .el-form-item__content .el-input-group {
  86. vertical-align: middle;
  87. }
  88. .detailForm-href {
  89. margin-left: 30px;
  90. flex-shrink: 0;
  91. }
  92. .detailForm-href a {
  93. color: #7438D5;
  94. cursor: pointer;
  95. }
  96. .select-option-container .option-item {
  97. width: 50%;
  98. }
  99. .detailForm-sender {
  100. margin-right: 20px;
  101. }
  102. .detailForm-sender:last-child {
  103. margin-right: 0px;
  104. }
  105. .local-ajax-upload-wrap label {
  106. color: #7536D0;
  107. }
  108. .local-ajax-upload-wrap .local-ajax-upload {
  109. display: none !important;
  110. }
  111. [v-cloak] {
  112. display: none
  113. }
  114. </style>
  115. <script src="__CDN__/assets/addons/shopro/libs/vue.js"></script>
  116. <script src="__CDN__/assets/addons/shopro/libs/element/element.js"></script>
  117. <script src="__CDN__/assets/addons/shopro/libs/moment.js"></script>
  118. <div id="configPlatform" class="shopro-container-scrollbar" v-cloak>
  119. <el-form :model="detailForm" ref="detailForm" label-width="168px" class="demo-detailForm">
  120. <div v-if="type=='shopro'">
  121. <el-form-item label="商城名称:">
  122. <el-input v-model="detailForm.name" placeholder="请输入商城名称" size="small"></el-input>
  123. </el-form-item>
  124. <el-form-item label="商城域名:">
  125. <el-input v-model="detailForm.domain" placeholder="请输入商城域名必须填写http(s)://" size="small"></el-input>
  126. <div class="form-item-tip">
  127. <p>1.此地址用于您的店铺装修预览、H5分享链接等场景</p>
  128. <p>2.请完整输入您的H5商城入口链接,如 http://m.shopro.top/</p>
  129. <p>3.开启SSL并使用hash部署方式,则填写如 https://m.shopro.top/#/</p>
  130. </div>
  131. </el-form-item>
  132. <el-form-item label="版本号:">
  133. <el-input v-model="detailForm.version" placeholder="请输入版本号" size="small"></el-input>
  134. </el-form-item>
  135. <el-form-item label="Logo:">
  136. <div class="display-flex">
  137. <div class="platform-images" v-if="detailForm.logo">
  138. <el-image :src="Fast.api.cdnurl(detailForm.logo)" fit="contain"
  139. :preview-src-list="detailForm.logo_arr">
  140. </el-image>
  141. <div class="del-image-btn" @click="delImg('image','logo')">
  142. <i class="el-icon-error"></i>
  143. </div>
  144. </div>
  145. <div class="add-img display-flex" @click="attachmentSelect('image','logo')" v-if="!detailForm.logo">
  146. <i class="el-icon-plus"></i>
  147. </div>
  148. </div>
  149. </el-form-item>
  150. <el-form-item label="版权信息:" v-if="detailForm.copyright">
  151. <el-input v-model="detailForm.copyright[0]" placeholder="请输入版权信息" size="small"></el-input>
  152. <el-input v-model="detailForm.copyright[1]" placeholder="请输入版权信息" size="small"></el-input>
  153. </el-form-item>
  154. <el-form-item label="用户协议:">
  155. <el-input v-model="detailForm.user_protocol" placeholder="请选择用户协议" size="small">
  156. <template slot="append">
  157. <div class="theme-color cursor-pointer" @click="richtextSelect('user_protocol')">选择</div>
  158. </template>
  159. </el-input>
  160. </el-form-item>
  161. <el-form-item label="隐私协议:">
  162. <el-input v-model="detailForm.privacy_protocol" placeholder="请选择隐私协议" size="small">
  163. <template slot="append">
  164. <div class="theme-color cursor-pointer" @click="richtextSelect('privacy_protocol')">选择</div>
  165. </template>
  166. </el-input>
  167. </el-form-item>
  168. <el-form-item label="关于我们:">
  169. <el-input v-model="detailForm.about_us" placeholder="请选择关于我们" size="small">
  170. <template slot="append">
  171. <div class="theme-color cursor-pointer" @click="richtextSelect('about_us')">选择</div>
  172. </template>
  173. </el-input>
  174. </el-form-item>
  175. </div>
  176. <div v-if="type=='user'">
  177. <el-form-item label="默认昵称:">
  178. <el-input v-model="detailForm.nickname" placeholder="请输入默认昵称" size="small"></el-input>
  179. </el-form-item>
  180. <el-form-item label="默认头像:">
  181. <div class="display-flex">
  182. <div class="platform-images" v-if="detailForm.avatar">
  183. <el-image :src="Fast.api.cdnurl(detailForm.avatar)" fit="contain"
  184. :preview-src-list="detailForm.avatar_arr">
  185. </el-image>
  186. <div class="del-image-btn" @click="delImg('image','avatar')">
  187. <i class="el-icon-error"></i>
  188. </div>
  189. </div>
  190. <div class="add-img display-flex" @click="attachmentSelect('image','avatar')"
  191. v-if="!detailForm.avatar">
  192. <i class="el-icon-plus"></i>
  193. </div>
  194. </div>
  195. <div class="form-item-tip">第三方登录用户会默认使用已授权的头像和昵称</div>
  196. </el-form-item>
  197. <el-form-item label="默认分组:">
  198. <el-select v-model="detailForm.group_id" filterable placeholder="请选择默认分组" size="small">
  199. <el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id+''">
  200. </el-option>
  201. </el-select>
  202. </el-form-item>
  203. </div>
  204. <div v-if="type=='share'">
  205. <el-form-item label="分享标题:">
  206. <el-input v-model="detailForm.title" placeholder="请输入分享标题" size="small"></el-input>
  207. </el-form-item>
  208. <el-form-item label="默认分享图片:">
  209. <div class="display-flex">
  210. <div class="platform-images" v-if="detailForm.image">
  211. <el-image :src="Fast.api.cdnurl(detailForm.image)" fit="contain"
  212. :preview-src-list="detailForm.image_arr">
  213. </el-image>
  214. <div class="del-image-btn" @click="delImg('image','image')">
  215. <i class="el-icon-error"></i>
  216. </div>
  217. </div>
  218. <div class="add-img display-flex" @click="attachmentSelect('image','image')"
  219. v-if="!detailForm.image">
  220. <i class="el-icon-plus"></i>
  221. </div>
  222. </div>
  223. </el-form-item>
  224. <el-form-item label="商品分享背景:">
  225. <div class="display-flex">
  226. <div class="platform-images" v-if="detailForm.goods_poster_bg">
  227. <el-image :src="Fast.api.cdnurl(detailForm.goods_poster_bg)" fit="contain"
  228. :preview-src-list="detailForm.goods_poster_bg_arr">
  229. </el-image>
  230. <div class="del-image-btn" @click="delImg('image','goods_poster_bg')">
  231. <i class="el-icon-error"></i>
  232. </div>
  233. </div>
  234. <div class="add-img display-flex" @click="attachmentSelect('image','goods_poster_bg')"
  235. v-if="!detailForm.goods_poster_bg">
  236. <i class="el-icon-plus"></i>
  237. </div>
  238. </div>
  239. </el-form-item>
  240. <el-form-item label="用户分享背景:">
  241. <div class="display-flex">
  242. <div class="platform-images" v-if="detailForm.user_poster_bg">
  243. <el-image :src="Fast.api.cdnurl(detailForm.user_poster_bg)" fit="contain"
  244. :preview-src-list="detailForm.user_poster_bg_arr">
  245. </el-image>
  246. <div class="del-image-btn" @click="delImg('image','user_poster_bg')">
  247. <i class="el-icon-error"></i>
  248. </div>
  249. </div>
  250. <div class="add-img display-flex" @click="attachmentSelect('image','user_poster_bg')"
  251. v-if="!detailForm.user_poster_bg">
  252. <i class="el-icon-plus"></i>
  253. </div>
  254. </div>
  255. </el-form-item>
  256. <el-form-item label="拼团分享背景:">
  257. <div class="display-flex">
  258. <div class="platform-images" v-if="detailForm.groupon_poster_bg">
  259. <el-image :src="Fast.api.cdnurl(detailForm.groupon_poster_bg)" fit="contain"
  260. :preview-src-list="detailForm.groupon_poster_bg_arr">
  261. </el-image>
  262. <div class="del-image-btn" @click="delImg('image','groupon_poster_bg')">
  263. <i class="el-icon-error"></i>
  264. </div>
  265. </div>
  266. <div class="add-img display-flex" @click="attachmentSelect('image','groupon_poster_bg')"
  267. v-if="!detailForm.groupon_poster_bg">
  268. <i class="el-icon-plus"></i>
  269. </div>
  270. </div>
  271. </el-form-item>
  272. </div>
  273. <div v-if="type=='score'">
  274. <el-form-item label="每日签到积分:">
  275. <el-input v-model="detailForm.everyday" placeholder="请输入每日签到积分" size="small"></el-input>
  276. </el-form-item>
  277. <el-form-item label="递增天数:">
  278. <el-input v-model="detailForm.until_day" placeholder="请输入递增天数" size="small"></el-input>
  279. </el-form-item>
  280. <el-form-item label="递增数量:">
  281. <el-input v-model="detailForm.inc_value" placeholder="请输入递增数量" size="small"></el-input>
  282. </el-form-item>
  283. </div>
  284. <div v-if="type=='withdraw'">
  285. <el-form-item label="提现方式:" v-if="detailForm.methods != undefined">
  286. <el-checkbox-group v-model="detailForm.methods">
  287. <el-checkbox label="wechat">微信零钱</el-checkbox>
  288. <el-checkbox label="alipay">支付宝</el-checkbox>
  289. <el-checkbox label="bank">手动线下打款</el-checkbox>
  290. </el-checkbox-group>
  291. </el-form-item>
  292. <el-form-item label="自动到账:"
  293. v-if="detailForm.methods != undefined && (detailForm.methods.includes('wechat') || detailForm.methods.includes('alipay'))">
  294. <el-switch v-model="detailForm.wechat_alipay_auto" active-color="#7438D5" inactive-color="#eee"
  295. active-value="1" inactive-value="0">
  296. </el-switch>
  297. <div class="form-item-tip">开启后用户提现到 <strong>微信零钱/支付宝</strong> 将自动审核通过并且自动打款,手动打款不受开关影响</div>
  298. </el-form-item>
  299. <el-form-item label="手续费:">
  300. <el-input v-model="detailForm.service_fee" type="number" placeholder="请输入手续费" size="small">
  301. <template slot="append">%</template>
  302. </el-input>
  303. </el-form-item>
  304. <el-form-item label="最小提现金额:">
  305. <el-input v-model="detailForm.min" type="number" placeholder="请输入最小提现金额" size="small">
  306. <template slot="append">元</template>
  307. </el-input>
  308. </el-form-item>
  309. <el-form-item label="最大提现金额:">
  310. <el-input v-model="detailForm.max" type="number" placeholder="请输入最大提现金额" size="small">
  311. <template slot="append">元</template>
  312. </el-input>
  313. </el-form-item>
  314. </div>
  315. <div v-if="type=='order'">
  316. <div v-if="detailForm.goods">
  317. <div class="divider-title">商品配置</div>
  318. <el-form-item label="预警阈值:">
  319. <el-input v-model="detailForm.goods.stock_warning" placeholder="请输入预警阈值" size="small">
  320. <template slot="append">个</template>
  321. </el-input>
  322. </el-form-item>
  323. </div>
  324. <div>
  325. <div class="divider-title">订单配置</div>
  326. <el-form-item label="自动关闭时间:">
  327. <el-input v-model="detailForm.order_auto_close" placeholder="请输入订单自动关闭时间" size="small">
  328. <template slot="append">分钟</template>
  329. </el-input>
  330. </el-form-item>
  331. <el-form-item label="自动收货时间:">
  332. <el-input v-model="detailForm.order_auto_confirm" placeholder="请输入订单自动收货时间" size="small">
  333. <template slot="append">天</template>
  334. </el-input>
  335. </el-form-item>
  336. <el-form-item label="自动评价时间:">
  337. <el-input v-model="detailForm.order_auto_comment" placeholder="请输入订单自动评价时间" size="small">
  338. <template slot="append">天</template>
  339. </el-input>
  340. </el-form-item>
  341. <el-form-item label="自动评价内容:">
  342. <el-input v-model="detailForm.order_comment_content" placeholder="请输入订单自动评价内容" size="small">
  343. </el-input>
  344. </el-form-item>
  345. </div>
  346. </div>
  347. <div v-if="type=='services'">
  348. <div style="margin-bottom: 40px;" v-if="detailForm.amap">
  349. <div class="divider-title">高德地图配置</div>
  350. <el-form-item label="申请的key值:">
  351. <el-input v-model="detailForm.amap.appkey" placeholder="请输入申请的key值" size="small">
  352. </el-input>
  353. </el-form-item>
  354. </div>
  355. <div class="divider-title">快递鸟配置</div>
  356. <div v-if="detailForm.express">
  357. <el-form-item label="用户ID:">
  358. <el-input v-model="detailForm.express.ebusiness_id" placeholder="请输入用户ID" size="small">
  359. </el-input>
  360. </el-form-item>
  361. <el-form-item label="类型:">
  362. <div class="display-flex">
  363. <el-radio-group v-model="detailForm.express.type">
  364. <el-radio label="free">免费版</el-radio>
  365. <el-radio label="vip">标准版</el-radio>
  366. </el-radio-group>
  367. <div class="detailForm-href">
  368. <a href="http://www.kdniao.com/reg?from=wzlxp" target="_Blank">申请快递鸟商户</a>
  369. </div>
  370. </div>
  371. <div v-if="detailForm.express.type=='free'" class="form-item-tip">免费版只支持 申通、圆通、百世、天天(请以快递鸟免费版说明为准)
  372. </div>
  373. <div v-if="detailForm.express.type=='vip'" class="form-item-tip">标准版本支持电子面单接口,自动生成运单号</div>
  374. </el-form-item>
  375. <el-form-item label="API Key:">
  376. <el-input v-model="detailForm.express.appkey" placeholder="请输入API Key" size="small">
  377. </el-input>
  378. </el-form-item>
  379. <el-form-item label="京东青龙配送编码:">
  380. <el-input v-model="detailForm.express.jd_code" placeholder="请输入京东青龙配送编码" size="small">
  381. </el-input>
  382. <div class="form-item-tip">使用京东时需要配置</div>
  383. </el-form-item>
  384. <el-form-item label="回调地址:">
  385. <el-input disabled v-model="expressAddress" placeholder="请输入回调地址" size="small">
  386. </el-input>
  387. <div class="form-item-tip">请在快递鸟后台配置此回调地址</div>
  388. </el-form-item>
  389. <template v-if="detailForm.express.type=='vip'">
  390. <el-form-item label="客户号:">
  391. <el-input v-model="detailForm.express.CustomerName" placeholder="请输入客户号" size="small">
  392. </el-input>
  393. </el-form-item>
  394. <el-form-item label="客户密码:">
  395. <el-input v-model="detailForm.express.CustomerPwd" placeholder="请输入客户密码" size="small">
  396. </el-input>
  397. </el-form-item>
  398. <el-form-item label="快递公司编码:">
  399. <el-select style="width: 100%;" v-model="detailForm.express.ShipperCode" filterable size="small"
  400. placeholder="请选择快递公司编码" :filter-method="deliverFilter">
  401. <el-option v-for="item in deliverCompany" :key="item.code" :label="item.code"
  402. :value="item.code">
  403. <div class="select-option-container display-flex">
  404. <div class="option-item">{{ item.code }}</div>
  405. <div class="option-item">{{ item.name }}</div>
  406. </div>
  407. </el-option>
  408. </el-select>
  409. </el-form-item>
  410. <div class="divider-title">发货人信息</div>
  411. <div v-if="detailForm.express.Sender">
  412. <el-form-item label="发货人:">
  413. <el-input v-model="detailForm.express.Sender.Name" placeholder="请输入发货人姓名" size="small">
  414. </el-input>
  415. </el-form-item>
  416. <el-form-item label="联系电话:">
  417. <el-input v-model="detailForm.express.Sender.Mobile" placeholder="请输入联系电话" size="small">
  418. </el-form-item>
  419. <el-form-item label="省/市/区:">
  420. <el-cascader style="width: 100%;" v-model="detailForm.area_arr" :options="areaOptions"
  421. :props="{value:'name'}" size="small"></el-cascader>
  422. </el-form-item>
  423. <el-form-item label="详细地址:">
  424. <el-input v-model="detailForm.express.Sender.Address" placeholder="请输入详细地址" size="small">
  425. </el-input>
  426. </el-form-item>
  427. </div>
  428. <div class="divider-title">邮费支付方式</div>
  429. <div v-if="detailForm.express">
  430. <el-form-item label="支付方式:">
  431. <el-radio-group v-model="detailForm.express.PayType">
  432. <el-radio :label="1">现付</el-radio>
  433. <el-radio :label="2">到付</el-radio>
  434. <el-radio :label="3">月结</el-radio>
  435. <el-radio :label="4">第三方支付(仅SF支持)</el-radio>
  436. </el-radio-group>
  437. </el-form-item>
  438. <el-form-item label="快递类型:">
  439. <div class="display-flex">
  440. <el-input v-model="detailForm.express.ExpType" placeholder="请根据快递业务类型表-快递鸟接口参数填写"
  441. size="small">
  442. </el-input>
  443. <div class="form-item-tip detailForm-href">详细快递类型请下载
  444. <a href="http://www.kdniao.com/file/%E5%BF%AB%E9%80%92%E5%85%AC%E5%8F%B8%E5%BF%AB%E9%80%92%E4%B8%9A%E5%8A%A1%E7%B1%BB%E5%9E%8B.xlsx"
  445. target="_Blank">快递业务类型</a>
  446. </div>
  447. </div>
  448. </el-form-item>
  449. </div>
  450. </template>
  451. </div>
  452. </div>
  453. <div v-if="type=='chat'">
  454. <el-form-item label="客服类型:">
  455. <el-radio-group v-model="detailForm.type">
  456. <el-radio label="shopro">Shopro 客服</el-radio>
  457. <el-radio label="kefu">Workerman 在线客服</el-radio>
  458. </el-radio-group>
  459. <div class="form-item-tip">选用 workerman 在线客服,请先安装 Workerman 在线客服插件</div>
  460. </el-form-item>
  461. <div v-if="detailForm.type=='shopro'">
  462. <div class="divider-title">基础配置</div>
  463. <div v-if="detailForm.basic">
  464. <el-form-item label="默认上次客服:">
  465. <el-switch v-model="detailForm.basic.last_customer_service" active-color="#7438D5"
  466. inactive-color="#eee" :active-value="1" :inactive-value="0">
  467. </el-switch>
  468. <div class="form-item-tip">是否默认使用上次客服
  469. </div>
  470. </el-form-item>
  471. <el-form-item label="客服分配方式:">
  472. <el-radio-group v-model="detailForm.basic.allocate">
  473. <el-radio label="busy">忙碌程度</el-radio>
  474. <el-radio label="turns">轮流</el-radio>
  475. <el-radio label="random">随机</el-radio>
  476. </el-radio-group>
  477. <div class="form-item-tip">
  478. <span v-if="detailForm.basic.allocate == 'busy'">按照客服忙碌度分配给最空闲的客服</span>
  479. <span v-if="detailForm.basic.allocate == 'turns'">轮流分配给最长时间没接入客户的客服</span>
  480. <span v-if="detailForm.basic.allocate == 'random'">随机分配给在线的客服</span>
  481. </div>
  482. </el-form-item>
  483. <el-form-item label="公告:">
  484. <el-input v-model="detailForm.basic.notice" placeholder="请输入公告" size="small">
  485. </el-input>
  486. <div class="form-item-tip">
  487. 将会显示在用户端聊天界面
  488. </div>
  489. </el-form-item>
  490. </div>
  491. <div class="divider-title">系统配置(修改完下面配置,请一定重启客服进程)</div>
  492. <div v-if="detailForm.system">
  493. <el-form-item label="开启 wss 连接:">
  494. <el-switch v-model="detailForm.system.is_ssl" active-color="#7438D5" inactive-color="#eee"
  495. :active-value="1" :inactive-value="0">
  496. </el-switch>
  497. </el-form-item>
  498. <el-form-item v-if="detailForm.system.is_ssl==1" label="wss 连接方式:">
  499. <el-radio-group v-model="detailForm.system.ssl_type">
  500. <el-radio label="cert">证书</el-radio>
  501. <el-radio label="reverse_proxy">反向代理</el-radio>
  502. </el-radio-group>
  503. <div class="form-item-tip">反向代理:通过 nginx 反向代理实现 wss,证书:直接配置证书实现 wss</div>
  504. </el-form-item>
  505. <div v-if="detailForm.system.is_ssl==1 && detailForm.system.ssl_type=='cert'">
  506. <el-form-item label="wss 证书:">
  507. <el-input v-model="detailForm.system.ssl_cert" placeholder="wss 证书在服务器的绝对路径" size="small">
  508. </el-input>
  509. </el-form-item>
  510. <el-form-item label="wss key:">
  511. <el-input v-model="detailForm.system.ssl_key" placeholder="wss key在服务器的绝对路径" size="small">
  512. </el-input>
  513. </el-form-item>
  514. </div>
  515. <el-form-item label="gateway 端口:">
  516. <el-input v-model="detailForm.system.gateway_port" placeholder="请输入API Key" size="small">
  517. </el-input>
  518. <div class="form-item-tip"> gateway端口,需要放行服务器端口</div>
  519. </el-form-item>
  520. <el-form-item label="进程数量:">
  521. <el-input v-model="detailForm.system.gateway_num" placeholder="请输入进程数量" size="small">
  522. </el-input>
  523. <div class="form-item-tip"> gateway进程数量</div>
  524. </el-form-item>
  525. <el-form-item label="gateway 内部端口:">
  526. <el-input v-model="detailForm.system.gateway_start_port" placeholder="请输入内部通讯端口" size="small">
  527. </el-input>
  528. <div class="form-item-tip">假如gateway进程数量为 4,起始端口为2010,则一般会使用2010 2011 2012 2013 4个端口作为内部通讯端口
  529. </div>
  530. </el-form-item>
  531. <el-form-item label="worker 服务端口:">
  532. <el-input v-model="detailForm.system.business_worker_port"
  533. placeholder="请输入 business worker 服务注册端口" size="small">
  534. </el-input>
  535. <div class="form-item-tip">请输入 business worker 服务注册端口</div>
  536. </el-form-item>
  537. <el-form-item label="worker 进程数量:">
  538. <el-input v-model="detailForm.system.business_worker_num" placeholder="请输入 business worker 进程数量"
  539. size="small">
  540. </el-input>
  541. <div class="form-item-tip">business worker 进程数量</div>
  542. </el-form-item>
  543. </div>
  544. </div>
  545. </div>
  546. <div v-if="type=='store'">
  547. <el-form-item label="门店协议:">
  548. <el-input v-model="detailForm.protocol" placeholder="请选择门店协议" size="small">
  549. <template slot="append">
  550. <div class="theme-color cursor-pointer" @click="richtextSelect('protocol')">选择</div>
  551. </template>
  552. </el-input>
  553. </el-form-item>
  554. <el-form-item label="到店自提协议:">
  555. <el-input v-model="detailForm.selfetch_protocol" placeholder="请选择到店自提协议" size="small">
  556. <template slot="append">
  557. <div class="theme-color cursor-pointer" @click="richtextSelect('selfetch_protocol')">选择</div>
  558. </template>
  559. </el-input>
  560. </el-form-item>
  561. </div>
  562. <div v-if="type=='wxOfficialAccount'">
  563. <el-form-item label="公众号名称:">
  564. <el-input v-model="detailForm.name" placeholder="请输入公众号名称" size="small"></el-input>
  565. </el-form-item>
  566. <el-form-item label="公众号类型:">
  567. <div class="wx-type">
  568. <el-radio-group v-model="detailForm.wx_type">
  569. <el-radio label="1">订阅号</el-radio>
  570. <el-radio label="2">认证订阅号</el-radio>
  571. <el-radio label="3">服务号</el-radio>
  572. <el-radio label="4">认证服务号/认证政府订阅号/认证媒体订阅号</el-radio>
  573. </el-radio-group>
  574. </div>
  575. </el-form-item>
  576. <el-form-item label="公众号头像:">
  577. <div class="display-flex">
  578. <div class="platform-images" v-if="detailForm.avatar">
  579. <el-image :src="Fast.api.cdnurl(detailForm.avatar)" fit="contain"
  580. :preview-src-list="detailForm.avatar_arr">
  581. </el-image>
  582. <div class="del-image-btn" @click="delImg('image','avatar')">
  583. <i class="el-icon-error"></i>
  584. </div>
  585. </div>
  586. <div class="add-img display-flex" @click="attachmentSelect('image','avatar')"
  587. v-if="!detailForm.avatar">
  588. <i class="el-icon-plus"></i>
  589. </div>
  590. </div>
  591. </el-form-item>
  592. <el-form-item label="公众号二维码:">
  593. <div class="display-flex">
  594. <div class="goods-image-box display-flex" v-if="detailForm.qrcode">
  595. <div class="platform-images">
  596. <el-image :src="Fast.api.cdnurl(detailForm.qrcode)" fit="contain"
  597. :preview-src-list="detailForm.qrcode_arr">
  598. </el-image>
  599. <div class="del-image-btn" @click="delImg('image','qrcode')">
  600. <i class="el-icon-error"></i>
  601. </div>
  602. </div>
  603. </div>
  604. <div class="add-img display-flex" @click="attachmentSelect('image','qrcode')"
  605. v-if="!detailForm.qrcode">
  606. <i class="el-icon-plus"></i>
  607. </div>
  608. </div>
  609. </el-form-item>
  610. <el-form-item label="开发者ID:">
  611. <el-input v-model="detailForm.app_id" placeholder="请输入开发者ID(AppID)" size="small"></el-input>
  612. </el-form-item>
  613. <el-form-item label="开发者密码:">
  614. <el-input v-model="detailForm.secret" placeholder="请输入开发者密码(AppSecret)" size="small"></el-input>
  615. </el-form-item>
  616. <el-form-item label="服务器地址:">
  617. <el-input v-model="detailForm.url" disabled placeholder="请输入服务器地址(URL)" size="small"></el-input>
  618. </el-form-item>
  619. <el-form-item label="令牌(Token):">
  620. <el-input v-model="detailForm.token" placeholder="请输入令牌(Token)" size="small"></el-input>
  621. </el-form-item>
  622. <el-form-item label="消息加解密密钥:">
  623. <el-input v-model="detailForm.aes_key" placeholder="请输入消息加解密密钥(EncodingAESKey)" size="small"></el-input>
  624. </el-form-item>
  625. <el-form-item label="网页自动授权登录:">
  626. <el-switch v-model="detailForm.auto_login" active-color="#7438D5" inactive-color="#eee" active-value="1"
  627. inactive-value="0">
  628. </el-switch>
  629. </el-form-item>
  630. <el-form-item label="服务器配置状态:" prop="status">
  631. <el-radio-group v-model="detailForm.status">
  632. <el-radio label="0">未对接</el-radio>
  633. <el-radio label="1">已对接</el-radio>
  634. </el-radio-group>
  635. </el-form-item>
  636. </div>
  637. <div v-if="type=='wxMiniProgram'">
  638. <el-form-item label="小程序名称:">
  639. <el-input v-model="detailForm.name" placeholder="请输入小程序名称" size="small"></el-input>
  640. </el-form-item>
  641. <el-form-item label="小程序头像:">
  642. <div class="display-flex">
  643. <div class="goods-image-box display-flex" v-if="detailForm.avatar">
  644. <div class="platform-images">
  645. <el-image :src="Fast.api.cdnurl(detailForm.avatar)" fit="contain"
  646. :preview-src-list="detailForm.avatar_arr">
  647. </el-image>
  648. <div class="del-image-btn" @click="delImg('image','avatar')">
  649. <i class="el-icon-error"></i>
  650. </div>
  651. </div>
  652. </div>
  653. <div class="add-img display-flex" @click="attachmentSelect('image','avatar')"
  654. v-if="!detailForm.avatar">
  655. <i class="el-icon-plus"></i>
  656. </div>
  657. </div>
  658. </el-form-item>
  659. <el-form-item label="小程序码:">
  660. <div class="display-flex">
  661. <div class="goods-image-box display-flex" v-if="detailForm.qrcode">
  662. <div class="platform-images">
  663. <el-image :src="Fast.api.cdnurl(detailForm.qrcode)" fit="contain"
  664. :preview-src-list="detailForm.qrcode_arr">
  665. </el-image>
  666. <div class="del-image-btn" @click="delImg('image','qrcode')">
  667. <i class="el-icon-error"></i>
  668. </div>
  669. </div>
  670. </div>
  671. <div class="add-img display-flex" @click="attachmentSelect('image','qrcode')"
  672. v-if="!detailForm.qrcode">
  673. <i class="el-icon-plus"></i>
  674. </div>
  675. </div>
  676. </el-form-item>
  677. <el-form-item label="AppID:">
  678. <el-input v-model="detailForm.app_id" placeholder="请输入AppID" size="small"></el-input>
  679. </el-form-item>
  680. <el-form-item label="AppSecret:">
  681. <el-input v-model="detailForm.secret" placeholder="请输入AppSecret" size="small"></el-input>
  682. </el-form-item>
  683. <el-form-item label="小程序自动登录:">
  684. <div class="display-flex">
  685. <el-switch v-model="detailForm.auto_login" active-color="#7438D5" inactive-color="#eee"
  686. active-value="1" inactive-value="0">
  687. </el-switch>
  688. <span style="margin-left: 10px;color: #999;">(建议开启)</span>
  689. </div>
  690. </el-form-item>
  691. </div>
  692. <div v-if="type=='H5'">
  693. <el-form-item label="微信AppID:">
  694. <el-input v-model="detailForm.app_id" placeholder="请输入微信AppID" size="small"></el-input>
  695. <div class="form-item-tip">用于H5微信支付</div>
  696. </el-form-item>
  697. <el-form-item label="微信Secret:">
  698. <el-input v-model="detailForm.secret" placeholder="请输入微信Secret" size="small"></el-input>
  699. </el-form-item>
  700. </div>
  701. <div v-if="type=='App'">
  702. <el-form-item label="AppID:">
  703. <el-input v-model="detailForm.app_id" placeholder="请输入AppID" size="small"></el-input>
  704. </el-form-item>
  705. <el-form-item label="AppSecret:">
  706. <el-input v-model="detailForm.secret" placeholder="请输入AppSecret" size="small"></el-input>
  707. </el-form-item>
  708. </div>
  709. <div v-if="type=='wechat'">
  710. <el-form-item label="应用平台:" v-if="detailForm.platform">
  711. <el-checkbox-group v-model="detailForm.platform">
  712. <el-checkbox label="wxOfficialAccount">微信公众号</el-checkbox>
  713. <el-checkbox label="wxMiniProgram">小程序</el-checkbox>
  714. <el-checkbox label="H5">H5</el-checkbox>
  715. <el-checkbox label="App">App</el-checkbox>
  716. </el-checkbox-group>
  717. </el-form-item>
  718. <el-form-item label="商户类型:">
  719. <el-radio-group v-model="detailForm.mode" @change="changeWechatType">
  720. <el-radio label="normal">普通商户</el-radio>
  721. <el-radio label="service">服务商</el-radio>
  722. </el-radio-group>
  723. </el-form-item>
  724. <div v-if="detailForm.mode=='normal'">
  725. <el-form-item label="商户号:">
  726. <el-input v-model="detailForm.mch_id" placeholder="请输入商户号" size="small"></el-input>
  727. </el-form-item>
  728. <el-form-item label="支付密钥:">
  729. <el-input v-model="detailForm.key" placeholder="请输入支付密钥" size="small"></el-input>
  730. </el-form-item>
  731. <el-form-item label="商户证书:">
  732. <el-input class="local-ajax-upload-wrap" v-model="detailForm.cert_client" placeholder="请选择商户证书"
  733. size="small">
  734. <template slot="append">
  735. <label for="cert_client">上传</label>
  736. <input class="local-ajax-upload" id="cert_client" type="file"
  737. @change="ajaxUpload('cert_client')">
  738. </template>
  739. </el-input>
  740. </el-form-item>
  741. <el-form-item label="商户Key证书:">
  742. <el-input class="local-ajax-upload-wrap" v-model="detailForm.cert_key" placeholder="请选择商户Key证书"
  743. size="small">
  744. <template slot="append">
  745. <label for="cert_key">上传</label>
  746. <input class="local-ajax-upload" id="cert_key" type="file" @change="ajaxUpload('cert_key')">
  747. </template>
  748. </el-input>
  749. </el-form-item>
  750. </div>
  751. <div v-if="detailForm.mode=='service'">
  752. <el-form-item label="主商户号:">
  753. <el-input v-model="detailForm.mch_id" placeholder="请输入主商户号" size="small"></el-input>
  754. </el-form-item>
  755. <el-form-item label="子商户号:">
  756. <el-input v-model="detailForm.sub_mch_id" placeholder="请输入子商户号" size="small"></el-input>
  757. </el-form-item>
  758. <el-form-item label="主商户支付秘钥:">
  759. <el-input v-model="detailForm.key" placeholder="请输入主商户支付秘钥" size="small"></el-input>
  760. </el-form-item>
  761. <el-form-item
  762. v-if="detailForm.platform.includes('wxOfficialAccount') || detailForm.platform.includes('H5')"
  763. label="主商户公众号AppId:">
  764. <el-input v-model="detailForm.app_id" placeholder="请输入主商户公众号AppId" size="small"></el-input>
  765. </el-form-item>
  766. <el-form-item v-if="detailForm.platform.includes('wxMiniProgram')" label="主商户小程序AppId:">
  767. <el-input v-model="detailForm.miniapp_id" placeholder="请输入主商户小程序AppId" size="small"></el-input>
  768. </el-form-item>
  769. <el-form-item v-if="detailForm.platform.includes('App')" label="主商户开放平台AppId:">
  770. <el-input v-model="detailForm.appid" placeholder="请输入主商户开放平台AppId" size="small"></el-input>
  771. </el-form-item>
  772. <el-form-item label="主商户证书:">
  773. <el-input class="local-ajax-upload-wrap" v-model="detailForm.cert_client" placeholder="请选择主商户证书"
  774. size="small">
  775. <template slot="append">
  776. <label for="cert_client">上传</label>
  777. <input class="local-ajax-upload" id="cert_client" type="file"
  778. @change="ajaxUpload('cert_client')">
  779. </template>
  780. </el-input>
  781. </el-form-item>
  782. <el-form-item label="主商户Key证书:">
  783. <el-input class="local-ajax-upload-wrap" v-model="detailForm.cert_key" placeholder="请选择主商户Key证书"
  784. size="small">
  785. <template slot="append">
  786. <label for="cert_key">上传</label>
  787. <input class="local-ajax-upload" id="cert_key" type="file" @change="ajaxUpload('cert_key')">
  788. </template>
  789. </el-input>
  790. </el-form-item>
  791. </div>
  792. </div>
  793. <div v-if="type=='alipay'">
  794. <el-form-item label="应用平台:" v-if="detailForm.platform">
  795. <el-checkbox-group v-model="detailForm.platform">
  796. <el-checkbox label="wxOfficialAccount">微信公众号</el-checkbox>
  797. <el-checkbox label="wxMiniProgram">小程序</el-checkbox>
  798. <el-checkbox label="H5">H5</el-checkbox>
  799. <el-checkbox label="App">App</el-checkbox>
  800. </el-checkbox-group>
  801. </el-form-item>
  802. <el-form-item label="商户类型:">
  803. <el-radio-group v-model="detailForm.mode" @change="changeWechatType">
  804. <el-radio label="normal">普通商户</el-radio>
  805. <el-radio label="service">服务商</el-radio>
  806. </el-radio-group>
  807. </el-form-item>
  808. <el-form-item v-if="detailForm.mode=='service'" label="主商户Pid:">
  809. <el-input v-model="detailForm.pid" placeholder="请输入主商户Pid" size="small">
  810. </el-input>
  811. </el-form-item>
  812. <el-form-item label="AppId:">
  813. <el-input v-model="detailForm.app_id" placeholder="请输入AppId" size="small"></el-input>
  814. </el-form-item>
  815. <el-form-item label="支付宝公钥证书:">
  816. <el-input class="local-ajax-upload-wrap" v-model="detailForm.ali_public_key" placeholder="请选择支付宝公钥证书"
  817. size="small">
  818. <template slot="append">
  819. <label for="ali_public_key">上传</label>
  820. <input class="local-ajax-upload" id="ali_public_key" type="file"
  821. @change="ajaxUpload('ali_public_key')">
  822. </template>
  823. </el-input>
  824. <div class="form-item-tip">alipayCertPublicKey_RSA2.crt</div>
  825. </el-form-item>
  826. <el-form-item label="应用公钥证书:">
  827. <el-input class="local-ajax-upload-wrap" v-model="detailForm.app_cert_public_key" placeholder="请选择商户证书"
  828. size="small">
  829. <template slot="append">
  830. <label for="app_cert_public_key">上传</label>
  831. <input class="local-ajax-upload" id="app_cert_public_key" type="file"
  832. @change="ajaxUpload('app_cert_public_key')">
  833. </template>
  834. </el-input>
  835. <div class="form-item-tip">appCertPublicKey_*.crt</div>
  836. </el-form-item>
  837. <el-form-item label="支付宝根证书:">
  838. <el-input class="local-ajax-upload-wrap" v-model="detailForm.alipay_root_cert" placeholder="请选择商户Key证书"
  839. size="small">
  840. <template slot="append">
  841. <label for="alipay_root_cert">上传</label>
  842. <input class="local-ajax-upload" id="alipay_root_cert" type="file"
  843. @change="ajaxUpload('alipay_root_cert')">
  844. </template>
  845. </el-input>
  846. <div class="form-item-tip">alipayRootCert.crt</div>
  847. </el-form-item>
  848. <el-form-item label="private_key:">
  849. <el-input v-model="detailForm.private_key" placeholder="请输入private_key" size="small">
  850. </el-input>
  851. </el-form-item>
  852. </div>
  853. <div v-if="type=='wallet'">
  854. <el-form-item label="应用平台:">
  855. <el-checkbox-group v-model="detailForm.platform" v-if="detailForm.platform">
  856. <el-checkbox label="wxOfficialAccount">微信公众号</el-checkbox>
  857. <el-checkbox label="wxMiniProgram">小程序</el-checkbox>
  858. <el-checkbox label="H5">H5</el-checkbox>
  859. <el-checkbox label="App">App</el-checkbox>
  860. </el-checkbox-group>
  861. </el-form-item>
  862. </div>
  863. </el-form>
  864. <div class="dialog-footer">
  865. <div @click="submitFrom" class="dialog-cancel-btn display-flex-c cursor-pointer">取消</div>
  866. <div @click="submitFrom('yes')" class="dialog-define-btn display-flex-c cursor-pointer">确定
  867. </div>
  868. </div>
  869. </div>