AI帮写代码初体验

打印 上一主题 下一主题

主题 1047|帖子 1047|积分 3145

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
陪同着AI的强势发展,不停没觉得对工作有什么实际性的帮助,只感觉是更加强大的搜刮工具,直至本日实验让AI帮我写代码,直呼强出天涯!
先演示需要做的功能:

功能需求:把一段JSON数据渲染成可视化的流程节点,并且节点信息可以编辑、删除。
以下是跟阿里通义的部分对话过程:
先上传了JSON格式数据
 

直接陈诉需求

有需求继续提出 
 

 这里太6了,我形貌的比较含糊,但是通义明确的非常全面到位!

固然写的代码会报错,但是它能解决啊!
 

提出逻辑瑕疵也能修正 
 
这里上点难度了,需要找出“当前审批节点”,AI还是可以胜任的!
以下是端赖AI天生的html代码
  1. <style>
  2.     .process-node {
  3.         display: flex;
  4.         align-items: center;
  5.         justify-content: space-between;
  6.         padding: 10px;
  7.         margin: 5px 0;
  8.         border: 1px solid #ddd;
  9.         border-radius: 5px;
  10.         cursor: pointer;
  11.     }
  12.     .process-node.completed { background-color: #e6ffe6; } /* 已审批 */
  13.     .process-node.pending { background-color: #ffe6e6; } /* 未审批 */
  14.     .process-node.current {
  15.         background-color: #ffffcc;
  16.         border: 2px solid red; /* 更醒目的边框 */
  17.         font-weight: bold; /* 加粗文本 */
  18.     }
  19.     .edit, .delete, .set-current { color: blue; text-decoration: underline; }
  20.     .hidden { display: none; }
  21.     .input-group { display: flex; }
  22.     .input-group input { margin-right: 10px; }
  23. </style>
  24. <form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
  25.     <div class="col-xs-12">
  26.         <h1>{$head_info.uname}{$row.shijian}绩效考核流程</h1>
  27.         <div id="processContainer"></div>
  28.     </div>
  29.     <div class="col-xs-12">
  30.         <div class="form-group">
  31.             <label class="control-label col-xs-12 col-sm-4">审批节点</label>
  32.             <div class="col-xs-12 col-sm-8">
  33.                 <textarea rows="15" class="form-control" name="row[sp_node]" id="spNodeTextarea">{$row.sp_node}</textarea>
  34.             </div>
  35.         </div>
  36.     </div>
  37.     <div class="col-xs-12">
  38.         <div class="form-group">
  39.             <label class="control-label col-xs-12 col-sm-4">状态</label>
  40.             <div class="col-xs-12 col-sm-8">
  41.                 <input placeholder="状态" class="form-control" name="row[status]" type="text" value="{$row.status}" id="statusInput">
  42.             </div>
  43.         </div>
  44.     </div>
  45.     <div class="col-xs-12">
  46.         <div class="form-group">
  47.             <label class="control-label col-xs-12 col-sm-4">状态中文</label>
  48.             <div class="col-xs-12 col-sm-8">
  49.                 <input placeholder="状态中文" class="form-control" name="row[status_zh]" type="text" value="{$row.status_zh}" id="statusZhInput">
  50.             </div>
  51.         </div>
  52.     </div>
  53.     <div class="form-group layer-footer">
  54.         <label class="control-label col-xs-12 col-sm-4"></label>
  55.         <div class="col-xs-12 col-sm-8">
  56.             <button type="submit" class="btn btn-primary btn-embossed">{:__('OK')}</button>
  57.             <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
  58.         </div>
  59.     </div>
  60. </form>
  61. <script src="/assets/js/../libs/jquery/dist/jquery.min.js"></script>
  62. <script>
  63.     // 假设 $row.sp_node 是一个合法的 JSON 字符串
  64.     const processSteps = JSON.parse('{$row.sp_node}'.replace(/&quot;/g, '"'));
  65.     function renderProcessNodes(steps) {
  66.         $('#processContainer').empty();
  67.         steps.forEach((step, index) => {
  68.             const nodeClass = step.SpStatus == "1" ? 'completed' : 'pending';
  69.             const isCurrent = index === parseInt($('#statusInput').val(), 10) ? 'current' : '';
  70.             const $node = $(`<div class="process-node ${nodeClass} ${isCurrent}" data-index="${index}">
  71.                                 <span>${escapeHtml(step.SpName)} - ${escapeHtml(step.Approver || '未指定')} - ${escapeHtml(step.SpTime || '未完成')}</span>
  72.                                 <div><button class="set-current">设为当前节点</button> | <span class="edit">编辑</span> | <span class="delete">删除</span></div>
  73.                              </div>`);
  74.             $('#processContainer').append($node);
  75.         });
  76.         // 使用事件委托来处理动态添加的元素的事件
  77.         $('#processContainer').off('click', '.set-current').on('click', '.set-current', function(event) {
  78.             event.stopPropagation(); // 阻止事件冒泡
  79.             
  80.             const dataIndex = $(this).closest('.process-node').data('index');
  81.             
  82.             updateNodeToCurrent(dataIndex);
  83.         });
  84.         // 编辑和删除功能
  85.         $('#processContainer').on('click', '.edit', function(event) {
  86.             event.stopPropagation(); // 阻止事件冒泡到父级元素
  87.             
  88.             const $node = $(this).closest('.process-node');
  89.             const dataIndex = $node.data('index');
  90.             if (typeof processSteps[dataIndex] === 'undefined') {
  91.                 console.error("无法找到对应的步骤信息,索引:", dataIndex);
  92.                 return;
  93.             }
  94.             const step = processSteps[dataIndex];
  95.             // 移除当前节点下的已有编辑框
  96.             $node.find('.input-group').remove();
  97.             $node.find('.edit, .delete, .set-current').hide(); // 隐藏所有链接
  98.             const $inputGroup = $(`<div class="input-group">
  99.                                         <input type="text" placeholder="负责人" value="${escapeHtml(step.Approver || '')}">
  100.                                         <input type="text" placeholder="审批时间" value="${escapeHtml(step.SpTime || '')}">
  101.                                         <button class="save">保存</button>
  102.                                    </div>`);
  103.             $(this).parent().before($inputGroup);
  104.             $('.save', $inputGroup).click(function() {
  105.                 const newApprover = $('input:first', $inputGroup).val();
  106.                 const newSpTime = $('input:last', $inputGroup).val();
  107.                 if (typeof processSteps[dataIndex] !== 'undefined') { // 确认步骤信息存在
  108.                     step.Approver = newApprover;
  109.                     step.SpTime = newSpTime;
  110.                     $inputGroup.remove();
  111.                     $node.find('.edit, .delete, .set-current').show(); // 重新显示所有链接
  112.                     renderProcessNodes(processSteps); // 重新渲染
  113.                     updateTextarea(); // 更新textarea内容
  114.                 } else {
  115.                     console.error("无法更新步骤信息,索引:", dataIndex);
  116.                 }
  117.             });
  118.         });
  119.         $('#processContainer').on('click', '.delete', function(event) {
  120.             event.stopPropagation(); // 阻止事件冒泡到父级元素
  121.             
  122.             const $node = $(this).closest('.process-node');
  123.             const dataIndex = $node.data('index');
  124.             if (typeof processSteps[dataIndex] === 'undefined') {
  125.                 console.error("无法找到对应的步骤信息,索引:", dataIndex);
  126.                 return;
  127.             }
  128.             processSteps.splice(dataIndex, 1);
  129.             renderProcessNodes(processSteps); // 重新渲染
  130.             updateTextarea(); // 更新textarea内容
  131.         });
  132.     }
  133.     function updateNodeToCurrent(dataIndex) {
  134.         for (let i = 0; i < processSteps.length; i++) {
  135.             if (i < dataIndex) {
  136.                 processSteps[i].SpStatus = "1"; // 已审批
  137.             } else {
  138.                 processSteps[i].SpStatus = "0"; // 未审批
  139.             }
  140.         }
  141.         $('#statusInput').val(dataIndex);
  142.         renderProcessNodes(processSteps); // 重新渲染
  143.         $('#statusZhInput').val(escapeHtml(processSteps[dataIndex].SpName)); // 设置状态中文为节点的名称
  144.         updateTextarea(); // 更新textarea内容
  145.     }
  146.     function updateTextarea() {
  147.         const updatedJson = JSON.stringify(processSteps, null, 4);
  148.         $('#spNodeTextarea').val(updatedJson);
  149.     }
  150.     function escapeHtml(unsafe) {
  151.         return unsafe
  152.             .replace(/&/g, "&amp;")
  153.             .replace(/</g, "&lt;")
  154.             .replace(/>/g, "&gt;")
  155.             .replace(/"/g, "&quot;")
  156.             .replace(/'/g, "&#039;");
  157.     }
  158.     $(document).ready(function() {
  159.         renderProcessNodes(processSteps); // 渲染流程节点
  160.     });
  161. </script>
复制代码
全程我只提需求,代码根本不用动,换作自己手撸,不得最少一天时间!
AI帮写可用性太高啦! 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王國慶

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表