<?php namespace App\Presenters; use App\Http\Services\StandardBrandService; class StandardBrandNameListPresenter { public function render($name, $fieldText, $value = null, $option = []) { //因为这个组件是专门给标准品牌用的,所以可以直接去获取标准列表展示出来 $standardBrandNameList = ''; if ($value) { $standardBrandNameList = (new StandardBrandService())->getStandardBrandNameListByBrandIds($value); } $isRequired = \Arr::get($option, 'required', false); $requiredHtml = $isRequired ? '<span style="color: red;margin-right: 3px">*</span>' : ''; $html = <<<EOF <label class="layui-form-label"> $requiredHtml $fieldText</label> <div class="layui-input-block" style="width: 80%"> <input type="hidden" name="$name" value="$value" id="$name"> <div class="layui-col-md7"> <textarea rows="7" placeholder="标准品牌名称,多个用英文逗号隔开" class="layui-textarea" id="${name}_name_list">$standardBrandNameList</textarea> <blockquote class="layui-elem-quote" id="valid_${name}_name_list">$standardBrandNameList</blockquote> <span style="color: red" id="invalid_${name}_name_list"></span> </div> <div class="layui-col-md5"> <button type="button" class="layui-btn-sm layui-btn" id="check_and_add_${name}_name_list" style="margin-left: 10px;">验证并加入</button> <p style="margin-top: 130px;margin-left: 10px"></p> </div> </div> <script> $(document).on('click','#check_and_add_${name}_name_list',function () { let standardBrandNameList = $('#${name}_name_list').val(); let url = '/api/commonData/checkStandardBrandNameList'; layer.load(); var self = $(this); $.ajax({ url: url, type: 'POST', async: true, data: { standard_brand_name_list: standardBrandNameList }, dataType: 'json', timeout: 20000, success: function (res) { let brandCount = 0; layer.closeAll(); if (res.code === 0) { //得到结果后还要操作div let data = res.data; let invalidBrandNameList = data.invalid_brand_name_list; let validBrandIds = data.valid_brand_ids; let validBrandNameList = data.valid_brand_name_list; let standardBrandIds = $('#${name}').val(); standardBrandIds = standardBrandIds.split(','); standardBrandIds = validBrandIds; standardBrandIds = array_unique(array_remove_empty(standardBrandIds)); $('#${name}').val(standardBrandIds.join(',')); // let validStandardBrandNameList = $('#valid_${name}_name_list').text(); // validStandardBrandNameList = validStandardBrandNameList.split(','); let validStandardBrandNameList = validBrandNameList; validStandardBrandNameList = array_unique(array_remove_empty(validStandardBrandNameList)); brandCount = validStandardBrandNameList.length; $('#valid_${name}_name_list').text(validStandardBrandNameList.join(',')); // $('#${name}_name_list').val(validStandardBrandNameList.join(',')); // let invalidStandardBrandNameList = $('#invalid_${name}_name_list').val(); // let invalidStandardBrandNameList = ''; // invalidStandardBrandNameList = invalidStandardBrandNameList.split(','); // invalidStandardBrandNameList = $.merge(invalidStandardBrandNameList, invalidBrandNameList); $('#invalid_${name}_name_list').text(''); let invalidStandardBrandNameList = invalidBrandNameList; invalidStandardBrandNameList = array_unique(array_remove_empty(invalidStandardBrandNameList)); if (invalidStandardBrandNameList.length > 0){ let text = '品牌名称 : ' + invalidStandardBrandNameList.join('、') + ' 未匹配到标准品牌'; $('#invalid_${name}_name_list').text(text); $('#invalid_${name}_name_list').val(invalidStandardBrandNameList.join('、')); } self.next().text(brandCount+'个'); } else { layer.msg(res.msg, {icon: 5}); } }, error: function () { layer.closeAll(); layer.msg('网络错误', {icon: 5}); } }); }); </script> EOF; return $html; } }