promotionForm.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836
  1. <template>
  2. <div v-loading="pageLoad">
  3. <el-dialog
  4. element-loading-text="loading..."
  5. :title="title"
  6. top="0"
  7. width="100%"
  8. lock-scroll
  9. custom-class="promotionform"
  10. :close-on-click-modal="false"
  11. :visible.sync="promotionFormVisible"
  12. @open="handleOpenDialog"
  13. @close="resetData"
  14. >
  15. <div class="dialog-box" v-loading="pageLoad">
  16. <div class="dialog-body" v-loading="pageLoad">
  17. <el-form
  18. ref="promotionBuyXgetYDertailFormRef"
  19. :model="promotion"
  20. label-width="210px"
  21. size="medium"
  22. >
  23. <!-- 活动基本信息 -->
  24. <div class="box base">
  25. <div class="title">
  26. <span>{{ $t("label.setBasicEventInformationDetail") }}</span>
  27. </div>
  28. <div class="info">
  29. <!--促销名称-->
  30. <el-form-item
  31. :label="$t('label.promotionName') + ':'"
  32. prop="promotionName"
  33. >
  34. <el-input
  35. v-model.trim="promotion.title"
  36. :disabled="edit"
  37. ></el-input>
  38. </el-form-item>
  39. <div class="item row">
  40. <!--促销开始时间-->
  41. <el-form-item
  42. :label="$t('label.promotionStartTime') + ':'"
  43. prop="startTime"
  44. >
  45. <el-date-picker
  46. :disabled="edit"
  47. type="datetime"
  48. placeholder="选择日期"
  49. value-format="yyyy-MM-dd HH:mm:ss"
  50. v-model="promotion.startTime"
  51. ></el-date-picker>
  52. </el-form-item>
  53. <!--促销失效时间-->
  54. <el-form-item
  55. :label="$t('label.promotionEndTime') + ':'"
  56. prop="endTime"
  57. >
  58. <el-date-picker
  59. :disabled="edit"
  60. type="datetime"
  61. placeholder="选择日期"
  62. value-format="yyyy-MM-dd HH:mm:ss"
  63. v-model="promotion.endTime"
  64. ></el-date-picker>
  65. </el-form-item>
  66. </div>
  67. <!--应用方式-->
  68. <el-form-item
  69. :label="$t('label.applicationMethod') + ':'"
  70. prop="discountMethod"
  71. >
  72. <el-radio-group
  73. v-model="promotion.discountMethod"
  74. :disabled="edit"
  75. >
  76. <div class="item row">
  77. <el-radio :label="1">{{ $t("label.discount") }}</el-radio>
  78. <el-input
  79. v-show="promotion.discountMethod === 1"
  80. class="codeinput"
  81. v-model.trim="promotion.discountCode"
  82. :disabled="edit"
  83. />
  84. <el-radio :label="2">{{
  85. $t("label.autoDiscount")
  86. }}</el-radio>
  87. </div>
  88. </el-radio-group>
  89. </el-form-item>
  90. </div>
  91. </div>
  92. <!-- 折扣设置 -->
  93. <div class="box discount">
  94. <!-- 客户购买条件 -->
  95. <div class="title">
  96. <span>{{ $t("label.customerPurchaseConditions") }}</span>
  97. </div>
  98. <div class="info">
  99. <!--最低购买要求-->
  100. <el-form-item
  101. :label="$t('label.minimumPurchaseRequirement') + ':'"
  102. prop="minimum"
  103. >
  104. <el-radio-group
  105. v-model="promotion.purchaseRequire"
  106. :disabled="edit"
  107. >
  108. <div class="item row">
  109. <el-radio :label="3">{{
  110. $t("label.numberStr")
  111. }}</el-radio>
  112. <el-radio :label="2">{{ $t("label.money") }}</el-radio>
  113. <el-radio :label="1">{{ $t("label.free") }}</el-radio>
  114. </div>
  115. </el-radio-group>
  116. </el-form-item>
  117. <!--折扣内容 数量&金额-->
  118. <el-form-item :label="$t('label.discountValue') + ':'">
  119. <div class="item">
  120. <!--最低要求 免费 不展示 -->
  121. <div
  122. class="item-box"
  123. v-if="promotion.purchaseRequire !== 1"
  124. >
  125. <span class="label">{{ discountContentValue }}</span>
  126. <el-input
  127. class="mininput"
  128. v-model.trim="promotion.requireValue"
  129. :disabled="edit"
  130. />
  131. </div>
  132. <div class="item-box">
  133. <span class="label">{{ $t("label.buyType") }}</span>
  134. <el-input
  135. class="mininput"
  136. v-model.trim="promotion.purchaseType"
  137. :disabled="edit"
  138. />
  139. </div>
  140. </div>
  141. <div class="item product">
  142. <div class="item row">
  143. <span class="label">{{ $t("label.product") }}</span>
  144. <el-input
  145. class="mininput"
  146. v-model.trim="promotion.productBuyType"
  147. :disabled="edit"
  148. />
  149. <div class="value" v-for="(data, j) in tagLists" :key="j">
  150. <p>{{ tagValue(data) }}</p>
  151. <a
  152. href="javascript:void();"
  153. @click="handleProductDialog(data)"
  154. >{{ $t("label.viewProductDetaiL") }}</a
  155. >
  156. </div>
  157. </div>
  158. </div>
  159. </el-form-item>
  160. <!-- 每个订单一次 获得条件为金额才可见 -->
  161. <!-- <el-form-item
  162. v-if="promotion.valueType === 2"
  163. :label="$t('label.oncePerOrder') + ':'"
  164. >
  165. <el-checkbox
  166. v-model="promotion.oncePerOrder"
  167. :disabled="edit"
  168. >{{ $t("label.oncePerOrderDesc") }}</el-checkbox
  169. >
  170. </el-form-item> -->
  171. </div>
  172. <!-- 客户获得条件 -->
  173. <div class="title">
  174. <span>{{ $t("label.customerGetConditions") }}</span>
  175. </div>
  176. <div class="info">
  177. <!--折扣内容 数量&金额-->
  178. <!-- <el-form-item :label="$t('label.discountValue') + ':'">
  179. <div class="item">
  180. <span class="label">{{ $t("label.numberStr") }}</span>
  181. <el-input
  182. class="mininput"
  183. v-model.trim="promotion.requireValue"
  184. :disabled="edit"
  185. />
  186. </div>
  187. <div class="item product">
  188. <div class="item-box">
  189. <span class="label">{{ $t("label.product") }}</span>
  190. <el-input
  191. class="mininput"
  192. v-model.trim="promotion.productType"
  193. :disabled="edit"
  194. />
  195. <el-input
  196. class="productinput"
  197. :placeholder="$t('label.productPlaceholder')"
  198. v-model.trim="productSku"
  199. />
  200. <el-button
  201. @click="handleProductSearch"
  202. v-waves
  203. type="primary"
  204. >{{ $t("view.search") }}
  205. </el-button>
  206. <div class="skucon">
  207. <span
  208. v-for="(item, i) in getTagList"
  209. :class="productKeys.includes(item) ? 'active' : ''"
  210. :key="i"
  211. >{{ item }},</span
  212. >
  213. </div>
  214. </div>
  215. </div>
  216. </el-form-item> -->
  217. <!--折扣额-->
  218. <el-form-item
  219. :label="$t('label.discountPromotion') + ':'"
  220. prop="discount"
  221. class="discount"
  222. >
  223. <el-radio-group
  224. v-model="promotion.valueType"
  225. :disabled="edit"
  226. >
  227. <div class="item row">
  228. <el-radio :label="1">{{
  229. $t("label.percentage")
  230. }}</el-radio>
  231. <el-input
  232. v-if="promotion.valueType === 1"
  233. class="mininput"
  234. v-model.trim="promotion.discountNumber"
  235. :disabled="edit"
  236. >
  237. <span class="el-input__icon" slot="suffix">%</span>
  238. </el-input>
  239. </div>
  240. <div class="item row">
  241. <el-radio :label="2">{{
  242. $t("label.discountPerItem")
  243. }}</el-radio>
  244. <el-input
  245. v-if="promotion.valueType === 2"
  246. class="mininput"
  247. v-model.trim="promotion.numericValue"
  248. :disabled="edit"
  249. />
  250. </div>
  251. <el-radio :label="3">{{ $t("label.free") }}</el-radio>
  252. </el-radio-group>
  253. </el-form-item>
  254. </div>
  255. <!-- 每个订单使用次数 折扣码才有-->
  256. <!-- <div v-if="promotion.discountMethod === 1">
  257. <div class="title">
  258. <span>{{ $t("label.numberOfTimesUsedPerOrder") }}</span>
  259. </div>
  260. <div class="info">
  261. <el-form-item>
  262. <div class="item row">
  263. <el-checkbox v-model="usageLimitchecked" :disabled="edit">{{
  264. $t("label.maxNumberOfTimesUsedPerOrder")
  265. }}</el-checkbox>
  266. <el-input
  267. class="mininput checkboxinput"
  268. v-model.trim="promotion.customerGetOrderUsageLimit"
  269. :disabled="edit"
  270. />
  271. </div>
  272. </el-form-item>
  273. </div>
  274. </div> -->
  275. </div>
  276. <!-- 客户资格 折扣码才有-->
  277. <div class="box" v-if="promotion.discountMethod === 1">
  278. <div class="title">
  279. <span>{{ $t("label.customerQualification") }}</span>
  280. </div>
  281. <div class="info customerQualification">
  282. <el-form-item prop="customerQualification" required>
  283. <el-radio-group
  284. class="customerqualification"
  285. v-model="promotion.targetCustomerType"
  286. :disabled="edit"
  287. >
  288. <el-radio :label="1">{{
  289. $t("label.customerQualificationList")[0].label
  290. }}</el-radio>
  291. <div class="item row">
  292. <el-radio :label="2">{{
  293. $t("label.customerQualificationList")[1].label
  294. }}</el-radio>
  295. <el-input
  296. v-if="promotion.targetCustomerType === 2"
  297. class="mininput"
  298. v-model.trim="promotion.targetCustomer"
  299. :disabled="edit"
  300. />
  301. </div>
  302. <div class="item row">
  303. <el-radio :label="3">{{
  304. $t("label.customerQualificationList")[2].label
  305. }}</el-radio>
  306. <el-input
  307. v-if="promotion.targetCustomerType === 3"
  308. class="mininput"
  309. v-model.trim="promotion.targetCustomer"
  310. :disabled="edit"
  311. />
  312. </div>
  313. <!-- <el-radio
  314. v-for="(item, i) in $t('label.customerQualificationList')"
  315. :key="i"
  316. :label="item.value"
  317. >{{ item.label }}</el-radio
  318. > -->
  319. </el-radio-group>
  320. </el-form-item>
  321. </div>
  322. </div>
  323. <!-- 最大折扣使用次数 折扣码才有-->
  324. <div class="box" v-if="promotion.discountMethod === 1">
  325. <div class="title">
  326. <span>{{ $t("label.maximumNumberOfDiscounts") }}</span>
  327. </div>
  328. <div class="info">
  329. <el-form-item>
  330. <!-- <el-checkbox-group v-model="promotion.startTime"> -->
  331. <div class="item row">
  332. <el-checkbox
  333. :checked="codeUsageLimitchecked"
  334. :disabled="edit"
  335. >{{ $t("label.limitDiscountCount") }}</el-checkbox
  336. >
  337. <el-input
  338. class="mininput checkboxinput"
  339. v-model.trim="promotion.codeUsageLimit"
  340. :disabled="edit"
  341. />
  342. </div>
  343. <div class="item row">
  344. <el-checkbox
  345. :checked="promotion.codeCustomerUsageType === 1"
  346. :disabled="edit"
  347. >{{ $t("label.customerCount") }}</el-checkbox
  348. >
  349. </div>
  350. <!-- </el-checkbox-group> -->
  351. </el-form-item>
  352. </div>
  353. </div>
  354. <!-- 组合 自动折扣才有 -->
  355. <div class="box">
  356. <div class="title">
  357. <span>{{ $t("label.combination") }}</span>
  358. </div>
  359. <div class="info">
  360. <el-form-item :label="$t('label.combinationLable') + ':'">
  361. <el-checkbox-group v-model="promotion.combination">
  362. <el-checkbox
  363. v-for="(item, i) in $t('label.combinationList')"
  364. :key="i"
  365. :label="item.value"
  366. :disabled="edit"
  367. >{{ item.label }}
  368. </el-checkbox>
  369. </el-checkbox-group>
  370. </el-form-item>
  371. </div>
  372. </div>
  373. </el-form>
  374. </div>
  375. </div>
  376. <template slot="footer">
  377. <el-button
  378. @click="
  379. resetData();
  380. promotionFormVisible = false;
  381. "
  382. >{{ $t("view.cancel") }}
  383. </el-button>
  384. <!-- 未审核时/审核驳回 状态可进行提交 -->
  385. <!-- <el-button type="primary" @click="handleSaveOrUpdate" :disabled="edit"
  386. >{{ $t("view.confirm") }}
  387. </el-button> -->
  388. </template>
  389. </el-dialog>
  390. <product-collection ref="productCollectionRef" />
  391. </div>
  392. </template>
  393. <script>
  394. import waves from "@/directive/waves"; // 水波纹指令
  395. import { fetchDetailByIdAndVersion } from "@/api/oms/order/multiBuyDiscount";
  396. import i18n from "@/lang";
  397. import { isEmpty } from "@/utils/toolUtil";
  398. import productCollection from "@/views/oms/promotion/buyXGetYDiscount/components/productCollectionDetail";
  399. export default {
  400. inject: ["reload"],
  401. directives: {
  402. waves
  403. },
  404. name: "buyXgetYbuyDiscountForm",
  405. components: {
  406. productCollection
  407. },
  408. computed: {
  409. discountContentValue() {
  410. return this.promotion.purchaseRequire === 2
  411. ? i18n.t("label.money")
  412. : i18n.t("label.numberStr");
  413. }
  414. },
  415. data() {
  416. return {
  417. promotionFormVisible: false,
  418. title: "",
  419. productSku: "",
  420. productKeys: [],
  421. usageLimitchecked: false,
  422. codeUsageLimitchecked: false,
  423. tagLists: [],
  424. getTagList: [],
  425. promotion: {
  426. // 配置基本信息
  427. id: "",
  428. title: "",
  429. startTime: "",
  430. endTime: "",
  431. discountMethod: null,
  432. discountNumber: null,
  433. purchaseRequire: null,
  434. purchaseType: "",
  435. productType: "",
  436. productBuyType: "",
  437. discount: "",
  438. combination: []
  439. },
  440. edit: true,
  441. noDataText: "加载中",
  442. pageLoad: false,
  443. isEmpty
  444. };
  445. },
  446. methods: {
  447. tagValue(data) {
  448. return (
  449. data.title +
  450. i18n.t("label.productCollection") +
  451. i18n.t("label.all") +
  452. data.spus.length +
  453. i18n.t("label.itemProduct")
  454. );
  455. },
  456. async showDialog(id, edit, version) {
  457. this.edit = edit;
  458. if (id) {
  459. // 修改配置
  460. this.promotion.id = id;
  461. this.promotion.version = version;
  462. await this.getPromotionInfo();
  463. this.title = this.edit
  464. ? i18n.t("label.mutiPromotionDetailTitle")
  465. : i18n.t("label.mutiPromotionUpdateTitle");
  466. } else {
  467. this.title = i18n.t("label.mutiPromotionCreateTitle");
  468. }
  469. let str = this.promotion.id ? "Detail" : "";
  470. this.discountSettingTitle = i18n.t("label.discountSetting" + str);
  471. this.productRangeTitle = i18n.t("label.setProductRange" + str);
  472. this.promotionFormVisible = true;
  473. },
  474. // 款号搜索
  475. handleProductSearch() {
  476. this.productKeys = this.productSku.split(",");
  477. },
  478. handleProductDialog(data) {
  479. this.$refs.productCollectionRef.showDialog(data);
  480. },
  481. resetData() {
  482. this.promotion = {
  483. id: "",
  484. title: "",
  485. startTime: "",
  486. endTime: "",
  487. discountMethod: null,
  488. discountNumber: null,
  489. purchaseRequire: null,
  490. purchaseType: "",
  491. productType: "",
  492. productBuyType: "",
  493. discount: "",
  494. combination: []
  495. };
  496. },
  497. handleOpenDialog() {
  498. this.resetData();
  499. if (this.$refs.promotionBuyXgetYDertailFormRef) {
  500. this.$refs.promotionBuyXgetYDertailFormRef.clearValidate();
  501. }
  502. },
  503. getPromotionInfo() {
  504. this.pageLoad = true;
  505. let { id, version } = this.promotion;
  506. fetchDetailByIdAndVersion({ id, version })
  507. .then(res => {
  508. // 促销配置信息
  509. const { priceRule, productTags, giveProductCollects } = res.data;
  510. this.promotion = { ...priceRule, productTags };
  511. if (priceRule.valueType === 1) {
  512. let number = priceRule.numericValue * 100;
  513. // this.promotion.discountNumber = number;
  514. this.$set(this.promotion, "discountNumber", number);
  515. }
  516. if (priceRule.purchaseRequire === 3) {
  517. // this.promotion.quantity = priceRule.requireValue;
  518. this.$set(this.promotion, "quantity", priceRule.requireValue);
  519. } else if (priceRule.purchaseRequire === 2) {
  520. // this.promotion.miniAmount = priceRule.requireValue;
  521. this.$set(this.promotion, "miniAmount", priceRule.requireValue);
  522. }
  523. // 购买类型
  524. const targetType = i18n
  525. .t("label.promotionBuyTyper")
  526. .find(item => item.value === priceRule.targetType);
  527. if (targetType && targetType.label) {
  528. this.$set(this.promotion, "purchaseType", targetType.label);
  529. }
  530. // 顾客购买商品类型
  531. const productBuyType = i18n
  532. .t("label.promotionCustomerGetType")
  533. .find(item => item.value === priceRule.targetSelectionType);
  534. if (productBuyType && productBuyType.label) {
  535. this.$set(this.promotion, "productBuyType", productBuyType.label);
  536. }
  537. // 顾客得到商品类型
  538. const productType = i18n
  539. .t("label.promotionCustomerGetType")
  540. .find(item => item.value === priceRule.customerGetType);
  541. if (productType && productType.label) {
  542. this.$set(this.promotion, "productType", productType.label);
  543. }
  544. // 组合
  545. const {
  546. combineWithOrder,
  547. combineWithProduct,
  548. combineWithShipping,
  549. targetShopifyProductSpu,
  550. targetShopifySku,
  551. targetSelectionType,
  552. customerGetType,
  553. getTargetShopifyProductSpu,
  554. getTargetShopifySku,
  555. customerGetOrderUsageLimit,
  556. codeUsageLimit
  557. } = priceRule;
  558. let combinationArr = [];
  559. if (combineWithOrder) {
  560. combinationArr.push(i18n.t("label.combinationList")[1].value);
  561. }
  562. if (combineWithProduct) {
  563. combinationArr.push(i18n.t("label.combinationList")[0].value);
  564. }
  565. if (combineWithShipping) {
  566. combinationArr.push(i18n.t("label.combinationList")[2].value);
  567. }
  568. this.usageLimitchecked = !!customerGetOrderUsageLimit;
  569. this.codeUsageLimitchecked = !!codeUsageLimit;
  570. this.$set(this.promotion, "combination", combinationArr);
  571. // 折扣适用 1特定系列 其他2,3 特定商品
  572. let tagLists = [];
  573. if (targetSelectionType === 1) {
  574. tagLists = productTags.map(item => {
  575. let data = [];
  576. if (item.spu) {
  577. data = item.spu.split(",");
  578. }
  579. item.spus = data;
  580. return item;
  581. });
  582. } else {
  583. // 特地商品
  584. if (targetShopifySku) {
  585. const spusSKU = targetShopifySku.split(",");
  586. tagLists.push({ title: "", spus: spusSKU });
  587. }
  588. if (targetShopifyProductSpu) {
  589. const spusId = targetShopifyProductSpu.split(",");
  590. tagLists.push({ title: "", spus: spusId });
  591. }
  592. }
  593. this.tagLists = tagLists;
  594. // 折扣得到条件 1 特定系列 2 特定商品
  595. let getTagList = [];
  596. if (customerGetType === 1) {
  597. giveProductCollects.forEach(item => {
  598. if (item.spu) {
  599. const arr = item.spu.split(",");
  600. getTagList.push.apply(getTagList, arr);
  601. }
  602. });
  603. } else {
  604. // 特地商品
  605. if (getTargetShopifySku) {
  606. const skus = getTargetShopifySku.split(",");
  607. getTagList.push.apply(getTagList, skus);
  608. }
  609. if (getTargetShopifyProductSpu) {
  610. const spus = getTargetShopifyProductSpu.split(",");
  611. getTagList.push.apply(getTagList, spus);
  612. }
  613. }
  614. this.getTagList = getTagList;
  615. })
  616. .finally(() => {
  617. this.pageLoad = false;
  618. });
  619. }
  620. }
  621. };
  622. </script>
  623. <style lang="scss">
  624. .promotionform {
  625. width: 100%;
  626. height: 100%;
  627. position: fixed;
  628. top: 0px;
  629. left: 0px;
  630. .el-dialog__header {
  631. padding: 36px 21px 0px 34px;
  632. .el-dialog__title {
  633. font-size: 18px;
  634. font-weight: bold;
  635. color: #ae8877;
  636. line-height: 22px;
  637. }
  638. }
  639. .el-form-item__label {
  640. font-weight: 400;
  641. font-size: 12px;
  642. }
  643. .el-dialog__body {
  644. padding: 30px 10px 30px 34px;
  645. }
  646. .el-dialog__headerbtn {
  647. top: 14px;
  648. right: 14px;
  649. font-weight: bold;
  650. .el-icon-close {
  651. font-weight: bold;
  652. }
  653. }
  654. .el-input {
  655. width: 220px !important;
  656. }
  657. }
  658. </style>
  659. <style scoped rel="stylesheet/scss" lang="scss">
  660. .dialog-box {
  661. height: 100%;
  662. .dialog-body {
  663. height: 80vh;
  664. overflow: auto;
  665. .box {
  666. border-bottom: 1px solid #d8d8d8;
  667. padding-bottom: 20px;
  668. margin-bottom: 42px;
  669. &.base {
  670. .info {
  671. width: 25%;
  672. }
  673. }
  674. &.discount {
  675. .info {
  676. margin-bottom: 60px;
  677. }
  678. }
  679. .title {
  680. color: #606266;
  681. font-size: 16px;
  682. line-height: 16px;
  683. position: relative;
  684. font-weight: bold;
  685. padding-left: 6px;
  686. margin-bottom: 23px;
  687. &:before {
  688. position: absolute;
  689. left: 0px;
  690. top: 0px;
  691. content: "";
  692. display: inline-block;
  693. width: 3px;
  694. height: 13px;
  695. background: #ae8877;
  696. border-radius: 0px 0px 0px 0px;
  697. }
  698. }
  699. }
  700. // /deep/.el-form-item__label-wrap {
  701. // margin-left: 0px !important;
  702. // .el-form-item__label {
  703. // text-align: right;
  704. // }
  705. // }
  706. .skucon {
  707. width: 90%;
  708. height: 139px;
  709. overflow-y: auto;
  710. border-radius: 3px 3px 3px 3px;
  711. border: 1px solid #dcdfe6;
  712. background: #f5f7fa;
  713. margin-top: 12px;
  714. padding: 10px;
  715. font-size: 12px;
  716. line-height: 16px;
  717. .active {
  718. color: #fd5959;
  719. }
  720. }
  721. .productbox {
  722. border-bottom: none;
  723. }
  724. .info {
  725. .item {
  726. display: flex;
  727. flex-direction: row;
  728. flex-wrap: wrap;
  729. align-items: center;
  730. &.row {
  731. flex-wrap: nowrap;
  732. }
  733. .el-form-item {
  734. margin-right: 42px !important;
  735. }
  736. .codeinput {
  737. margin-right: 36px;
  738. }
  739. .mininput {
  740. margin-right: 30px;
  741. width: 180px !important;
  742. }
  743. .checkboxinput {
  744. margin-left: 20px;
  745. }
  746. .productinput {
  747. width: 340px !important;
  748. }
  749. .label {
  750. margin-right: 12px;
  751. }
  752. &.product {
  753. margin-top: 26px;
  754. .label {
  755. margin-bottom: 10px;
  756. }
  757. .mininput {
  758. margin-right: 20px;
  759. margin-bottom: 10px;
  760. }
  761. .row {
  762. flex-wrap: wrap;
  763. }
  764. .collectioninput {
  765. margin-right: 20px;
  766. min-width: 220px !important;
  767. width: auto !important;
  768. /deep/.el-input-group__append {
  769. color: #ae8877;
  770. border-left: none;
  771. font-size: 12px;
  772. padding: 0px 5px;
  773. background: #f5f7fa;
  774. span {
  775. cursor: pointer;
  776. }
  777. }
  778. /deep/.el-input__inner {
  779. border-right: none;
  780. }
  781. }
  782. .value {
  783. margin-bottom: 10px;
  784. }
  785. }
  786. }
  787. .discount {
  788. .item {
  789. margin-bottom: 20px;
  790. /deep/.el-radio {
  791. min-width: 135px;
  792. }
  793. }
  794. }
  795. .customerqualification {
  796. .el-radio {
  797. display: block;
  798. margin-bottom: 30px;
  799. }
  800. }
  801. }
  802. .value {
  803. position: relative;
  804. min-width: 300px;
  805. height: 36px;
  806. padding: 0px 6px;
  807. font-size: 12px;
  808. margin-right: 13px;
  809. color: #c0c4cc;
  810. background: #f5f7fa;
  811. border-radius: 3px;
  812. border: 1px solid #dcdfe6;
  813. p {
  814. line-height: 12px;
  815. padding-right: 130px;
  816. overflow: hidden;
  817. text-overflow: ellipsis;
  818. white-space: nowrap;
  819. }
  820. a {
  821. position: absolute;
  822. right: 10px;
  823. top: 0%;
  824. color: #ae8877;
  825. }
  826. }
  827. .customerQualification {
  828. .mininput {
  829. margin-bottom: 30px;
  830. }
  831. }
  832. }
  833. }
  834. </style>