edit.php 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <?php
  2. use yii\widgets\ActiveForm;
  3. use common\helpers\Html;
  4. use addons\TinyShop\common\enums\AttributeValueTypeEnum;
  5. $this->title = $model->isNewRecord ? '创建' : '编辑';
  6. $this->params['breadcrumbs'][] = ['label' => '商品参数', 'url' => ['index']];
  7. $this->params['breadcrumbs'][] = $this->title;
  8. $updateName = $model->formName() . '[valueData][update]';
  9. $createName = $model->formName() . '[valueData][create]';
  10. ?>
  11. <div class="row">
  12. <div class="col-lg-12">
  13. <div class="box">
  14. <div class="box-header with-border">
  15. <h3 class="box-title">基本信息</h3>
  16. </div>
  17. <?php $form = ActiveForm::begin([]); ?>
  18. <div class="box-body">
  19. <div class="col-lg-12">
  20. <?= $form->field($model, 'title')->textInput(); ?>
  21. <?= $form->field($model, 'sort')->textInput(); ?>
  22. <table class="table table-hover">
  23. <thead>
  24. <tr>
  25. <th>排序</th>
  26. <th>所属类型</th>
  27. <th>属性名称</th>
  28. <th>属性值</th>
  29. <th>操作</th>
  30. </tr>
  31. </thead>
  32. <tbody>
  33. <?php foreach ($model->value as $key => $option) { ?>
  34. <tr id="<?= $option['id']; ?>">
  35. <td class="col-lg-1">
  36. <?= Html::textInput($updateName . '[sort][]', $option['sort'], [
  37. 'class' => 'form-control sort',
  38. ]) ?>
  39. </td>
  40. <td class="col-lg-1">
  41. <?= Html::dropDownList($updateName . '[type][]', $option['type'], AttributeValueTypeEnum::getMap(),
  42. ['class' => 'form-control type']) ?>
  43. </td>
  44. <td class="col-lg-2">
  45. <?= Html::textInput($updateName . '[title][]', $option['title'], [
  46. 'class' => 'form-control title',
  47. ]) ?>
  48. </td>
  49. <td class="col-lg-2 value"><?= $option['value']; ?></td>
  50. <td class="col-lg-2">
  51. <?= Html::hiddenInput($updateName . '[id][]', $option['id']) ?>
  52. <?= Html::hiddenInput($updateName . '[value][]', $option['value'], [
  53. 'class' => 'hideValue',
  54. ]) ?>
  55. <a href="javascript:void(0);" class="editValue" data-toggle="modal" data-target="#ajaxModalLgForAttribute">
  56. <?php if ($option['type'] > 1) {
  57. echo '属性值编辑';
  58. } ?>
  59. </a>
  60. <a href="javascript:void(0);" class="delete update">删除</a>
  61. </td>
  62. </tr>
  63. <?php } ?>
  64. <tr id="position">
  65. <td colspan="5"><a href="javascript:void(0);" id="add"><i class="iconfont iconplus-circle pointer"></i> 添加属性</a></td>
  66. </tr>
  67. </tbody>
  68. </table>
  69. </div>
  70. </div>
  71. <div class="box-footer text-center">
  72. <span class="btn btn-primary" onclick="beforeSubmit()">保存</span>
  73. <span class="btn btn-white" onclick="history.go(-1)">返回</span>
  74. </div>
  75. <?php ActiveForm::end(); ?>
  76. </div>
  77. </div>
  78. </div>
  79. <!--模拟框加载 -->
  80. <div class="modal fade" id="ajaxModalLgForAttribute" aria-hidden="true">
  81. <div class="modal-dialog">
  82. <div class="modal-content">
  83. <div class="modal-header">
  84. <h4 class="modal-title">属性值编辑</h4>
  85. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
  86. </div>
  87. <div class="modal-body">
  88. <?= Html::textarea('value', '', [
  89. 'class' => 'form-control',
  90. 'id' => 'tmpValue',
  91. 'style' => 'height:200px',
  92. ]); ?>
  93. <div class="help-block">一行为一个属性值,多个属性值用换行输入</div>
  94. </div>
  95. <div class="modal-footer">
  96. <button type="button" class="btn btn-white" data-dismiss="modal">关闭</button>
  97. <button class="btn btn-primary js-confirm" data-dismiss="modal">保存</button>
  98. </div>
  99. </div>
  100. </div>
  101. </div>
  102. <!--添加模板-->
  103. <script id="addHtml" type="text/html">
  104. <tr>
  105. <td class="col-lg-1">
  106. <?= Html::textInput($createName . '[sort][]', 999, [
  107. 'class' => 'form-control sort',
  108. ]) ?>
  109. </td>
  110. <td class="col-lg-1">
  111. <?= Html::dropDownList($createName . '[type][]', 1, AttributeValueTypeEnum::getMap(), ['class' => 'form-control type']) ?>
  112. </td>
  113. <td>
  114. <?= Html::textInput($createName . '[title][]', '', [
  115. 'class' => 'form-control title',
  116. ]) ?>
  117. </td>
  118. <td class="col-lg-2 value"></td>
  119. <td class="col-lg-2">
  120. <?= Html::hiddenInput($createName . '[value][]', '', [
  121. 'class' => 'hideValue',
  122. ]); ?>
  123. <a href="javascript:void(0);" class="editValue" data-toggle="modal" data-target="#ajaxModalLgForAttribute"></a>
  124. <a href="javascript:void(0);" class="delete">删除</a>
  125. </td>
  126. </tr>
  127. </script>
  128. <script>
  129. var editValue;
  130. // 增加属性
  131. $('#add').click(function () {
  132. let html = template('addHtml', []);
  133. $('#position').before(html);
  134. });
  135. // 属性值编辑
  136. $(document).on("click", ".editValue", function () {
  137. editValue = $(this).parent().parent();
  138. var value = $(editValue).find('.value').text();
  139. if (value) {
  140. var value = value.split(',');
  141. var html = '';
  142. console.log(value);
  143. for (var i = 0; i < value.length; i++) {
  144. if (value[i] !== "") {
  145. if ((i + 1) == value.length) {
  146. html += value[i]
  147. } else {
  148. html += value[i] + "\n";
  149. }
  150. }
  151. }
  152. }
  153. $('#tmpValue').val(html);
  154. });
  155. // 确定编辑属性
  156. $(document).on("click", ".js-confirm", function () {
  157. var tmpVal = $('#tmpValue').val();
  158. var value = tmpVal.split("\n");
  159. var html = '';
  160. for (var i = 0; i < value.length; i++) {
  161. if (value[i] !== "" && value[i].length > 0) {
  162. if ((i + 1) == value.length) {
  163. html += value[i]
  164. } else {
  165. html += value[i] + ",";
  166. }
  167. }
  168. }
  169. $(editValue).find('.hideValue').val(html);
  170. $(editValue).find('.value').text(html);
  171. });
  172. // 删除属性
  173. $(document).on("click", ".delete", function () {
  174. $(this).parent().parent().remove()
  175. });
  176. // 选择类型
  177. $(document).on("change", ".type", function () {
  178. let val = $(this).val();
  179. console.log(val);
  180. if (parseInt(val) === 1) {
  181. $(this).parent().parent().find('.editValue').text('');
  182. } else {
  183. $(this).parent().parent().find('.editValue').text('属性值编辑');
  184. }
  185. });
  186. // 验证提交
  187. function beforeSubmit() {
  188. var submit = true;
  189. $('.title').each(function () {
  190. if (!$(this).val()) {
  191. rfAffirm('请填写属性内容');
  192. submit = false;
  193. }
  194. });
  195. $('.sort').each(function () {
  196. if (!$(this).val()) {
  197. rfAffirm('请填写排序内容');
  198. submit = false;
  199. }
  200. if (isNaN($(this).val())) {
  201. rfAffirm('排序只能为数字');
  202. submit = false;
  203. }
  204. });
  205. $('.type').each(function () {
  206. if ($(this).val() > 1) {
  207. var value = $(this).parent().parent().find('.value').text();
  208. if (!value) {
  209. rfAffirm('单选/复选框的属性值不能为空');
  210. submit = false;
  211. }
  212. }
  213. });
  214. if (submit === true) {
  215. $('#w0').submit();
  216. }
  217. }
  218. </script>
粤ICP备19079148号