Browse Source

fix:ai测量素材

super-yimizi 4 days ago
parent
commit
852387949b

+ 1 - 1
application/admin/view/general/ai_measure_config/index.html

@@ -168,7 +168,7 @@
                                             {case value="files"}
                                             {case value="files"}
                                             <div class="form-inline">
                                             <div class="form-inline">
                                                 <input id="c-{$item.name|htmlentities}" class="form-control" size="50" name="row[{$item.name|htmlentities}]" type="text" value="{$item.value|htmlentities}" data-tip="{$item.tip|htmlentities}">
                                                 <input id="c-{$item.name|htmlentities}" class="form-control" size="50" name="row[{$item.name|htmlentities}]" type="text" value="{$item.value|htmlentities}" data-tip="{$item.tip|htmlentities}">
-                                                <span><button type="button" id="faupload-{$item.name|htmlentities}" class="btn btn-danger faupload" data-input-id="c-{$item.name|htmlentities}" data-mimetype="*" data-multiple="{$item.type=='file'?'false':'true'}"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                                <span><button type="button" id="faupload-{$item.name|htmlentities}" class="btn btn-danger faupload" data-input-id="c-{$item.name|htmlentities}" data-multiple="{$item.type=='file'?'false':'true'}"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
                                                 <span><button type="button" id="fachoose-{$item.name|htmlentities}" class="btn btn-primary fachoose" data-input-id="c-{$item.name|htmlentities}" data-multiple="{$item.type=='file'?'false':'true'}"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                                 <span><button type="button" id="fachoose-{$item.name|htmlentities}" class="btn btn-primary fachoose" data-input-id="c-{$item.name|htmlentities}" data-multiple="{$item.type=='file'?'false':'true'}"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                                 <span class="msg-box n-right" for="c-{$item.name|htmlentities}"></span>
                                                 <span class="msg-box n-right" for="c-{$item.name|htmlentities}"></span>
                                             </div>
                                             </div>

+ 8 - 5
application/extra/site.php

@@ -88,17 +88,20 @@ return array (
   'ai_measure_selfie_tutorial_images' => 
   'ai_measure_selfie_tutorial_images' => 
   array (
   array (
     0 => '/uploads/20250908/8bf2111a74a4bd6db079ab615499df89.png',
     0 => '/uploads/20250908/8bf2111a74a4bd6db079ab615499df89.png',
+    1 => '/uploads/20250908/8bf2111a74a4bd6db079ab615499df89.png',
+    2 => '/uploads/20250908/386ce62bbcc5ac36429935d70a9532e5.png',
+    3 => '/uploads/20250908/fb4126747307765a460a52c213120ca6.jpeg',
   ),
   ),
-  'ai_measure_selfie_tutorial_video' => '',
-  'ai_measure_selfie_gyro_voice' => '',
+  'ai_measure_selfie_tutorial_video' => '/uploads/20250908/998603bab0fef3aae2375f948d159c42.mp4',
+  'ai_measure_selfie_gyro_voice' => '/uploads/20250908/9404bcfe977912c9b3af52ca95cea170.mp3',
   'ai_measure_selfie_gyro_example' => '',
   'ai_measure_selfie_gyro_example' => '',
-  'ai_measure_selfie_front_frame' => '',
+  'ai_measure_selfie_front_frame' => '/uploads/20250908/a853a8791646abe996a1dbe8b615a5d0.png',
   'ai_measure_selfie_front_voice' => '',
   'ai_measure_selfie_front_voice' => '',
   'ai_measure_selfie_front_demo' => '',
   'ai_measure_selfie_front_demo' => '',
-  'ai_measure_selfie_side_frame' => '',
+  'ai_measure_selfie_side_frame' => '/uploads/20250908/39d488b7d79e42ea2c9ba6aee4270784.png',
   'ai_measure_selfie_side_voice' => '',
   'ai_measure_selfie_side_voice' => '',
   'ai_measure_selfie_side_demo' => '',
   'ai_measure_selfie_side_demo' => '',
-  'ai_measure_selfie_arms_frame' => '',
+  'ai_measure_selfie_arms_frame' => '/uploads/20250908/2c5eb94b72d5305f366ce6f8326c0352.png',
   'ai_measure_selfie_arms_voice' => '',
   'ai_measure_selfie_arms_voice' => '',
   'ai_measure_selfie_arms_demo' => '',
   'ai_measure_selfie_arms_demo' => '',
   'ai_measure_selfie_countdown_voice' => '',
   'ai_measure_selfie_countdown_voice' => '',

+ 75 - 81
public/assets/js/backend/general/ai_measure_config.js

@@ -27,11 +27,85 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                 }, 1500);
                 }, 1500);
             });
             });
 
 
+            //渲染关联显示字段和存储字段
+            var renderselect = function (id, data, defaultvalue) {
+                var html = [];
+                for (var i = 0; i < data.length; i++) {
+                    html.push("<option value='" + data[i].name + "' " + (defaultvalue == data[i].name ? "selected" : "") + " data-subtext='" + data[i].title + "'>" + data[i].name + "</option>");
+                }
+                var select = $(id);
+                $(select).html(html.join(""));
+                select.trigger("change");
+                if (select.data("selectpicker")) {
+                    select.selectpicker('refresh');
+                }
+            };
+            //关联表切换
+            $(document).on('change', "#c-selectpage-table", function (e, first) {
+                var that = this;
+                Fast.api.ajax({
+                    url: "general/config/get_fields_list",
+                    data: {table: $(that).val()},
+                }, function (data, ret) {
+                    renderselect("#c-selectpage-primarykey", data.fieldList, first ? $("#c-selectpage-primarykey").data("value") : '');
+                    renderselect("#c-selectpage-field", data.fieldList, first ? $("#c-selectpage-field").data("value") : '');
+                    return false;
+                });
+                return false;
+            });
+            //如果编辑模式则渲染已知数据
+            if (['selectpage', 'selectpages'].indexOf($("#c-type").val()) > -1) {
+                $("#c-selectpage-table").trigger("change", true);
+            }
+
+            //切换类型时
+            $(document).on("change", "#c-type", function () {
+                var value = $(this).val();
+                $(".tf").addClass("hidden");
+                $(".tf.tf-" + value).removeClass("hidden");
+                if (["selectpage", "selectpages"].indexOf(value) > -1 && $("#c-selectpage-table option").length == 1) {
+                    //异步加载表列表
+                    Fast.api.ajax({
+                        url: "general/config/get_table_list",
+                    }, function (data, ret) {
+                        renderselect("#c-selectpage-table", data.tableList);
+                        return false;
+                    });
+                }
+            });
+
             //切换显示隐藏变量字典列表
             //切换显示隐藏变量字典列表
             $(document).on("change", "form#add-form select[name='row[type]']", function (e) {
             $(document).on("change", "form#add-form select[name='row[type]']", function (e) {
                 $("#add-content-container").toggleClass("hide", ['select', 'selects', 'checkbox', 'radio'].indexOf($(this).val()) > -1 ? false : true);
                 $("#add-content-container").toggleClass("hide", ['select', 'selects', 'checkbox', 'radio'].indexOf($(this).val()) > -1 ? false : true);
             });
             });
 
 
+            //选择规则
+            $(document).on("click", ".rulelist > li > a", function () {
+                var ruleArr = $("#rule").val() == '' ? [] : $("#rule").val().split(";");
+                var rule = $(this).data("value");
+                var index = ruleArr.indexOf(rule);
+                if (index > -1) {
+                    ruleArr.splice(index, 1);
+                } else {
+                    ruleArr.push(rule);
+                }
+                $("#rule").val(ruleArr.join(";"));
+                $(this).parent().toggleClass("active");
+            });
+
+            //添加向发件人发送测试邮件按钮和方法
+            $('input[name="row[mail_from]"]').parent().next().append('<a class="btn btn-info testmail">' + __('Send a test message') + '</a>');
+            $(document).on("click", ".testmail", function () {
+                var that = this;
+                Layer.prompt({title: __('Please input your email'), formType: 0}, function (value, index) {
+                    Backend.api.ajax({
+                        url: "general/config/emailtest",
+                        data: $(that).closest("form").serialize() + "&receiver=" + value
+                    });
+                });
+
+            });
+
             //删除配置
             //删除配置
             $(document).on("click", ".btn-delcfg", function () {
             $(document).on("click", ".btn-delcfg", function () {
                 var that = this;
                 var that = this;
@@ -40,7 +114,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                     title: '提示'
                     title: '提示'
                 }, function (index) {
                 }, function (index) {
                     Backend.api.ajax({
                     Backend.api.ajax({
-                        url: "general/ai_measure_config/del",
+                        url: "general/config/del",
                         data: {name: $(that).data("name")}
                         data: {name: $(that).data("name")}
                     }, function () {
                     }, function () {
                         $(that).closest("tr").remove();
                         $(that).closest("tr").remove();
@@ -49,86 +123,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                 });
                 });
 
 
             });
             });
-
-            // AI测量配置特有的验证逻辑
-            $(document).on("submit", "form.edit-form", function (e) {
-                // 检查图片类型的配置项是否有有效的图片URL
-                var hasError = false;
-                $(this).find('input[name*="image"], input[name*="picture"]').each(function() {
-                    var value = $(this).val();
-                    if (value && !value.match(/\.(jpg|jpeg|png|gif|webp)$/i)) {
-                        Toastr.error('请上传有效的图片文件');
-                        hasError = true;
-                        return false;
-                    }
-                });
-                
-                if (hasError) {
-                    e.preventDefault();
-                    return false;
-                }
-            });
-
-            // 为特定的AI测量配置项添加提示信息
-            $(document).ready(function() {
-                // 为自拍模式配置添加特殊提示
-                $('#tab-ai_measure_selfie input, #tab-ai_measure_selfie textarea, #tab-ai_measure_selfie select').each(function() {
-                    var name = $(this).attr('name');
-                    if (name && name.indexOf('guide') > -1) {
-                        $(this).attr('data-toggle', 'tooltip');
-                        $(this).attr('title', '引导用户进行自拍的相关配置');
-                    }
-                });
-
-                // 为帮拍模式配置添加特殊提示
-                $('#tab-ai_measure_helper input, #tab-ai_measure_helper textarea, #tab-ai_measure_helper select').each(function() {
-                    var name = $(this).attr('name');
-                    if (name && name.indexOf('guide') > -1) {
-                        $(this).attr('data-toggle', 'tooltip');
-                        $(this).attr('title', '引导他人协助拍摄的相关配置');
-                    }
-                });
-
-                // 初始化提示信息
-                $('[data-toggle="tooltip"]').tooltip();
-            });
-
-            // 图片预览功能增强
-            $(document).on('change', 'input[type="text"][name*="image"], input[type="text"][name*="picture"]', function() {
-                var $input = $(this);
-                var imageUrl = $input.val();
-                var $preview = $input.closest('.form-inline').find('.faupload-preview');
-                
-                if (!$preview.length) {
-                    $preview = $('<div class="image-preview" style="margin-top: 10px;"></div>');
-                    $input.closest('.form-inline').append($preview);
-                }
-                
-                $preview.empty();
-                
-                if (imageUrl && imageUrl.match(/\.(jpg|jpeg|png|gif|webp)$/i)) {
-                    $preview.html('<img src="' + imageUrl + '" style="max-width: 200px; max-height: 150px; border: 1px solid #ddd; border-radius: 4px;" />');
-                }
-            });
-
-            // 配置项分组折叠功能
-            $(document).on('click', '.panel-heading .nav-tabs li a', function() {
-                var target = $(this).attr('href');
-                var groupName = target.replace('#tab-', '');
-                
-                // 记住当前选中的分组
-                localStorage.setItem('ai_measure_config_active_tab', groupName);
-            });
-
-            // 恢复上次选中的分组
-            var lastActiveTab = localStorage.getItem('ai_measure_config_active_tab');
-            if (lastActiveTab) {
-                $('.nav-tabs li').removeClass('active');
-                $('.tab-pane').removeClass('active in');
-                
-                $('.nav-tabs a[href="#tab-' + lastActiveTab + '"]').closest('li').addClass('active');
-                $('#tab-' + lastActiveTab).addClass('active in');
-            }
         },
         },
         add: function () {
         add: function () {
             Controller.api.bindevent();
             Controller.api.bindevent();