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}
+
@@ -148,6 +151,8 @@ function handleDetail(row) {
}
${btnFun}
+${sortTemplateFun}
+${switchTemplateFun}
${dict}