fastadmin 后台sku 插件

devtools/2025/3/1 15:31:56/

 老规矩先上效果图

 新引用需要用到的js

define(['backend'], function (Backend) {require.config({paths: {// 'vue': '../js/vue',//js省略,如果是vue.min.js,就学vue.min'layui': '/assets/LayuiSpzj/layui/layui',//js省略,如果是vue.min.js,就学vue.min// 'skuTable': '/assets/laySku-master/lay-module/skuTable',//js省略,如果是vue.min.js,就学vue.min// 'sorTable': '/assets/laySku-master/lay-module/sorTable',//js省略,如果是vue.min.js,就学vue.min},shim: {// 'vue': {//     deps: ['jquery'],//     exports: '$.fn.extend'// },'layui': {deps: ['css!/assets/LayuiSpzj/layui/css/layui.css'],init:function (){return this.layui.config({ base:'/assets/laySku-master/lay-module/'} );}},// 'skuTable': {//     // deps: ['/assets/laySku-master/layui/layui.js'],//     exports: 'skuTable'// },// 'sorTable': {//     deps: ['/assets/laySku-master/layui/layui.js','/assets/laySku-master/lay-module/sorTable.js'],//     exports: 'sorTable'// },}});});

sku.html

<!doctype html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>动态SKU表</title><!-- 引入 layui.css --><link rel="stylesheet" type="text/css" href="__CDN__/assets/laySku-master/layui/css/layui.css"/><script src="__CDN__/assets/laySku-master/layui/layui.js"></script><!--<script src="https://www.layuicdn.com/layui-v2.5.5/layui.js"></script>-->
<!--    <script src="__CDN__/assets/laySku-master/lay-module/skuTable.js"></script>-->
</head>
<body><div class="layui-container"><form action="" class="layui-form fairy-form"><!-- sku参数表 --><div class="layui-form-item"><label class="layui-form-label">规格:</label><div class="layui-input-block"><div class="fairy-spec-table"></div></div></div><!-- 动态sku表 --><div class="layui-form-item"><label class="layui-form-label">SKU表:</label><div class="layui-input-block"><div class="fairy-sku-table"></div></div></div><div class="layui-form-item"><div class="layui-input-block"><button class="layui-btn" lay-submit lay-filter="submit">立即提交</button><button type="reset" class="layui-btn layui-btn-primary">重置</button></div></div></form>
</div>
<!-- 引入 layui.js -->
<!--<script src="./layui/layui.js"></script>-->
<!--&lt;!&ndash; 引入 skuTable.js &ndash;&gt;-->
<script src="__CDN__/assets/laySku-master/lay-module/skuTable.js"></script>
<script>var form = layui.form, skuTable = skuTable;//注意!!! 注意!!! 注意!!!//如果配置了相关接口请求的参数,请置本示例于服务器中预览,不然会有浏览器跨域问题//示例中的json文件仅做格式返回参考,若多次执行添加规格后再为新增后的规格添加规格值,会发现所有新增的规格都增加了该规格值。注意!此处并非是bug,原因是因为示例中返回的新增规格值id是重复的,而在正常接口请求每次返回的新增规则id是不一样的var obj = skuTable.render({//sku表相同属性值是否合并行rowspan: true,//上传接口地址//接口要求返回格式为 {"code": 200, "data": {"url": "xxx"}, "msg": ""}uploadUrl: './json/upload.json',//添加规格接口地址,如果为空则表示不允许增加规格//接口要求返回格式为 {"code": 200, "data": {"id": "xxx"}, "msg": ""}specCreateUrl: './json/specCreate.json',//添加规格值接口地址,如果为空则表示不允许增加规格值//接口要求返回格式为 {"code": 200, "data": {"id": "xxx"}, "msg": ""}specValueCreateUrl: './json/specValueCreate.json',//sku表格配置参数skuTableConfig: {thead: [{title: '图片', icon: ''},{title: '销售价(元)', icon: 'layui-icon-cols'},{title: '市场价(元)', icon: 'layui-icon-cols'},{title: '成本价(元)', icon: 'layui-icon-cols'},{title: '库存', icon: 'layui-icon-cols'},{title: '状态', icon: ''},],tbody: [{type: 'image', field: 'picture', value: '', verify: '', reqtext: ''},{type: 'input', field: 'price', value: '0', verify: 'required|number', reqtext: '销售价不能为空'},{type: 'input', field: 'market_price', value: '0', verify: 'required|number', reqtext: '市场价不能为空'},{type: 'input', field: 'cost_price', value: '0', verify: 'required|number', reqtext: '成本价不能为空'},{type: 'input', field: 'stock', value: '0', verify: 'required|number', reqtext: '库存不能为空'},{type: 'select', field: 'status', option: [{key: '启用', value: '1'}, {key: '禁用', value: '0'}], verify: 'required', reqtext: '状态不能为空'},]},//规格数据, 一般从接口获取specData: [{id: "1",title: "颜色",child: [{id: "1", title: "红", checked: true},{id: "2", title: "黄", checked: false},{id: "3", title: "蓝", checked: false}]}, {id: "2",title: "尺码",child: [{id: "4", title: "S", checked: true},{id: "5", title: "M", checked: true},{id: "6", title: "L", checked: false},{id: "7", title: "XL", checked: false}]}, {id: "3",title: "款式",child: [{id: "8", title: "男款", checked: true},{id: "9", title: "女款", checked: true}]}],//sku数据//新增的时候为空对象//编辑的时候可以从后台接收,会自动填充sku表,可以去掉注释看效果// skuData: {//     "skus[1-4-8][picture]": "https://cdn.layui.com/upload/2019_5/168_1559291577683_9348.png",//     "skus[1-4-8][price]": "100",//     "skus[1-4-8][market_price]": "200",//     "skus[1-4-8][cost_price]": "50",//     "skus[1-4-8][stock]": "18",//     "skus[1-4-8][status]": "0",//     "skus[1-4-9][picture]": "",//     "skus[1-4-9][price]": "0",//     "skus[1-4-9][market_price]": "0",//     "skus[1-4-9][cost_price]": "0",//     "skus[1-4-9][stock]": "0",//     "skus[1-4-9][status]": "1",//     "skus[1-5-8][picture]": "",//     "skus[1-5-8][price]": "0",//     "skus[1-5-8][market_price]": "0",//     "skus[1-5-8][cost_price]": "0",//     "skus[1-5-8][stock]": "0",//     "skus[1-5-8][status]": "1",//     "skus[1-5-9][picture]": "",//     "skus[1-5-9][price]": "0",//     "skus[1-5-9][market_price]": "0",//     "skus[1-5-9][cost_price]": "0",//     "skus[1-5-9][stock]": "0",//     "skus[1-5-9][status]": "1"// }});form.on('submit(submit)', function (data) {//获取规格数据console.log(obj.getSpecData());//获取表单数据console.log(data.field);var state = Object.keys(data.field).some(function (item, index, array) {return item.startsWith('skus');});state ? layer.alert(JSON.stringify(data.field), {title: '提交的数据'}) : layer.msg('sku表数据不能为空', {icon: 5, anim: 6});return false;});
</script>
</body>
</html>

edit.html

        <div id="t-2" class="tab-pane "><iframe id="iframe" onload="GetIframeStatus()" frameborder=0 width=100% height=100% style="display: block;min-height: 1000px" marginheight=0 marginwidth=0 scrolling=auto src="{:url('goods/goods/attr')}?ids={$row.id}"></iframe><input type="hidden" id="goods_attr_value" name="row[goods_attr_value]" value="{$row.goods_attr_value|htmlentities}"><!--            <input type="text" id="goods_attr_value" name="row[goods_attr_value]" value="{$row.goods_attr_value|htmlentities}">--><input type="hidden" id="goods_attr" name="row[goods_attr]" value="{$row.goods_attr|htmlentities}"></div><script !src="">var Timeout;var iframe/*页面加载完执行*/window.onload = function () {iframe = document.getElementById("iframe");GetIframeStatus(iframe)}/*窗口改变时执行*/window.onresize = function () {GetIframeStatus(iframe)}// iframe高度自适应function GetIframeStatus(iframe,Height) {Timeout = setTimeout(function () {if (!iframe) return;iframe.height = (iframe.Document ? iframe.Document.body.scrollHeight : iframe.contentDocument.body.offsetHeight)}, 200)}function receiveValue(value) {// console.log("Received value in parent:", value);// 处理接收到的值// console.log("Received value in parent:", JSON.stringify(value));$("#goods_attr_value").val(JSON.stringify(value));}
</script>


http://www.ppmy.cn/devtools/163663.html

相关文章

SpringBoot 3.0微服务架构实战:从设计到部署

# SpringBoot 3.0微服务架构实战&#xff1a;从设计到部署 理解微服务架构 什么是微服务架构 在传统的单体应用架构中&#xff0c;整个应用作为一个单独的单元被构建和部署。而在微服务架构中&#xff0c;应用被拆分成多个小的、独立的服务单元&#xff0c;每个服务都有自己独立…

Postman 11.34 最新版安装与API测试入门教程(Windows平台)

一、软件定位与核心功能 Postman 是全球最流行的API开发与测试工具&#xff0c;支持REST、SOAP、GraphQL等协议&#xff0c;提供接口调试、自动化测试、文档生成等功能。2025年版本新增AI智能参数生成和团队协作实时同步特性。 二、安装环境与下载准备 1. 系统要求 项目最低…

解读DeepSeek开源的flashMLA项目的意义

DeepSeek开源的FlashMLA项目是一项针对英伟达Hopper架构GPU&#xff08;如H100/H800&#xff09;优化的高效MLA&#xff08;Multi-Layer Attention&#xff09;解码内核&#xff0c;其设计逻辑和架构体现了对AI计算效率与资源利用率的深度优化&#xff0c;对人工智能领域具有显…

【SpringBoot】【log】 自定义logback日志配置

前言&#xff1a;默认情况下&#xff0c;SpringBoot内部使用logback作为系统日志实现的框架&#xff0c;将日志输出到控制台&#xff0c;不会写到日志文件。如果在application.properties或application.yml配置&#xff0c;这样只能配置简单的场景&#xff0c;保存路径、日志格…

readline模块详解!!【Node.js】

‌“书到用时方恨少&#xff0c;事非经过不知难。”‌ —— 陆游 目录 ‌readline 是什么&#xff1f;‌基本用法&#xff1a;‌创建 Interface 类&#xff1a;核心流程‌&#xff1a; ‌Interface 类的关键事件&#xff1a;line&#xff1a;close&#xff1a;pause&#xff1a…

第三方应用程序接入DeepSeek服务的安全策略与实践

摘要 本文探讨了如何安全地通过第三方应用程序接入DeepSeek服务。对于追求企业级安全和无缝IDE体验的开发者及团队&#xff0c;QodoGen是理想选择&#xff1b;而对于希望快速访问DeepSeek-R1解决方案的用户&#xff0c;Perplexity AI提供的基于Web的应用无需安装即可使用&#…

Island架构与部分水合技术解析:下一代Web应用的性能突围

引言&#xff1a;突破传统SSR的性能瓶颈 Netflix采用Island架构重构文档中心后&#xff0c;LCP速度从2.4s提升至380ms&#xff0c;JS负载减少94%。The Guardian通过Astro实现内容站点现代化改造&#xff0c;首次输入延迟降低76%&#xff0c;SEO流量增长210%。Vercel官方数据显…

实验环境搭建集锦(docker linux ros2+强化学习环境+linux上单片机串口调试)

为了记住一些实验环境配置开的文章&#xff0c;边配置边记&#xff0c;免得之后忘了。 Docker环境搭建 yay -S docker //下载docker docker info //查看docker配置 sudo systemctl start docker //系统配置打开docker sudo systemctl enable docker //系统配置后台开启d…