fix: 修改生成

This commit is contained in:
lwh 2023-05-05 21:31:21 +08:00
parent 5d946ed3de
commit d9e8c59651
6 changed files with 330 additions and 12 deletions

View File

@ -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 = "
<!-- 排序 -->
<template #{$columnName}='scope'>
<el-input-number :disabled='loading' v-model='scope.row.{$columnName}' :min='1' controls-position='right'
@change='handleEditOrder(scope.row)'></el-input-number>
</template>
";
$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
<template v-else>暂无图片</template>
</template>';
}
if ($value['htmlType'] == 'switch') {
$switchTemplate = "
<el-switch
:disabled=scope.row.{$value['columnName']}_bool
v-model=scope.row.{$value['columnName']}
class=mt-2
inline-prompt
:inactive-value=1
:active-value=2
style='--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949'
@click=handleEditShow(scope.row)
/>
";
$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 .= '
<el-col :span="12">
<el-form-item :label-width="labelWidth" label="' . $value['columnComment'] . '" prop="' . $value['columnName'] . '">' . '
' . " <el-input-number v-model='formData." . $value['columnName'] . "' controls-position='right'></el-input-number>
' . " <el-input-number v-model='formData." . $value['columnName'] . "' controls-position='right' :min='1'></el-input-number>
</el-form-item>
</el-col>";
}
@ -1763,6 +1835,31 @@ class Gen extends BaseController
</el-col>
";
}
if ($value['htmlType'] == "switch") {
$col .= "
<el-col :span='12'>
<el-form-item :label-width='labelWidth' label='{$value['columnComment']}' prop='{$value['columnName']}'>
<el-switch
v-model='formData.{$value['columnName']}'
class='mt-2'
inline-prompt
:inactive-value=1
:active-value=2
style='--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949'
/>
</el-form-item>
</el-col>
";
}
if ($value['htmlType'] == "rate") {
$col .= "
<el-col :span='12'>
<el-form-item :label-width='labelWidth' label='{$value['columnComment']}' prop='{$value['columnName']}'>
<el-rate style='padding-top: 6px!important;' v-model='formData.{$value['columnName']}' allow-half />
</el-form-item>
</el-col>
";
}
}
}
}

View File

@ -0,0 +1,114 @@
<?php
namespace app\admin\controller\Test;
use app\BaseController;
use app\common\model\Test\Test as ModelTest;
use app\Request;
use think\Validate;
use think\exception\ValidateException;
use think\facade\Filesystem;
use app\common\arw\adjfut\src\Excel;
use app\common\arw\adjfut\src\UploadFile;
use app\common\exception\Tool;
use think\facade\Db;
use think\facade\Env;
class Test extends BaseController
{
/**
* 获取测试列表
*/
public function getTestList(Request $request): array
{
$params = $request->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('删除成功!');
}
}

View File

@ -0,0 +1,95 @@
<?php
namespace app\common\model\Test;
use app\common\arw\adjfut\src\Validate;
use app\BaseModel;
use think\model\concern\SoftDelete;
use app\common\arw\adjfut\src\Excel;
use app\Request;
use app\common\exception\Tool;
use think\facade\Db;
class Test extends BaseModel
{
use SoftDelete;
// 删除字段
protected $deleteTime = 'test_delete_time';
// 设置主键名
protected $pk = 'test_guid';
// 设置废弃字段
protected $disuse = [];
// 设置字段信息
protected $schema = [
"test_id" => "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();
}
}

View File

@ -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;
});
};

View File

@ -9,7 +9,7 @@
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="handleEditClick(formRef)">编辑</el-button>
<el-button type="primary" @click="handleEditClick(formRef)" :loading="isBtnLod">编辑</el-button>
<el-button @click="handleResetClick(formRef)">重置</el-button>
</span>
</template>
@ -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) => {

View File

@ -47,6 +47,9 @@
>
${imgTemplate}
${dictScope}
${sortTemplate}
${switchTemplate}
<template #chaoz="scope">
<el-space>
<el-button size="small" @click="handleUpdate(scope.row)">
@ -148,6 +151,8 @@ function handleDetail(row) {
}
${btnFun}
${sortTemplateFun}
${switchTemplateFun}
${dict}
</script>