品优购项目商品规格详情

后端

 public function goodsItem($id){

       $goods=\app\api\model\Goods::with(['images','specGoods'])->find($id)->toArray();
       $goods['goods_attr']=json_decode($goods['goods_attr']);
       $valueIds=array_unique(explode('_',implode('_',array_column($goods['specGoods'],'value_ids'))));
       $spec=Spec_value::with('spec')->whereIn('id',$valueIds)->select()->toArray();
       $res=[];
       foreach ($spec as $val){
           $res[$val['spec_id']]=[
               'spec_id'=>$val['spec_id'],
               'spec_name'=>$val['spec_name'],
               'spec_values'=>[]
           ];
       }
       foreach ($spec as $val){
           $res[$val['spec_id']]['spec_values'][]=$val;
       }
       // 组合当前商品的SKU的集合
        $values_ids_map=[];
       foreach($goods['specGoods'] as $val){
           $values_ids_map[$val['value_ids']]=[
               'id'=>$val['id'],
               'price'=>$val['price']
           ];
       }
       // 转换成JSON格式
        $values_ids_map=json_encode($values_ids_map,JSON_UNESCAPED_UNICODE);
        return view('item',[
            'info'=>$goods,
            'spec'=>$res,
            'values_ids_map'=>$values_ids_map
        ]);
    }

前段js事件

<script>
	$(function () {
		// raw是过滤方法,意思是:不使用(默认)转义
		values_ids_map={$values_ids_map|raw}

		// 给a绑定点击事件
		$('#specification').find('a').click(function () {
			// 当前这一行所有的a标签选中效果删除
			$(this).parents('dl').find('a').removeClass();
			// 给当前选中的的a标签设置class
			$(this).addClass('selected')
			//获取当前点击a标签的spec_value_id
			var spec_value_id=[];
			$('#specification a.selected').each(function (i) {
				spec_value_id.push($("#specification a.selected").eq(i).attr('spec_value_id'))
			})
			// 拼接成字符串
			spec_value_id=spec_value_id.join('_')
			// 取出商品价格
			var goodsPrice= values_ids_map[spec_value_id].price
			$('#goodsPrice').html(goodsPrice)
		})
	})
</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呀哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值