index.vue 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348
  1. <template>
  2. <div class="app-container">
  3. <el-tabs v-model="step">
  4. <el-tab-pane label="商户信息" name="first"></el-tab-pane>
  5. <el-tab-pane label="商城配置信息" name="second"></el-tab-pane>
  6. <el-tab-pane label="微信配置信息" name="third"></el-tab-pane>
  7. <el-tab-pane label="结算配置信息" name="four"></el-tab-pane>
  8. <el-tab-pane label="移动端二维码" name="five"></el-tab-pane>
  9. </el-tabs>
  10. <div v-show="step == 'first'">
  11. <el-card>
  12. <div slot="header" class="clearfix">
  13. <span>商户信息</span>
  14. </div>
  15. <el-form
  16. class="my-form"
  17. ref="step1Form"
  18. :model="step1Form"
  19. label-width="130px"
  20. label-position="right"
  21. size="mini"
  22. >
  23. <el-row :gutter="20">
  24. <el-col :span="6">
  25. <el-form-item label="商户账号" prop="account">
  26. <el-input v-model="step1Form.account" disabled></el-input>
  27. </el-form-item>
  28. </el-col>
  29. <el-col :span="6">
  30. <el-form-item label="账户昵称" prop="nickName">
  31. <el-input v-model="step1Form.nickName" disabled></el-input>
  32. </el-form-item>
  33. </el-col>
  34. <el-col :span="6">
  35. <el-form-item label="小程序名称" prop="appName">
  36. <el-input v-model="step1Form.appName" disabled></el-input>
  37. </el-form-item>
  38. </el-col>
  39. <el-col :span="6">
  40. <el-form-item label="负责人" prop="chargePerson">
  41. <el-input v-model="step1Form.chargePerson" disabled></el-input>
  42. </el-form-item>
  43. </el-col>
  44. <el-col :span="6">
  45. <el-form-item label="联系电话" prop="phone">
  46. <el-input v-model="step1Form.phone" disabled></el-input>
  47. </el-form-item>
  48. </el-col>
  49. <el-col :span="6">
  50. <el-form-item label="电子邮箱" prop="email">
  51. <el-input v-model="step1Form.email" disabled></el-input>
  52. </el-form-item>
  53. </el-col>
  54. <el-col :span="12">
  55. <el-form-item label="地址" prop="address">
  56. <el-input v-model="step1Form.address" disabled></el-input>
  57. </el-form-item>
  58. </el-col>
  59. <el-col :span="6">
  60. <el-form-item label="登录密码" prop="password">
  61. <el-input v-model="step1Form.password" type="password" disabled>
  62. <el-button slot="append" @click="handleReset()">重置密码</el-button>
  63. </el-input>
  64. </el-form-item>
  65. </el-col>
  66. <el-col :span="6">
  67. <el-form-item label="打印单名称" prop="billTitle">
  68. <el-input v-model="step1Form.billTitle" placeholder="请输入"></el-input>
  69. </el-form-item>
  70. </el-col>
  71. <el-col :span="12">
  72. <el-form-item label="到期时间" prop="companyExpireTime">
  73. <el-date-picker
  74. :disabled="!~[2].indexOf(userType)"
  75. v-model="step1Form.companyExpireTime"
  76. type="datetime"
  77. value-format="yyyy-MM-dd HH:mm:ss"
  78. placeholder="选择日期时间"
  79. >
  80. </el-date-picker>
  81. <el-button :disabled="!~[2].indexOf(userType)" type="primary" @click="saveTime()">保存</el-button>
  82. </el-form-item>
  83. </el-col>
  84. <el-col :span="6">
  85. <el-form-item label="辅材配件权限" prop="moduleMaterialPart">
  86. <el-radio-group v-model="step1Form.moduleMaterialPart">
  87. <el-radio :label="true">开启</el-radio>
  88. <el-radio :label="false">禁用</el-radio>
  89. </el-radio-group>
  90. </el-form-item>
  91. </el-col>
  92. <el-col :span="6">
  93. <el-form-item label="延保权限" prop="moduleYb">
  94. <el-radio-group v-model="step1Form.moduleYb">
  95. <el-radio :label="true">开启</el-radio>
  96. <el-radio :label="false">禁用</el-radio>
  97. </el-radio-group>
  98. </el-form-item>
  99. </el-col>
  100. <el-col :span="6">
  101. <el-form-item label="工程维保权限" prop="moduleWb">
  102. <el-radio-group v-model="step1Form.moduleWb">
  103. <el-radio :label="true">开启</el-radio>
  104. <el-radio :label="false">禁用</el-radio>
  105. </el-radio-group>
  106. </el-form-item>
  107. </el-col>
  108. <el-col :span="6">
  109. <el-form-item label="库存管理方式" prop="joinCode">
  110. <el-radio-group v-model="step1Form.joinCode">
  111. <el-radio label="NO">不管理</el-radio>
  112. <el-radio label="NUM">管数量</el-radio>
  113. <el-radio label="CODE">管条码</el-radio>
  114. </el-radio-group>
  115. </el-form-item>
  116. </el-col>
  117. <el-col :span="6">
  118. <el-form-item label="租赁业务" prop="moduleZl">
  119. <el-radio-group v-model="step1Form.moduleZl">
  120. <el-radio :label="true">开启</el-radio>
  121. <el-radio :label="false">禁用</el-radio>
  122. </el-radio-group>
  123. </el-form-item>
  124. </el-col>
  125. <el-col :span="6">
  126. <el-form-item label="二手商城" prop="moduleEs">
  127. <el-radio-group v-model="step1Form.moduleEs">
  128. <el-radio :label="true">开启</el-radio>
  129. <el-radio :label="false">禁用</el-radio>
  130. </el-radio-group>
  131. </el-form-item>
  132. </el-col>
  133. <el-col :span="6">
  134. <el-form-item label="是否允许到店支付" prop="storePay">
  135. <el-radio-group v-model="step1Form.storePay">
  136. <el-radio :label="true">开启</el-radio>
  137. <el-radio :label="false">禁用</el-radio>
  138. </el-radio-group>
  139. </el-form-item>
  140. </el-col>
  141. <el-col :span="6">
  142. <el-form-item label="商户属性" prop="companyType">
  143. <el-radio-group v-model="step1Form.companyType">
  144. <el-radio :label="1">销售</el-radio>
  145. <el-radio :label="2">售后</el-radio>
  146. </el-radio-group>
  147. </el-form-item>
  148. </el-col>
  149. <el-col :span="12">
  150. <el-form-item label="以旧换新抵扣方式" prop="yjhxDkFlag">
  151. <el-radio-group v-model="step1Form.yjhxDkFlag">
  152. <el-radio :label="1">线上支付抵扣订单货款</el-radio>
  153. <el-radio :label="2">仅线上展示旧机价格</el-radio>
  154. </el-radio-group>
  155. </el-form-item>
  156. </el-col>
  157. <el-col :span="24">
  158. <div style="margin-bottom: 20px">
  159. 小程序底部菜单排序 <span style="color: #fb8c45; margin-left: 20px"> 数字越小越靠前</span>
  160. </div>
  161. <el-table
  162. :data="step1Form.appModuleJson"
  163. style="width: 50%"
  164. element-loading-text="Loading"
  165. border
  166. fit
  167. highlight-current-row
  168. stripe
  169. >
  170. <el-table-column prop="" align="center" label="类型">
  171. <template slot-scope="scope">
  172. {{ typeFilter(scope.row.type) }}
  173. </template>
  174. </el-table-column>
  175. <el-table-column prop="" align="center" label="名称">
  176. <template slot-scope="scope">
  177. <el-form-item
  178. :prop="'appModuleJson.' + scope.$index + '.name'"
  179. :rules="[{ required: true, message: `请输入名称`, trigger: 'blur' }]"
  180. label-width="0"
  181. >
  182. <el-input type="text" v-model="scope.row.name" placeholder="请输入"></el-input>
  183. </el-form-item>
  184. </template>
  185. </el-table-column>
  186. <el-table-column prop="" align="center" label="排序">
  187. <template slot-scope="scope">
  188. <el-form-item
  189. :prop="'appModuleJson.' + scope.$index + '.sort'"
  190. :rules="[{ required: true, message: `请输入排序`, trigger: 'blur' }]"
  191. label-width="0"
  192. >
  193. <el-input type="number" v-model="scope.row.sort" placeholder="请输入"></el-input>
  194. </el-form-item>
  195. </template>
  196. </el-table-column>
  197. </el-table>
  198. </el-col>
  199. </el-row>
  200. </el-form>
  201. </el-card>
  202. </div>
  203. <div v-show="step == 'second'">
  204. <el-form label-width="100px" label-position="right">
  205. <el-upload
  206. class="avatar-uploader"
  207. :action="baseURL + 'common/upload'"
  208. :headers="myHeaders"
  209. :show-file-list="false"
  210. :on-success="uploadSuccess"
  211. :before-upload="beforeUpload"
  212. >
  213. </el-upload>
  214. <el-form-item label="主logo" prop="imgUrl">
  215. <div class="images">
  216. <div class="main-img">
  217. <div class="img" v-if="img1_url" @mouseover="img1_hover = true" @mouseout="img1_hover = false">
  218. <el-image
  219. ref="img1"
  220. :src="$showImgUrl(img1_url)"
  221. :preview-src-list="[$showImgUrl(img1_url)]"
  222. style="width: 120px; height: 120px"
  223. fit="contain"
  224. ></el-image>
  225. <div class="mask" v-show="img1_hover">
  226. <i class="el-icon-zoom-in" @click="previewImage('img1')"></i>
  227. <i class="el-icon-upload2" @click="uploadImage('img1')"></i>
  228. <i class="el-icon-delete" @click="img1_url = ''"></i>
  229. </div>
  230. </div>
  231. <div class="add" v-else @click="uploadImage('img1')">
  232. <i class="el-icon-plus avatar-uploader-icon"></i>
  233. </div>
  234. </div>
  235. <div class="tmp-img">
  236. <el-image
  237. :src="require('@/assets/template/template_1.png')"
  238. :preview-src-list="[require('@/assets/template/template_1.png')]"
  239. style="width: 120px; height: 120px; display: block"
  240. fit="contain"
  241. ></el-image>
  242. <div class="tmp">示例图</div>
  243. </div>
  244. </div>
  245. <div class="tips">
  246. <span>建议尺寸:400*400</span>
  247. </div>
  248. </el-form-item>
  249. <el-form-item label="通用logo" prop="imgUrl">
  250. <div class="images">
  251. <div class="main-img">
  252. <div class="img" v-if="img2_url" @mouseover="img2_hover = true" @mouseout="img2_hover = false">
  253. <el-image
  254. ref="img2"
  255. :src="$showImgUrl(img2_url)"
  256. :preview-src-list="[$showImgUrl(img2_url)]"
  257. style="width: 120px; height: 120px"
  258. fit="contain"
  259. ></el-image>
  260. <div class="mask" v-show="img2_hover">
  261. <i class="el-icon-zoom-in" @click="previewImage('img2')"></i>
  262. <i class="el-icon-upload2" @click="uploadImage('img2')"></i>
  263. <i class="el-icon-delete" @click="img2_url = ''"></i>
  264. </div>
  265. </div>
  266. <div class="add" v-else @click="uploadImage('img2')">
  267. <i class="el-icon-plus avatar-uploader-icon"></i>
  268. </div>
  269. </div>
  270. <div class="tmp-img">
  271. <el-image
  272. :src="require('@/assets/template/template_2.png')"
  273. :preview-src-list="[require('@/assets/template/template_2.png')]"
  274. style="width: 120px; height: 120px; display: block"
  275. fit="contain"
  276. ></el-image>
  277. <div class="tmp">示例图</div>
  278. </div>
  279. </div>
  280. <div class="tips">
  281. <span>建议尺寸:280*60</span>
  282. </div>
  283. </el-form-item>
  284. <el-form-item label="头像logo" prop="imgUrl">
  285. <div class="images">
  286. <div class="main-img">
  287. <div class="img" v-if="img3_url" @mouseover="img3_hover = true" @mouseout="img3_hover = false">
  288. <el-image
  289. ref="img3"
  290. :src="$showImgUrl(img3_url)"
  291. :preview-src-list="[$showImgUrl(img3_url)]"
  292. style="width: 120px; height: 120px"
  293. fit="contain"
  294. ></el-image>
  295. <div class="mask" v-show="img3_hover">
  296. <i class="el-icon-zoom-in" @click="previewImage('img3')"></i>
  297. <i class="el-icon-upload2" @click="uploadImage('img3')"></i>
  298. <i class="el-icon-delete" @click="img3_url = ''"></i>
  299. </div>
  300. </div>
  301. <div class="add" v-else @click="uploadImage('img3')">
  302. <i class="el-icon-plus avatar-uploader-icon"></i>
  303. </div>
  304. </div>
  305. <div class="tmp-img">
  306. <el-image
  307. :src="require('@/assets/template/template_3.png')"
  308. :preview-src-list="[require('@/assets/template/template_3.png')]"
  309. style="width: 120px; height: 120px; display: block"
  310. fit="contain"
  311. ></el-image>
  312. <div class="tmp">示例图</div>
  313. </div>
  314. </div>
  315. <div class="tips">
  316. <span>建议尺寸:400*400</span>
  317. </div>
  318. </el-form-item>
  319. </el-form>
  320. </div>
  321. <div v-show="step == 'third'">
  322. <el-card>
  323. <div slot="header" class="clearfix">
  324. <span>微信配置信息</span>
  325. </div>
  326. <el-form
  327. class="my-form2"
  328. ref="step3Form"
  329. :model="step3Form"
  330. :rules="step3FormRules"
  331. label-width="130px"
  332. size="mini"
  333. >
  334. <el-row :gutter="20">
  335. <el-col :span="6">
  336. <el-form-item label="服务商appId" prop="appId">
  337. <el-input
  338. :disabled="!~[2].indexOf(userType)"
  339. v-model="step3Form.appId"
  340. autocomplete="off"
  341. placeholder="请输入服务商appId"
  342. ></el-input>
  343. </el-form-item>
  344. </el-col>
  345. <el-col :span="6">
  346. <el-form-item label="服务商商户号" prop="merchantId">
  347. <el-input
  348. :disabled="!~[2].indexOf(userType)"
  349. v-model="step3Form.merchantId"
  350. autocomplete="off"
  351. placeholder="请输入服务商商户号"
  352. ></el-input>
  353. </el-form-item>
  354. </el-col>
  355. <el-col :span="6">
  356. <el-form-item label="服务商商户密钥" prop="merchantKey">
  357. <el-input
  358. :disabled="!~[2].indexOf(userType)"
  359. v-model="step3Form.merchantKey"
  360. autocomplete="off"
  361. placeholder="请输入服务商商户密钥"
  362. ></el-input>
  363. </el-form-item>
  364. </el-col>
  365. <el-col :span="6">
  366. <el-form-item label="小程序appid" prop="appletAppid">
  367. <el-input
  368. :disabled="!~[2].indexOf(userType)"
  369. v-model="step3Form.appletAppid"
  370. autocomplete="off"
  371. placeholder="请输入小程序appid"
  372. ></el-input>
  373. </el-form-item>
  374. </el-col>
  375. <el-col :span="6">
  376. <el-form-item label="小程序密钥" prop="appletSecret">
  377. <el-input
  378. :disabled="!~[2].indexOf(userType)"
  379. v-model="step3Form.appletSecret"
  380. autocomplete="off"
  381. placeholder="请输入小程序密钥"
  382. ></el-input>
  383. </el-form-item>
  384. </el-col>
  385. <el-col :span="6">
  386. <el-form-item label="子商户号Id" prop="childMerchantId">
  387. <el-input
  388. :disabled="!~[2].indexOf(userType)"
  389. v-model="step3Form.childMerchantId"
  390. autocomplete="off"
  391. placeholder="请输入子商户号Id"
  392. ></el-input>
  393. </el-form-item>
  394. </el-col>
  395. <el-col :span="6">
  396. <el-form-item label="微信订阅模版" prop="templateId">
  397. <el-input
  398. :disabled="!~[2].indexOf(userType)"
  399. v-model="step3Form.templateId"
  400. autocomplete="off"
  401. placeholder="请输入微信订阅模版"
  402. ></el-input>
  403. </el-form-item>
  404. </el-col>
  405. <el-col :span="6">
  406. <el-form-item label="公众号appid" prop="pubAppId">
  407. <el-input
  408. :disabled="!~[2].indexOf(userType)"
  409. v-model="step3Form.pubAppId"
  410. autocomplete="off"
  411. placeholder="请输入公众号appid"
  412. ></el-input>
  413. </el-form-item>
  414. </el-col>
  415. <el-col :span="6">
  416. <el-form-item label="公众号密钥" prop="pubAppSecret">
  417. <el-input
  418. :disabled="!~[2].indexOf(userType)"
  419. v-model="step3Form.pubAppSecret"
  420. autocomplete="off"
  421. placeholder="请输入公众号密钥"
  422. ></el-input>
  423. </el-form-item>
  424. </el-col>
  425. <el-col :span="6">
  426. <el-form-item label="改派通知" prop="pubTemplateId1">
  427. <el-input
  428. :disabled="!~[2].indexOf(userType)"
  429. v-model="step3Form.pubTemplateId1"
  430. autocomplete="off"
  431. placeholder="请输入工单派工,改派通知"
  432. ></el-input>
  433. </el-form-item>
  434. </el-col>
  435. <el-col :span="6">
  436. <el-form-item label="发货通知" prop="pubTemplateId2">
  437. <el-input
  438. :disabled="!~[2].indexOf(userType)"
  439. v-model="step3Form.pubTemplateId2"
  440. autocomplete="off"
  441. placeholder="请输入商城订单支付成功提醒发货通知"
  442. ></el-input>
  443. </el-form-item>
  444. </el-col>
  445. <el-col :span="6">
  446. <el-form-item label="维权订单提醒" prop="pubTemplateId3">
  447. <el-input
  448. :disabled="!~[2].indexOf(userType)"
  449. v-model="step3Form.pubTemplateId3"
  450. autocomplete="off"
  451. placeholder="请输入商城维权订单提醒"
  452. ></el-input>
  453. </el-form-item>
  454. </el-col>
  455. <el-col :span="6">
  456. <el-form-item label="支付成功通知" prop="pubTemplateId4">
  457. <el-input
  458. :disabled="!~[2].indexOf(userType)"
  459. v-model="step3Form.pubTemplateId4"
  460. autocomplete="off"
  461. placeholder="请输入订单支付成功(含全部销售订单和延保)"
  462. ></el-input>
  463. </el-form-item>
  464. </el-col>
  465. <el-col :span="6">
  466. <el-form-item label="维保费用申请" prop="pubTemplateId5">
  467. <el-input
  468. :disabled="!~[2].indexOf(userType)"
  469. v-model="step3Form.pubTemplateId5"
  470. autocomplete="off"
  471. placeholder="请输入维保的费用申请"
  472. ></el-input>
  473. </el-form-item>
  474. </el-col>
  475. <el-col :span="6">
  476. <el-form-item label="安维费用发放通知" prop="pubTemplateId6">
  477. <el-input
  478. :disabled="!~[2].indexOf(userType)"
  479. v-model="step3Form.pubTemplateId6"
  480. autocomplete="off"
  481. placeholder="请输入安维费用发放通知"
  482. ></el-input>
  483. </el-form-item>
  484. </el-col>
  485. <el-col :span="6">
  486. <el-form-item label="抢单新单通知" prop="pubTemplateId7">
  487. <el-input
  488. :disabled="!~[2].indexOf(userType)"
  489. v-model="step3Form.pubTemplateId7"
  490. autocomplete="off"
  491. placeholder="请输入抢单新单通知"
  492. ></el-input>
  493. </el-form-item>
  494. </el-col>
  495. <el-col :span="6">
  496. <el-form-item label="配件到货通知" prop="pubTemplateId8">
  497. <el-input
  498. :disabled="!~[2].indexOf(userType)"
  499. v-model="step3Form.pubTemplateId8"
  500. autocomplete="off"
  501. placeholder="请输入配件到货通知"
  502. ></el-input>
  503. </el-form-item>
  504. </el-col>
  505. </el-row>
  506. </el-form>
  507. </el-card>
  508. </div>
  509. <div v-show="step == 'four'">
  510. <el-form ref="step4Form" :model="step4Form" :rules="step4FormRules" label-width="120px" label-position="right">
  511. <h4>说明:将按照T+N天自动把销售订单“待结算”状态转为“可提现”状态,T为订单支付成功的日期。</h4>
  512. <h5>自动结算频率</h5>
  513. <el-form-item label="N等于" prop="dayNum">
  514. <el-input
  515. v-model="step4Form.dayNum"
  516. style="width: 220px; margin-right: 20px"
  517. autocomplete="off"
  518. placeholder="请输入天数"
  519. type="number"
  520. ></el-input>
  521. 天<span style="color: #ea8000; margin-left: 30px"
  522. >将在订单支付成功后T+{{ step4Form.dayNum }}天{{ step4Form.hourTime }}执行一次</span
  523. >
  524. </el-form-item>
  525. <el-form-item label="执行时间" prop="hourTime">
  526. <el-time-picker v-model="step4Form.hourTime" value-format="HH:mm:ss" placeholder="选择执行时间">
  527. </el-time-picker>
  528. </el-form-item>
  529. <el-form-item label="手续费承担方式" prop="isShareTax" class="is-required">
  530. <el-radio-group v-model="step4Form.isShareTax">
  531. <el-radio :label="false">商户承担</el-radio>
  532. <el-radio :label="true">各自承担</el-radio>
  533. </el-radio-group>
  534. </el-form-item>
  535. </el-form>
  536. </div>
  537. <div v-show="step == 'five'">
  538. <el-form label-width="100px" label-position="right">
  539. <el-upload
  540. class="avatar-uploader"
  541. :action="baseURL + 'common/upload'"
  542. :headers="myHeaders"
  543. :show-file-list="false"
  544. :on-success="uploadSuccess"
  545. :before-upload="beforeUpload"
  546. >
  547. </el-upload>
  548. <el-form-item label="小程序" prop="imgUrl">
  549. <div class="images">
  550. <div class="main-img">
  551. <div class="img" v-if="qrcode1_url" @mouseover="qrcode1_hover = true" @mouseout="qrcode1_hover = false">
  552. <el-image
  553. ref="qrcode1"
  554. :src="$showImgUrl(qrcode1_url)"
  555. :preview-src-list="[$showImgUrl(qrcode1_url)]"
  556. style="width: 120px; height: 120px"
  557. fit="contain"
  558. ></el-image>
  559. <div class="mask" v-show="qrcode1_hover">
  560. <i class="el-icon-zoom-in" @click="previewImage('qrcode1')"></i>
  561. <i class="el-icon-upload2" @click="uploadImage('qrcode1')"></i>
  562. <i class="el-icon-delete" @click="qrcode1_url = ''"></i>
  563. </div>
  564. </div>
  565. <div class="add" v-else @click="uploadImage('qrcode1')">
  566. <i class="el-icon-plus avatar-uploader-icon"></i>
  567. </div>
  568. </div>
  569. </div>
  570. <div class="tips">
  571. <span>建议尺寸:400*400</span>
  572. </div>
  573. </el-form-item>
  574. <el-form-item label="公众号" prop="imgUrl">
  575. <div class="images">
  576. <div class="main-img">
  577. <div class="img" v-if="qrcode2_url" @mouseover="qrcode2_hover = true" @mouseout="qrcode2_hover = false">
  578. <el-image
  579. ref="qrcode2"
  580. :src="$showImgUrl(qrcode2_url)"
  581. :preview-src-list="[$showImgUrl(qrcode2_url)]"
  582. style="width: 120px; height: 120px"
  583. fit="contain"
  584. ></el-image>
  585. <div class="mask" v-show="qrcode2_hover">
  586. <i class="el-icon-zoom-in" @click="previewImage('qrcode2')"></i>
  587. <i class="el-icon-upload2" @click="uploadImage('qrcode2')"></i>
  588. <i class="el-icon-delete" @click="qrcode2_url = ''"></i>
  589. </div>
  590. </div>
  591. <div class="add" v-else @click="uploadImage('qrcode2')">
  592. <i class="el-icon-plus avatar-uploader-icon"></i>
  593. </div>
  594. </div>
  595. </div>
  596. <div class="tips">
  597. <span>建议尺寸:400*400</span>
  598. </div>
  599. </el-form-item>
  600. <el-form-item label="收款二维码" prop="imgUrl">
  601. <div class="images">
  602. <div class="main-img">
  603. <div class="img" v-if="qrcode3_url" @mouseover="qrcode3_hover = true" @mouseout="qrcode3_hover = false">
  604. <el-image
  605. ref="qrcode3"
  606. :src="$showImgUrl(qrcode3_url)"
  607. :preview-src-list="[$showImgUrl(qrcode3_url)]"
  608. style="width: 120px; height: 120px"
  609. fit="contain"
  610. ></el-image>
  611. <div class="mask" v-show="qrcode3_hover">
  612. <i class="el-icon-zoom-in" @click="previewImage('qrcode3')"></i>
  613. <i class="el-icon-upload2" @click="uploadImage('qrcode3')"></i>
  614. <i class="el-icon-delete" @click="qrcode3_url = ''"></i>
  615. </div>
  616. </div>
  617. <div class="add" v-else @click="uploadImage('qrcode3')">
  618. <i class="el-icon-plus avatar-uploader-icon"></i>
  619. </div>
  620. </div>
  621. </div>
  622. <div class="tips">
  623. <span>建议尺寸:400*400</span>
  624. </div>
  625. </el-form-item>
  626. </el-form>
  627. </div>
  628. <div class="page-footer">
  629. <div class="footer" :class="classObj">
  630. <el-button type="primary" @click="submitStep1Form" :loading="formLoading" v-if="step == 'first'">{{
  631. formLoading ? '保存中 ...' : '保 存'
  632. }}</el-button>
  633. <el-button type="primary" @click="submitStep2Form" :loading="formLoading" v-if="step == 'second'">{{
  634. formLoading ? '保存中 ...' : '保 存'
  635. }}</el-button>
  636. <el-button type="primary" @click="submitStep3Form" :loading="formLoading" v-if="step == 'third'">{{
  637. formLoading ? '保存中 ...' : '保 存'
  638. }}</el-button>
  639. <el-button type="primary" @click="submitStep4Form" :loading="formLoading" v-if="step == 'four'">{{
  640. formLoading ? '保存中 ...' : '保 存'
  641. }}</el-button>
  642. <el-button type="primary" @click="submitStep5Form" :loading="formLoading" v-if="step == 'five'">{{
  643. formLoading ? '保存中 ...' : '保 存'
  644. }}</el-button>
  645. <el-popconfirm title="确定关闭吗?" @confirm="goBack" style="margin-left: 10px">
  646. <el-button slot="reference">关 闭</el-button>
  647. </el-popconfirm>
  648. </div>
  649. </div>
  650. <!-- 重置密码 -->
  651. <el-dialog
  652. title="重置密码"
  653. :visible.sync="resetFormVisible"
  654. :show-close="false"
  655. width="40%"
  656. :close-on-click-modal="false"
  657. >
  658. <el-form ref="resetForm" :model="resetForm" :rules="resetFormRules" label-position="left" label-width="100px">
  659. <el-form-item label="输入新密码" prop="newPassword">
  660. <el-input
  661. v-model="resetForm.newPassword"
  662. ref="password1"
  663. autocomplete="off"
  664. placeholder="请输入新密码"
  665. :type="passwordType1"
  666. ></el-input>
  667. <span class="show-pwd" @click="showPwd(1)">
  668. <svg-icon :icon-class="passwordType1 === 'password' ? 'eye' : 'eye-open'" />
  669. </span>
  670. </el-form-item>
  671. <el-form-item label="确认密码" prop="confirmPassword">
  672. <el-input
  673. v-model="resetForm.confirmPassword"
  674. ref="password2"
  675. autocomplete="off"
  676. placeholder="请再次输入新密码"
  677. :type="passwordType2"
  678. ></el-input>
  679. <span class="show-pwd" @click="showPwd(2)">
  680. <svg-icon :icon-class="passwordType2 === 'password' ? 'eye' : 'eye-open'" />
  681. </span>
  682. </el-form-item>
  683. </el-form>
  684. <div slot="footer" class="dialog-footer">
  685. <el-button @click="cancelResetForm">取 消</el-button>
  686. <el-button type="primary" @click="submitResetForm">确 定</el-button>
  687. </div>
  688. </el-dialog>
  689. </div>
  690. </template>
  691. <script>
  692. import { getToken } from '@/utils/auth'
  693. import { getDetail, resetPassword, editAccount } from '@/api/merchant'
  694. import request from '@/utils/request'
  695. export default {
  696. data() {
  697. var validatePass = (rule, value, callback) => {
  698. if (value === '') {
  699. callback(new Error('请输入登录密码'))
  700. } else if (value.length < 12) {
  701. callback(new Error('密码长度至少12位'))
  702. } else if (/[A-Za-z].*[0-9]|[0-9].*[A-Za-z]/.test(value) == false) {
  703. callback(new Error('密码必须包含数字和字母'))
  704. } else {
  705. if (this.resetForm.confirmPassword !== '') {
  706. this.$refs.resetForm.validateField('confirmPassword')
  707. }
  708. callback()
  709. }
  710. }
  711. var validatePass2 = (rule, value, callback) => {
  712. if (value === '') {
  713. callback(new Error('请再次输入密码'))
  714. } else if (value !== this.resetForm.newPassword) {
  715. callback(new Error('两次输入密码不一致'))
  716. } else {
  717. callback()
  718. }
  719. }
  720. return {
  721. baseURL: process.env.VUE_APP_BASE_API,
  722. myHeaders: { 'x-token': getToken() },
  723. id: null,
  724. companyWechatId: null,
  725. step: 'first',
  726. step1Form: {
  727. account: '', // 账号
  728. nickName: '', // 用户名
  729. appName: '', // 小程序名称
  730. chargePerson: '', // 负责人
  731. phone: '', // 联系电话
  732. email: '', // 电子邮箱
  733. address: '', // 地址
  734. newPassword: '', // 新密码
  735. confirmPassword: '', // 确认密码
  736. companyExpireTime: '',
  737. moduleMaterialPart: '',
  738. billTitle: '',
  739. moduleYb: '',
  740. moduleWb: '',
  741. joinCode: '',
  742. moduleZl: '',
  743. moduleEs: '',
  744. storePay: '',
  745. companyType: 2,
  746. yjhxDkFlag: '',
  747. appModuleJson: []
  748. },
  749. passwordType1: 'password',
  750. passwordType2: 'password',
  751. uploadImageType: null,
  752. img1_url: '',
  753. img1_hover: false,
  754. img2_url: '',
  755. img2_hover: false,
  756. img3_url: '',
  757. img3_hover: false,
  758. qrcode1_url: '',
  759. qrcode1_hover: false,
  760. qrcode2_url: '',
  761. qrcode2_hover: false,
  762. qrcode3_url: '',
  763. qrcode3_hover: false,
  764. resetFormVisible: false,
  765. resetForm: {
  766. newPassword: '', // 新密码
  767. confirmPassword: '' // 确认密码
  768. },
  769. resetFormRules: {
  770. newPassword: [{ required: true, validator: validatePass, trigger: 'blur' }],
  771. confirmPassword: [{ required: true, validator: validatePass2, trigger: 'blur' }]
  772. },
  773. step3Form: {
  774. enterpriseId: '',
  775. listSecret: '',
  776. listSyncSecret: '',
  777. appAgentId: '',
  778. appSecret: '',
  779. appId: '',
  780. merchantId: '',
  781. merchantKey: '',
  782. appletAppid: '',
  783. appletSecret: '',
  784. childMerchantId: '',
  785. templateId: '',
  786. pubAppId: '',
  787. pubAppSecret: '',
  788. pubTemplateId1: '',
  789. pubTemplateId2: '',
  790. pubTemplateId3: '',
  791. pubTemplateId4: '',
  792. pubTemplateId5: '',
  793. pubTemplateId6: '',
  794. pubTemplateId7: '',
  795. pubTemplateId8: ''
  796. },
  797. step3FormRules: {},
  798. step4Form: {
  799. dayNum: '',
  800. hourTime: '',
  801. isShareTax: false
  802. },
  803. step4FormRules: {
  804. dayNum: [{ required: true, message: '请输入天数', trigger: 'blur' }],
  805. hourTime: [{ required: true, message: '请选择执行时间', trigger: 'change' }]
  806. },
  807. formLoading: false
  808. }
  809. },
  810. computed: {
  811. sidebar() {
  812. return this.$store.state.app.sidebar
  813. },
  814. classObj() {
  815. return {
  816. hideSidebar: !this.sidebar.opened,
  817. openSidebar: this.sidebar.opened
  818. }
  819. },
  820. userType() {
  821. return JSON.parse(localStorage.getItem('greemall_user')).type
  822. },
  823. typeFilter() {
  824. return function (type) {
  825. let obj = {
  826. home: '首页',
  827. order: '工单',
  828. shop: '商城',
  829. my: '我的'
  830. }
  831. return obj[type]
  832. }
  833. }
  834. },
  835. created() {
  836. const { id, type } = this.$route.query
  837. this.id = id
  838. this.getDetail()
  839. if (type === 1) {
  840. this.step = 'first'
  841. } else if (type === 2) {
  842. this.step = 'second'
  843. } else if (type === 3) {
  844. this.step = 'third'
  845. }
  846. },
  847. methods: {
  848. goBack() {
  849. this.$router.go(-1)
  850. },
  851. // 获取详情
  852. getDetail() {
  853. getDetail({ adminUserId: this.id }).then(res => {
  854. this.step1Form.account = res.data.userName
  855. this.step1Form.nickName = res.data.nickName
  856. this.step1Form.appName = res.data.minAppName
  857. this.step1Form.chargePerson = res.data.linkName
  858. this.step1Form.phone = res.data.linkPhone
  859. this.step1Form.email = res.data.email
  860. this.step1Form.address = res.data.address
  861. this.step1Form.password = '************'
  862. this.step1Form.companyExpireTime = res.data.companyExpireTime
  863. this.step1Form.moduleMaterialPart = res.data.moduleMaterialPart
  864. this.step1Form.billTitle = res.data.billTitle
  865. this.step1Form.moduleYb = res.data.moduleYb
  866. this.step1Form.moduleWb = res.data.moduleWb
  867. this.step1Form.joinCode = res.data.joinCode
  868. this.step1Form.moduleZl = res.data.moduleZl
  869. this.step1Form.moduleEs = res.data.moduleEs
  870. this.step1Form.storePay = res.data.storePay
  871. this.step1Form.companyType = res.data.companyType
  872. this.step1Form.yjhxDkFlag = res.data.yjhxDkFlag
  873. this.step1Form.appModuleJson = JSON.parse(res.data.appModuleJson)
  874. this.img1_url = res.data.minLogo1
  875. this.img2_url = res.data.minLogo2
  876. this.img3_url = res.data.minLogo3
  877. this.qrcode1_url = res.data.qrcode1
  878. this.qrcode2_url = res.data.qrcode2
  879. this.qrcode3_url = res.data.payQrcode
  880. this.step3Form.enterpriseId = res.data.corpId
  881. this.step3Form.listSecret = res.data.secret2
  882. this.step3Form.listSyncSecret = res.data.secret3
  883. this.step3Form.appAgentId = res.data.agentId1
  884. this.step3Form.appSecret = res.data.secret1
  885. this.step3Form.appId = res.data.appId
  886. this.step3Form.merchantId = res.data.mchId
  887. this.step3Form.merchantKey = res.data.mchKey
  888. this.step3Form.appletAppid = res.data.appletAppid
  889. this.step3Form.appletSecret = res.data.appletSecret
  890. this.step3Form.childMerchantId = res.data.subMchId
  891. this.step3Form.templateId = res.data.template
  892. this.step3Form.pubAppId = res.data.pubAppId
  893. this.step3Form.pubAppSecret = res.data.pubAppSecret
  894. this.step3Form.pubTemplateId1 = res.data.pubTemplateId1
  895. this.step3Form.pubTemplateId2 = res.data.pubTemplateId2
  896. this.step3Form.pubTemplateId3 = res.data.pubTemplateId3
  897. this.step3Form.pubTemplateId4 = res.data.pubTemplateId4
  898. this.step3Form.pubTemplateId5 = res.data.pubTemplateId5
  899. this.step3Form.pubTemplateId6 = res.data.pubTemplateId6
  900. this.step3Form.pubTemplateId7 = res.data.pubTemplateId7
  901. this.step3Form.pubTemplateId8 = res.data.pubTemplateId8
  902. this.companyWechatId = res.data.companyWechatId
  903. this.step4Form.dayNum = res.data.dayNum
  904. this.step4Form.hourTime = res.data.hourTime
  905. this.step4Form.isShareTax = res.data.isShareTax
  906. })
  907. },
  908. // 重置密码
  909. handleReset(id) {
  910. this.resetId = id
  911. this.resetFormVisible = true
  912. },
  913. // 取消重置密码
  914. cancelResetForm() {
  915. this.resetFormVisible = false
  916. this.passwordType1 = 'password'
  917. this.passwordType2 = 'password'
  918. this.$refs.resetForm.resetFields()
  919. },
  920. saveTime() {
  921. request({
  922. url: '/admin/user/user/updateCompanyWechat',
  923. method: 'post',
  924. data: {
  925. expireTime: this.step1Form.companyExpireTime,
  926. companyWechatId: this.companyWechatId
  927. }
  928. }).then(res => {
  929. if (res.code == 200) {
  930. this.$successMsg('保存成功')
  931. this.getDetail()
  932. }
  933. })
  934. },
  935. // 提交重置密码
  936. submitResetForm() {
  937. this.$refs.resetForm.validate(valid => {
  938. if (valid) {
  939. let params = {
  940. password: this.resetForm.newPassword,
  941. adminUserId: this.id
  942. }
  943. resetPassword(params).then(res => {
  944. this.cancelResetForm()
  945. this.getDetail()
  946. this.$successMsg()
  947. })
  948. }
  949. })
  950. },
  951. // 显示隐藏密码
  952. showPwd(num) {
  953. if (num == 1) {
  954. if (this.passwordType1 === 'password') {
  955. this.passwordType1 = ''
  956. } else {
  957. this.passwordType1 = 'password'
  958. }
  959. this.$nextTick(() => {
  960. this.$refs.password1.focus()
  961. })
  962. }
  963. if (num == 2) {
  964. if (this.passwordType2 === 'password') {
  965. this.passwordType2 = ''
  966. } else {
  967. this.passwordType2 = 'password'
  968. }
  969. this.$nextTick(() => {
  970. this.$refs.password2.focus()
  971. })
  972. }
  973. },
  974. uploadImage(type) {
  975. this.uploadImageType = type
  976. document.querySelector('.avatar-uploader input').click()
  977. },
  978. // 上传图片
  979. uploadSuccess(res, file) {
  980. this[this.uploadImageType + '_url'] = res.data.url
  981. },
  982. beforeUpload(file) {
  983. const fileSuffix = file.name.substring(file.name.lastIndexOf('.') + 1)
  984. const whiteList = ['jpg', 'jpeg', 'png']
  985. if (whiteList.indexOf(fileSuffix) === -1) {
  986. this.$errorMsg('只支持上传jpg/jpeg/png文件!')
  987. return false
  988. }
  989. },
  990. // 预览图片
  991. previewImage(type) {
  992. this.$refs[type].showViewer = true
  993. },
  994. submitStep1Form() {
  995. this.$refs.step1Form.validate(valid => {
  996. if (valid) {
  997. this.formLoading = true
  998. let params = {
  999. // adminUserId: this.id,
  1000. companyWechatId: this.companyWechatId,
  1001. moduleMaterialPart: this.step1Form.moduleMaterialPart,
  1002. billTitle: this.step1Form.billTitle,
  1003. moduleYb: this.step1Form.moduleYb,
  1004. moduleWb: this.step1Form.moduleWb,
  1005. joinCode: this.step1Form.joinCode,
  1006. moduleZl: this.step1Form.moduleZl,
  1007. moduleEs: this.step1Form.moduleEs,
  1008. storePay: this.step1Form.storePay,
  1009. companyType: this.step1Form.companyType,
  1010. yjhxDkFlag: this.step1Form.yjhxDkFlag,
  1011. appModuleJson: JSON.stringify(this.step1Form.appModuleJson)
  1012. }
  1013. editAccount(params)
  1014. .then(res => {
  1015. this.$successMsg('保存成功')
  1016. setTimeout(() => {
  1017. this.goBack()
  1018. }, 1500)
  1019. })
  1020. .finally(res => {
  1021. this.formLoading = false
  1022. })
  1023. }
  1024. })
  1025. },
  1026. submitStep2Form() {
  1027. if (!this.img1_url) {
  1028. return this.$errorMsg('请上传主logo')
  1029. }
  1030. if (!this.img2_url) {
  1031. return this.$errorMsg('请上传通用logo')
  1032. }
  1033. if (!this.img3_url) {
  1034. return this.$errorMsg('请上传头像logo')
  1035. }
  1036. this.formLoading = true
  1037. let params = {
  1038. adminUserId: this.id,
  1039. minLogo1: this.img1_url,
  1040. minLogo2: this.img2_url,
  1041. minLogo3: this.img3_url,
  1042. companyWechatId: this.companyWechatId
  1043. }
  1044. editAccount(params)
  1045. .then(res => {
  1046. this.$successMsg('保存成功')
  1047. setTimeout(() => {
  1048. this.goBack()
  1049. }, 1500)
  1050. })
  1051. .finally(res => {
  1052. this.formLoading = false
  1053. })
  1054. },
  1055. submitStep3Form() {
  1056. this.$refs.step3Form.validate(valid => {
  1057. if (valid) {
  1058. this.formLoading = true
  1059. let params = {
  1060. adminUserId: this.id,
  1061. corpId: this.step3Form.enterpriseId,
  1062. secret2: this.step3Form.listSecret,
  1063. secret3: this.step3Form.listSyncSecret,
  1064. agentId1: this.step3Form.appAgentId,
  1065. secret1: this.step3Form.appSecret,
  1066. appId: this.step3Form.appId,
  1067. mchId: this.step3Form.merchantId,
  1068. mchKey: this.step3Form.merchantKey,
  1069. appletAppid: this.step3Form.appletAppid,
  1070. appletSecret: this.step3Form.appletSecret,
  1071. subMchId: this.step3Form.childMerchantId,
  1072. template: this.step3Form.templateId,
  1073. pubAppId: this.step3Form.pubAppId,
  1074. pubAppSecret: this.step3Form.pubAppSecret,
  1075. pubTemplateId1: this.step3Form.pubTemplateId1,
  1076. pubTemplateId2: this.step3Form.pubTemplateId2,
  1077. pubTemplateId3: this.step3Form.pubTemplateId3,
  1078. pubTemplateId4: this.step3Form.pubTemplateId4,
  1079. pubTemplateId5: this.step3Form.pubTemplateId5,
  1080. pubTemplateId6: this.step3Form.pubTemplateId6,
  1081. pubTemplateId7: this.step3Form.pubTemplateId7,
  1082. pubTemplateId8: this.step3Form.pubTemplateId8,
  1083. companyWechatId: this.companyWechatId
  1084. }
  1085. editAccount(params)
  1086. .then(res => {
  1087. this.$successMsg('保存成功')
  1088. setTimeout(() => {
  1089. this.goBack()
  1090. }, 1500)
  1091. })
  1092. .finally(res => {
  1093. this.formLoading = false
  1094. })
  1095. }
  1096. })
  1097. },
  1098. submitStep4Form() {
  1099. this.$refs.step4Form.validate(valid => {
  1100. if (valid) {
  1101. this.formLoading = true
  1102. let params = {
  1103. adminUserId: this.id,
  1104. companyWechatId: this.companyWechatId,
  1105. dayNum: this.step4Form.dayNum,
  1106. hourTime: this.step4Form.hourTime,
  1107. isShareTax: this.step4Form.isShareTax
  1108. }
  1109. editAccount(params)
  1110. .then(res => {
  1111. this.$successMsg('保存成功')
  1112. setTimeout(() => {
  1113. this.goBack()
  1114. }, 1500)
  1115. })
  1116. .finally(res => {
  1117. this.formLoading = false
  1118. })
  1119. }
  1120. })
  1121. },
  1122. submitStep5Form() {
  1123. // if (!this.qrcode1_url) {
  1124. // return this.$errorMsg('请上传小程序图片');
  1125. // }
  1126. if (!this.qrcode2_url) {
  1127. return this.$errorMsg('请上传公众号图片')
  1128. }
  1129. // if (!this.qrcode3_url) {
  1130. // return this.$errorMsg('请上传收款二维码图片');
  1131. // }
  1132. this.formLoading = true
  1133. let params = {
  1134. adminUserId: this.id,
  1135. qrcode1: this.qrcode1_url,
  1136. qrcode2: this.qrcode2_url,
  1137. payQrcode: this.qrcode3_url,
  1138. companyWechatId: this.companyWechatId
  1139. }
  1140. editAccount(params)
  1141. .then(res => {
  1142. this.$successMsg('保存成功')
  1143. setTimeout(() => {
  1144. this.goBack()
  1145. }, 1500)
  1146. })
  1147. .finally(res => {
  1148. this.formLoading = false
  1149. })
  1150. }
  1151. }
  1152. }
  1153. </script>
  1154. <style lang="scss" scoped>
  1155. .setting_title {
  1156. padding-left: 0;
  1157. }
  1158. .tips {
  1159. font-size: 14px;
  1160. }
  1161. .my-card {
  1162. margin-top: 20px;
  1163. .box {
  1164. background: rgb(235, 240, 249);
  1165. padding: 10px;
  1166. font-size: 14px;
  1167. margin: 20px 0;
  1168. line-height: 18px;
  1169. ::v-deep .el-link {
  1170. vertical-align: unset;
  1171. }
  1172. }
  1173. }
  1174. .my-form {
  1175. width: 100%;
  1176. margin-top: 20px;
  1177. }
  1178. .show-pwd {
  1179. position: absolute;
  1180. right: 15px;
  1181. top: 0;
  1182. font-size: 16px;
  1183. cursor: pointer;
  1184. user-select: none;
  1185. }
  1186. .question {
  1187. position: absolute;
  1188. right: -30px;
  1189. top: 0;
  1190. font-size: 20px;
  1191. cursor: pointer;
  1192. user-select: none;
  1193. }
  1194. .reset {
  1195. position: absolute;
  1196. right: -110px;
  1197. top: 0;
  1198. }
  1199. .my-form2 {
  1200. ::v-deep input {
  1201. // width: 400px;
  1202. }
  1203. }
  1204. .tips {
  1205. margin-top: 10px;
  1206. span {
  1207. display: inline-block;
  1208. width: 300px;
  1209. text-align: center;
  1210. line-height: 32px;
  1211. background: #ffefef;
  1212. font-size: 14px;
  1213. color: #f66460;
  1214. }
  1215. }
  1216. .images {
  1217. display: flex;
  1218. flex-wrap: wrap;
  1219. .main-img {
  1220. display: flex;
  1221. flex-direction: column;
  1222. justify-content: center;
  1223. align-items: center;
  1224. width: 120px;
  1225. margin-right: 20px;
  1226. .img {
  1227. border: 1px dashed #eaeaea;
  1228. border-radius: 5px;
  1229. overflow: hidden;
  1230. position: relative;
  1231. .el-image {
  1232. display: block;
  1233. }
  1234. .mask {
  1235. position: absolute;
  1236. left: 0;
  1237. top: 0;
  1238. width: 120px;
  1239. height: 120px;
  1240. background: rgba($color: #000000, $alpha: 0.3);
  1241. display: flex;
  1242. align-items: center;
  1243. justify-content: center;
  1244. i {
  1245. font-size: 20px;
  1246. color: #ffffff;
  1247. cursor: pointer;
  1248. margin: 0 8px;
  1249. }
  1250. }
  1251. }
  1252. .text {
  1253. font-size: 14px;
  1254. color: #666666;
  1255. }
  1256. }
  1257. .add {
  1258. width: 120px;
  1259. height: 120px;
  1260. border: 1px dashed #eaeaea;
  1261. border-radius: 5px;
  1262. cursor: pointer;
  1263. display: flex;
  1264. align-items: center;
  1265. justify-content: center;
  1266. i {
  1267. font-size: 30px;
  1268. color: #999;
  1269. }
  1270. }
  1271. .tmp-img {
  1272. position: relative;
  1273. .tmp {
  1274. position: absolute;
  1275. left: 0;
  1276. top: 0;
  1277. line-height: 20px;
  1278. padding: 0 8px;
  1279. background: #f66460;
  1280. border-radius: 0 0 10px 0;
  1281. font-size: 12px;
  1282. color: #ffffff;
  1283. }
  1284. }
  1285. }
  1286. </style>