edit.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. {include file="/shopro/common/script" /}
  2. <style>
  3. .goods-form .sa-title.is-line {
  4. margin-bottom: 16px;
  5. }
  6. .goods-form .goods-item {
  7. margin-bottom: 16px;
  8. }
  9. .goods-form .goods-item .goods-title {
  10. height: 16px;
  11. line-height: 16px;
  12. font-size: 14px;
  13. font-weight: 500;
  14. color: var(--sa-font);
  15. margin-bottom: 8px;
  16. }
  17. .goods-form .goods-item .goods-sku {
  18. width: fit-content;
  19. height: 18px;
  20. line-height: 18px;
  21. background: var(--el-color-primary);
  22. border-radius: 10px;
  23. padding: 0 8px;
  24. font-size: 12px;
  25. color: var(--sa-background-assist);
  26. }
  27. .goods-form .commission-table {
  28. overflow: hidden;
  29. overflow-x: auto;
  30. }
  31. .goods-form .commission-table .commission-header {
  32. border-left: 1px solid var(--sa-border);
  33. }
  34. .goods-form .commission-table .commission-header .col-item {
  35. padding: 0 12px;
  36. height: 40px;
  37. line-height: 40px;
  38. background: var(--sa-table-header-bg);
  39. border-top: 1px solid var(--sa-border);
  40. }
  41. .goods-form .commission-table .commission-content {
  42. border-left: 1px solid var(--sa-border);
  43. }
  44. .goods-form .commission-table .col-item {
  45. width: 150px;
  46. min-width: 150px;
  47. padding: 0 12px;
  48. height: 48px;
  49. line-height: 48px;
  50. display: flex;
  51. align-items: center;
  52. justify-content: center;
  53. border-right: 1px solid var(--sa-border);
  54. border-bottom: 1px solid var(--sa-border);
  55. }
  56. .goods-form .commission-table .col-item .el-input {
  57. margin-right: 12px;
  58. }
  59. .goods-form .commission-table .col-item .el-input:last-of-type {
  60. margin-right: 0;
  61. }
  62. .goods-form .commission-table .col-item.commission-item {
  63. width: 240px;
  64. min-width: 240px;
  65. }
  66. .goods-form .batch-edit {
  67. color: var(--el-color-primary);
  68. margin-left: 8px;
  69. }
  70. .commission-popover .commission-item {
  71. margin-bottom: 12px;
  72. }
  73. .commission-popover .commission-item .el-input {
  74. margin-right: 12px;
  75. }
  76. .commission-popover .commission-item .el-input:last-of-type {
  77. margin-right: 0;
  78. }
  79. </style>
  80. <div id="addEdit" class="goods-form" v-cloak>
  81. <el-container class="panel-block">
  82. <el-main>
  83. <el-scrollbar height="100%">
  84. <div class="sa-title is-line">商品信息</div>
  85. <div v-for="goods in state.data?.goods" :key="goods">
  86. <div class="goods-item sa-flex sa-col-top">
  87. <sa-image class="mr-2" :url="goods.image" size="48"></sa-image>
  88. <div>
  89. <div class="goods-title sa-table-line-1">
  90. {{ goods.title }}
  91. </div>
  92. <div v-if="goods.is_sku" class="goods-sku">
  93. {{ goods.is_sku ? '多规格' : '' }}
  94. </div>
  95. </div>
  96. </div>
  97. </div>
  98. <div class="sa-title is-line">佣金设置</div>
  99. <el-form label-width="120px">
  100. <el-form-item label="是否参与">
  101. <el-radio-group v-model="state.commission_goods.status">
  102. <el-radio :label="0">不参与</el-radio>
  103. <el-radio :label="1">参与</el-radio>
  104. </el-radio-group>
  105. </el-form-item>
  106. <el-form-item label="分销商业绩">
  107. <el-radio-group v-model="state.commission_goods.commission_order_status">
  108. <el-radio :label="0">不计入</el-radio>
  109. <el-radio :label="1">
  110. <span class="sa-flex">
  111. 计入
  112. <el-popover placement="top" :width="310" content="关闭则只分佣,不计入分销订单金额和订单数">
  113. <template #reference>
  114. <el-icon class="warning sa-m-l-8">
  115. <warning />
  116. </el-icon>
  117. </template>
  118. </el-popover>
  119. </span>
  120. </el-radio>
  121. </el-radio-group>
  122. </el-form-item>
  123. <el-form-item label="佣金规则">
  124. <el-radio-group v-model="state.commission_goods.self_rules" @change="onChangeSelfRules">
  125. <el-radio :label="0">默认规则</el-radio>
  126. <el-radio :label="1" v-if="state.rulesType != 'batch'">独立规则</el-radio>
  127. <el-radio :label="2">批量规则</el-radio>
  128. </el-radio-group>
  129. </el-form-item>
  130. <el-form-item
  131. v-if="state.commission_goods.self_rules == 1 || state.commission_goods.self_rules == 2"
  132. label="分销设置">
  133. <el-switch v-model="state.commission_config_temp.status"
  134. @change="onChangeCommissionConfigStatus" :active-value="1" :inactive-value="0" />
  135. <span class="sa-m-l-8">
  136. {{ state.commission_config_temp.status ? '自定义' : '默认' }}
  137. </span>
  138. </el-form-item>
  139. <el-form-item label="分销层级">
  140. <el-radio-group v-model="state.commission_config_temp.level"
  141. :disabled="state.commission_config_temp.status == 0">
  142. <el-radio :label="1">一级</el-radio>
  143. <el-radio :label="2">二级</el-radio>
  144. <el-radio :label="3">三级</el-radio>
  145. </el-radio-group>
  146. </el-form-item>
  147. <el-form-item label="分销自购">
  148. <div>
  149. <el-radio-group v-model="state.commission_config_temp.self_buy"
  150. :disabled="state.commission_config_temp.status == 0">
  151. <el-radio :label="0">关闭</el-radio>
  152. <el-radio :label="1">开启</el-radio>
  153. </el-radio-group>
  154. <div class="tip"> 分销自购开启后,分销商自己购买时,下单可以给自己返佣 </div>
  155. </div>
  156. </el-form-item>
  157. <el-form-item label="商品结算方式">
  158. <div>
  159. <el-radio-group v-model="state.commission_config_temp.reward_type"
  160. :disabled="state.commission_config_temp.status == 0">
  161. <el-radio label="goods_price">商品价</el-radio>
  162. <el-radio label="pay_price">实际支付价</el-radio>
  163. </el-radio-group>
  164. <div class="tip">
  165. 商品价: 商品实际售价/规格价,实际支付价:实际支付的费用(不含运费)
  166. </div>
  167. </div>
  168. </el-form-item>
  169. <el-form-item label="佣金结算方式">
  170. <el-radio-group v-model="state.commission_config_temp.reward_event"
  171. :disabled="state.commission_config_temp.status == 0">
  172. <el-radio label="paid">支付后结算</el-radio>
  173. <el-radio label="confirm">确认收货结算</el-radio>
  174. <el-radio label="finish">订单完成结算</el-radio>
  175. <el-radio label="admin">手动打款</el-radio>
  176. </el-radio-group>
  177. </el-form-item>
  178. <div class="commission-table">
  179. <template v-if="state.commission_goods.self_rules == 0">
  180. <div class="commission-header sa-flex">
  181. <div class="col-item">分销等级名称</div>
  182. <template v-for="commission in state.commission_config_temp.level" :key="commission">
  183. <div v-if="commission == 1" class="col-item commission-item">
  184. 一级(自购)佣金比例
  185. </div>
  186. <div v-if="commission == 2" class="col-item commission-item"> 二级佣金比例 </div>
  187. <div v-if="commission == 3" class="col-item commission-item"> 三级佣金比例 </div>
  188. </template>
  189. </div>
  190. <div class="commission-content sa-flex" v-for="level in state.levelData" :key="level">
  191. <div class="col-item">{{ level.name }}</div>
  192. <template v-for="commission in state.commission_config_temp.level" :key="commission">
  193. <div class="col-item commission-item">
  194. {{ level.commission_rules[`commission_${commission}`] }}%
  195. </div>
  196. </template>
  197. </div>
  198. </template>
  199. <template v-if="state.commission_goods.self_rules == 1">
  200. <div class="commission-header sa-flex">
  201. <div class="col-item">商品规格</div>
  202. <div class="col-item">价格</div>
  203. <div class="col-item">分销等级名称</div>
  204. <template v-for="commission in state.commission_config_temp.level" :key="commission">
  205. <div class="col-item commission-item">
  206. <template v-if="commission == 1">一级(自购)佣金比例</template>
  207. <template v-if="commission == 2">二级佣金比例</template>
  208. <template v-if="commission == 3">三级佣金比例</template>
  209. <el-popover popper-class="commission-popover"
  210. v-model:visible="commissionPopover.flag[commission]" placement="top"
  211. :width="220" trigger="click">
  212. <div class="commission-item sa-flex">
  213. <el-input v-model="commissionPopover.form.rate" type="number"
  214. :disabled="commissionPopover.form.money != ''">
  215. <template #append>%</template>
  216. </el-input>
  217. <el-input v-model="commissionPopover.form.money" type="number"
  218. :disabled="commissionPopover.form.rate != ''">
  219. <template #append>元</template>
  220. </el-input>
  221. </div>
  222. <div class="sa-flex sa-row-right">
  223. <el-button class="is-link" type="primary" size="small"
  224. @click="onCancelCommissionPopover(commission)">取消</el-button>
  225. <el-button type="primary" size="small"
  226. @click="onConfirmCommissionPopover(commission)">确定</el-button>
  227. </div>
  228. <template #reference>
  229. <el-icon class="batch-edit">
  230. <edit />
  231. </el-icon>
  232. </template>
  233. </el-popover>
  234. </div>
  235. </template>
  236. </div>
  237. <div class="commission-content sa-flex">
  238. <div class="sa-flex sa-flex-col">
  239. <div class="sa-flex" v-for="sku in state.detailData.sku_prices" :key="sku">
  240. <div class="col-item" :style="{ height: 48 * state.levelData.length + 'px' }">
  241. {{ state.detailData?.is_sku ? sku.goods_sku_text.join(',') : '默认规格' }}
  242. </div>
  243. <div class="col-item" :style="{ height: 48 * state.levelData.length + 'px' }">
  244. {{ sku.price }}
  245. </div>
  246. <div>
  247. <div class="col-item" v-for="level in state.levelData" :key="level">
  248. {{ level.name }}
  249. </div>
  250. </div>
  251. </div>
  252. </div>
  253. <div>
  254. <div v-for="sku in state.commission_goods.commission_rules" :key="sku">
  255. <div class="sa-flex" v-for="level in sku" :key="level">
  256. <template v-for="commission in state.commission_config_temp.level"
  257. :key="commission">
  258. <div v-if="level[commission]" class="col-item commission-item">
  259. <el-input v-model="level[commission].rate" type="number"
  260. :disabled="level[commission].money != ''">
  261. <template #append>%</template>
  262. </el-input>
  263. <el-input v-model="level[commission].money" type="number"
  264. :disabled="level[commission].rate != ''">
  265. <template #append>元</template>
  266. </el-input>
  267. </div>
  268. </template>
  269. </div>
  270. </div>
  271. </div>
  272. </div>
  273. </template>
  274. <template v-if="state.commission_goods.self_rules == 2">
  275. <div class="commission-header sa-flex">
  276. <div class="col-item">商品规格</div>
  277. <template v-for="commission in state.commission_config_temp.level" :key="commission">
  278. <div class="col-item commission-item">
  279. <template v-if="commission == 1">一级(自购)佣金比例</template>
  280. <template v-if="commission == 2">二级佣金比例</template>
  281. <template v-if="commission == 3">三级佣金比例</template>
  282. <el-popover popper-class="commission-popover"
  283. v-model:visible="commissionPopover.flag[commission]" placement="top"
  284. :width="220" trigger="click">
  285. <div class="commission-item sa-flex">
  286. <el-input v-model="commissionPopover.form.rate" type="number"
  287. :disabled="commissionPopover.form.money != ''">
  288. <template #append>%</template>
  289. </el-input>
  290. </div>
  291. <div class="sa-flex sa-row-right">
  292. <el-button class="is-link" type="primary" size="small"
  293. @click="onCancelCommissionPopover(commission)">取消</el-button>
  294. <el-button size="small" type="primary"
  295. @click="onConfirmCommissionPopover(commission)">确定</el-button>
  296. </div>
  297. <template #reference>
  298. <el-icon class="batch-edit">
  299. <edit />
  300. </el-icon>
  301. </template>
  302. </el-popover>
  303. </div>
  304. </template>
  305. </div>
  306. <div class="commission-content sa-flex">
  307. <div>
  308. <div class="col-item" v-for="level in state.levelData" :key="level">
  309. {{ level.name }}
  310. </div>
  311. </div>
  312. <div>
  313. <div class="sa-flex" v-for="level in state.commission_goods.commission_rules"
  314. :key="level">
  315. <template v-for="commission in state.commission_config_temp.level"
  316. :key="commission">
  317. <div v-if="level[commission]" class="col-item commission-item">
  318. <el-input v-model="level[commission].rate" type="number"
  319. :disabled="level[commission].money != ''">
  320. <template #append>%</template>
  321. </el-input>
  322. </div>
  323. </template>
  324. </div>
  325. </div>
  326. </div>
  327. </template>
  328. </div>
  329. </el-form>
  330. </el-scrollbar>
  331. </el-main>
  332. <el-footer class="sa-footer--submit sa-flex sa-row-right">
  333. <el-button type="primary" @click="onConfirm">确定</el-button>
  334. </el-footer>
  335. </el-container>
  336. </div>