selfMention.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. define({
  2. name: "selfMention",
  3. template: `
  4. <div id="selfMention">
  5. <el-form label-width="15%" >
  6. <div id="vue_head">
  7. <div class="base_set">
  8. <div class="vue-main-title">
  9. <div class="vue-main-title-left"></div>
  10. <div class="vue-main-title-content">{{form.set.plugin_name}}</div>
  11. </div>
  12. <div class="vue-main-form">
  13. <el-form-item label="独立规则">
  14. <el-checkbox v-model="form.item.has_independent" :true-label="1" :false-label="0">启用独立佣金比例</el-checkbox>
  15. <div class="tip">启用独立分红金额设置,此商品拥有独立的分红金额,不受默认设置限制</div>
  16. </el-form-item>
  17. <el-form-item label="独立分红金额">
  18. <div style="display:flex">
  19. <el-input v-model="form.item.ratio" style="width:30%;" :min="0" oninput="if(value<0)value=0" type="number">
  20. <template slot="append">% 固定</template>
  21. </el-input>
  22. <el-input v-model="form.item.amount" style="width:30%;" :min="0" oninput="if(value<0)value=0" type="number">
  23. <template slot="append">元</template>
  24. </el-input>
  25. </div>
  26. <div class="tip">如果比例为空或等于0,则使用固定规则,如果都为空或等于0则使用默认规则</div>
  27. </el-form-item>
  28. <el-form-item label="自提点分配">
  29. <el-radio v-model="form.item.assign" :label="0">全部</el-radio>
  30. <el-radio v-model="form.item.assign" :label="1">指定自提点</el-radio>
  31. </el-form-item>
  32. <el-form-item label="选择自提点" required v-if="form.item.assign == 1">
  33. <el-button type="success" @click="choose_goods_show = true">点击搜索</el-button>
  34. <div class="tip">库存为空时,则不限制走商品库存;有设置库存则走自提点库存,库存为0时前端不显示该提点</div>
  35. </el-form-item>
  36. <el-form-item label=" " v-if="form.item.assign == 1">
  37. <div v-for="(item,index) in form.item.deliverAssign" :key="index" class="deliverAssign">
  38. <el-input v-model="item.has_one_deliver.deliver_name" style="width:30%;" disabled></el-input>
  39. <div class="stock_sum"><span class="stock_sum_append">库存</span><el-input v-model="item.stock_sum" style="width:30%;"></el-input><i class="el-icon-delete" @click="delStock(index,item.package_deliver_id)"></i></div>
  40. </div>
  41. </el-form-item>
  42. </div>
  43. </div>
  44. </div>
  45. </el-form>
  46. <!-- 选择图片弹窗 -->
  47. <el-dialog :visible.sync="choose_goods_show" width="60%" left title="选择自提点">
  48. <div>
  49. <div class="search_line">
  50. <el-input style="width:90%" placeholder="" v-model="keyword"></el-input>
  51. <el-button @click="searchData">搜索</el-button>
  52. </div>
  53. <el-table :data="goodsData" style="width: 100%;height:500px;overflow:auto" v-loading="loading">
  54. <el-table-column label=" " align="" >
  55. <template slot-scope="scope">
  56. <div style="display:flex;">
  57. <span class="nickname_card">{{scope.row.deliver_name}} [ {{scope.row.id}} ]</span>
  58. </div>
  59. </template>
  60. </el-table-column>
  61. <el-table-column label="" align="center">
  62. <template slot-scope="scope">
  63. <span style="color:#399fbd" @click="btnSelect(scope.row)" onmouseover="this.style.cursor='pointer'">
  64. 选择
  65. </span>
  66. </template>
  67. </el-table-column>
  68. </el-table>
  69. </div>
  70. <span slot="footer" class="dialog-footer">
  71. <el-button @click="choose_goods_show = false">取 消</el-button>
  72. </span>
  73. </el-dialog>
  74. </div>
  75. `,
  76. data(){
  77. return {
  78. choose_goods_show:false,
  79. goodsData:[],
  80. loading:false,
  81. keyword:""
  82. }
  83. },
  84. mounted(){
  85. console.log(this.form,'d')
  86. },
  87. methods: {
  88. searchData(){
  89. this.loading = true
  90. this.$http.post(this.http_url +'plugin.package-deliver.admin.goods-widget.get-search-deliver',{
  91. keyword:this.keyword,
  92. is_ajax:1,
  93. goods_id:this.form.item.goods_id
  94. }).then(response => {
  95. if(response.data.result==1){
  96. this.$message({
  97. message: response.data.msg,
  98. type: 'success'
  99. });
  100. this.loading = false
  101. this.goodsData = response.data.data
  102. }
  103. else{
  104. this.$message.error(response.data);
  105. }
  106. }),function(res){
  107. console.log(res);
  108. };
  109. },
  110. btnSelect(data){
  111. this.form.item.deliverAssign.push({
  112. package_deliver_id:data.id,
  113. has_one_deliver:{
  114. deliver_name:data.deliver_name
  115. },
  116. stock_sum:""
  117. })
  118. this.form.item.deliverAssign = this.form.item.deliverAssign.filter((value,index,array)=>{
  119. //根据自己的条件进行过滤
  120. return array.findIndex(item=>item.package_deliver_id === value.package_deliver_id) === index
  121. })
  122. this.choose_goods_show = false
  123. },
  124. delStock(index,deliver_id){
  125. this.$http.post(this.http_url +'plugin.package-deliver.admin.goods-widget.del-deliver',{
  126. deliver_id,
  127. goods_id:this.form.item.goods_id ? this.form.item.goods_id : ""
  128. }).then(response => {
  129. if(response.data.result==1){
  130. this.$message({
  131. message: response.data.msg,
  132. type: 'success'
  133. });
  134. this.form.item.deliverAssign.splice(index,1)
  135. }
  136. else{
  137. this.$message.error(response.data);
  138. }
  139. }),function(res){
  140. console.log(res);
  141. };
  142. },
  143. validate(){
  144. let deliverAssign = JSON.parse(JSON.stringify(this.form.item.deliverAssign))
  145. deliverAssign.forEach(element => {
  146. delete element.has_one_deliver
  147. });
  148. if(this.form.item.assign == 0 ){
  149. deliverAssign = []
  150. }
  151. if(this.form.item.assign == 1 && deliverAssign.length == 0){
  152. this.$message.error("请选择自提点");
  153. return false
  154. }else{
  155. return {
  156. has_independent:this.form.item.has_independent,
  157. ratio:this.form.item.ratio,
  158. amount:this.form.item.amount,
  159. assign:this.form.item.assign,
  160. plugin_name:this.form.item.plugin_name,
  161. deliverAssign
  162. }
  163. }
  164. }
  165. },
  166. style: `
  167. .deliverAssign{
  168. margin-bottom: 20px;
  169. display: flex;
  170. }
  171. .deliverAssign .el-input{
  172. margin-right: 20px;
  173. }
  174. .stock_sum{
  175. width:100%;
  176. display:flex;
  177. align-items: center;
  178. }
  179. .stock_sum_append{
  180. background-color: #F5F7FA;
  181. color: #909399;
  182. vertical-align: middle;
  183. border: 1px solid #DCDFE6;
  184. border-radius: 4px;
  185. padding: 0 20px;
  186. white-space: nowrap;
  187. }
  188. #selfMention input::-webkit-outer-spin-button,
  189. #selfMention input::-webkit-inner-spin-button {
  190. -webkit-appearance: none;
  191. }
  192. #selfMention input[type="number"] {
  193. -moz-appearance: textfield;
  194. }
  195. `,
  196. props: {
  197. form: {
  198. // type: Object,
  199. default() {
  200. return {}
  201. }
  202. },
  203. http_url:{
  204. type:String,
  205. default() {
  206. return "";
  207. },
  208. }
  209. }
  210. })