From d9e8c59651509ebe13216e5aec12ea333d28d6fd Mon Sep 17 00:00:00 2001 From: lwh <2679599887@qq.com> Date: Fri, 5 May 2023 21:31:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/Gen/Gen.php | 117 ++++++++++++++++++++++++++--- app/admin/controller/Test/Test.php | 114 ++++++++++++++++++++++++++++ app/common/model/Test/Test.php | 95 +++++++++++++++++++++++ app/resources/view/jsVue/add.tpl | 5 +- app/resources/view/jsVue/edit.tpl | 6 +- app/resources/view/jsVue/index.tpl | 5 ++ 6 files changed, 330 insertions(+), 12 deletions(-) create mode 100644 app/admin/controller/Test/Test.php create mode 100644 app/common/model/Test/Test.php diff --git a/app/admin/controller/Gen/Gen.php b/app/admin/controller/Gen/Gen.php index dfc8a73..21d2a3a 100644 --- a/app/admin/controller/Gen/Gen.php +++ b/app/admin/controller/Gen/Gen.php @@ -273,6 +273,7 @@ class Gen extends BaseController 'className' => $params['className'], 'tplCategory' => $params['tplCategory'], 'moduleName' => $params['moduleName'], + 'isSort' => $params['isSort'], 'businessName' => $params['businessName'], 'functionName' => $params['functionName'], 'functionAuthor' => $params['functionAuthor'], @@ -414,9 +415,9 @@ class Gen extends BaseController // 'tplCategory' => $tableInfo['tplCategory'], 'tableName' => $tableInfo['Name'], 'tableComment' => $tableInfo['Comment'], - 'className' => Tool::camelize($tableInfo['Name'],true), + 'className' => Tool::camelize($tableInfo['Name'], true), 'businessName' => $tableInfo['Name'], - 'moduleName' => Tool::camelize($tableInfo['Name'],true), + 'moduleName' => Tool::camelize($tableInfo['Name'], true), 'functionName' => $tableInfo['Comment'], 'functionAuthor' => 'admin', 'genType' => 1, @@ -633,8 +634,7 @@ class Gen extends BaseController if ($val['htmlType'] == 'fileUpload') $is_file_upload = true; } - if($isSort){ - + if ($isSort) { } //打开模板文件资源(只读) @@ -704,7 +704,7 @@ class Gen extends BaseController } else if ($table['tplCategory'] == "web_static") { $temp_path = str_replace('/', DIRECTORY_SEPARATOR, "{$root}resources/view/business/webApiController.tpl"); } - + //控制器生成后的路径构建 $gen_path = str_replace('/', DIRECTORY_SEPARATOR, "{$root}api/controller/{$module_name}/{$class_name}.php"); @@ -777,7 +777,7 @@ class Gen extends BaseController return true; } - // Js版本 1.20 + // Js版本 1.30 //生成JsVue页面 private function createJsVue($fields, $table) @@ -810,6 +810,39 @@ class Gen extends BaseController $dict = ''; $dictScope = ''; $query = ''; + $sortTemplate = ''; + $sortTemplateFun = ''; + $switchTemplate = ''; + $switchTemplateFun = ''; + + $isSort = $table['isSort']; // 排序处理 + foreach ($fields as $value) { + $columnName = $value['columnName']; + $className = $table['className']; + + if ($isSort == 1) { + $sortTemplate = " + + + "; + + $sortTemplateFun = " + //排序 + const loading = ref(false) + async function handleEditOrder(data) { + loading.value = true + const { code } = await edit{$className}(data); + if (code == 0) { + loading.value = false + tableRef.value.reload() + } + } + "; + } + } $btn_arr = $table['options']->CheckedBtn; // 勾选按钮 // return $btn_arr; @@ -947,7 +980,39 @@ class Gen extends BaseController '; } + + if ($value['htmlType'] == 'switch') { + $switchTemplate = " + + "; + + $switchTemplateFun = " + // 展示切换 + async function handleEditShow(data) { + if(data.{$value['columnName']} === 1) return; + + loading.value = true + const { code } = await edit{$table['className']}(data); + if (code == 0) { + loading.value = false + tableRef.value.reload() + } + } + "; + } } + + + $columnsArr .= " { label: '操作', @@ -956,7 +1021,6 @@ class Gen extends BaseController fixed: 'right' }"; - // return $imgTemplate; // //模型的示例代码 $temp_path = str_replace('/', DIRECTORY_SEPARATOR, $root . 'resources/view/jsVue/index.tpl'); @@ -978,7 +1042,11 @@ class Gen extends BaseController '${btnFunName}', '${btnFun}', '${query}', - '${dictScope}' + '${dictScope}', + '${sortTemplate}', + '${sortTemplateFun}', + '${switchTemplate}', + '${switchTemplateFun}', ], [ $table['functionName'], @@ -994,7 +1062,11 @@ class Gen extends BaseController $btnFunName, $btnFun, $query, - $dictScope + $dictScope, + $sortTemplate, + $sortTemplateFun, + $switchTemplate, + $switchTemplateFun, ], $temp_str ); @@ -1750,7 +1822,7 @@ class Gen extends BaseController $col .= ' ' . ' - ' . " + ' . " "; } @@ -1763,6 +1835,31 @@ class Gen extends BaseController "; } + if ($value['htmlType'] == "switch") { + $col .= " + + + + + + "; + } + if ($value['htmlType'] == "rate") { + $col .= " + + + + + + "; + } } } } diff --git a/app/admin/controller/Test/Test.php b/app/admin/controller/Test/Test.php new file mode 100644 index 0000000..d0f1929 --- /dev/null +++ b/app/admin/controller/Test/Test.php @@ -0,0 +1,114 @@ +param(); + $con = []; + + $con = Tool::getOptionalQuery(['test_name','LIKE'],); + + $query = ModelTest::where($con) + ->field([ +'test_id', +'test_guid', +'test_name', +'test_show_status', +'test_score', +'test_sort' +]) + ->order('test_sort', 'desc'); + + return msg("获取测试列表成功!",$query); + } + + /** + * 编辑测试 + */ + public function editTest(Request $request): array + { + $params = $request->param(); + $this->validate($params, [ +'test_name|名称'=>'require', +'test_show_status|首页是否展示'=>'require', +'test_score|评分'=>'require', +'test_sort|排序'=>'require' +]); + $model = ModelTest::where('test_guid',$params['test_guid'])->find(); + if (!$model) throwErrorMsg("该测试不存在", 1); + $model->allowField([ +'test_update_user_guid', +'test_name', +'test_show_status', +'test_score', +'test_sort' +])->save($params); + return msg('编辑成功!'); + } + + /** + * 添加测试 + */ + public function addTest(Request $request): array + { + $params = $request->param(); + $this->validate($params, [ +'test_name|名称'=>'require', +'test_show_status|首页是否展示'=>'require', +'test_score|评分'=>'require', +'test_sort|排序'=>'require' +]); + $model = ModelTest::create($params,[ +'test_guid', +'test_create_user_guid', +'test_update_user_guid', +'test_name', +'test_show_status', +'test_score', +'test_sort' +]); + return msg('添加成功!'); + } + + /** + * 删除测试 + */ + public function deleteTest(Request $request): array + { + $params = $request->param(); + $this->validate($params, [ + 'test_guid' => 'require', + ]); + $test = ModelTest::where([ + 'test_guid' => explode(',', $params['test_guid']) + ])->select(); + $test->delete(); + return msg('删除成功!'); + } + + + + + + + +} diff --git a/app/common/model/Test/Test.php b/app/common/model/Test/Test.php new file mode 100644 index 0000000..7c46101 --- /dev/null +++ b/app/common/model/Test/Test.php @@ -0,0 +1,95 @@ + "int", + + "test_guid" => "string", + + "test_name" => "string", + + "test_show_status" => "string", + + "test_score" => "", + + "test_sort" => "int", + + "test_create_time" => "datetime", + + "test_create_user_guid" => "string", + + "test_update_time" => "datetime", + + "test_update_user_guid" => "string", + + "test_delete_time" => "datetime", + + "test_delete_user_guid" => "string", + + ]; + // 设置json类型字段 + protected $json = ['']; + // 开启自动写入时间戳字段 + protected $autoWriteTimestamp = 'datetime'; + // 创建时间 + protected $createTime = 'test_create_time'; + // 修改时间 + protected $updateTime = 'test_update_time'; + + + + + /** + * 新增前 + */ + public static function onBeforeInsert(self $model): void + { + // self::checkRepeatData($model); + $model->completeCreateField(); + } + + /** + * 更新前 + */ + public static function onBeforeUpdate(self $model): void + { + // self::checkRepeatData($model); + $model->completeUpdateField(); + } + + /** + * 删除前 + */ + public static function onBeforeDelete(self $model): void + { + $model->completeDeleteField(); + } + + + + + + + + +} diff --git a/app/resources/view/jsVue/add.tpl b/app/resources/view/jsVue/add.tpl index f840240..3e0eeae 100644 --- a/app/resources/view/jsVue/add.tpl +++ b/app/resources/view/jsVue/add.tpl @@ -39,6 +39,7 @@ const headers = { ...store.headers, }; +const isBtnLod = ref(false); const formRef = ref(); const labelWidth = 90; const props = defineProps({ @@ -76,18 +77,20 @@ const closeDialog = () => { }; const handleAddClick = async (formEl) => { - console.log(formData); if (!formEl) return; formEl.validate(async (valid) => { if (!valid) { return; } + isBtnLod.value = true; + ${mapFun} const { code } = await add${className}(formData); if (code == 0) { closeDialog(); props.done(); } + isBtnLod.value = flase; }); }; diff --git a/app/resources/view/jsVue/edit.tpl b/app/resources/view/jsVue/edit.tpl index f98a86f..5e9706f 100644 --- a/app/resources/view/jsVue/edit.tpl +++ b/app/resources/view/jsVue/edit.tpl @@ -9,7 +9,7 @@ @@ -37,6 +37,7 @@ const headers = { Accept: "application/json", ...store.headers, }; +const isBtnLod = ref(false); const formRef = ref(); const labelWidth = 100; const props = defineProps({ @@ -81,12 +82,15 @@ const handleEditClick = async (formEl) => { if (!valid) { return; } + isBtnLod.value = true; + ${mapFun} const { code } = await edit${className}(formData.value); if (code == 0) { closeDialog(); props.done(); } + isBtnLod.value = false; }); }; const handleResetClick = async (formEl) => { diff --git a/app/resources/view/jsVue/index.tpl b/app/resources/view/jsVue/index.tpl index 1a1411e..69988af 100644 --- a/app/resources/view/jsVue/index.tpl +++ b/app/resources/view/jsVue/index.tpl @@ -47,6 +47,9 @@ > ${imgTemplate} ${dictScope} + ${sortTemplate} + ${switchTemplate} +