ruoyi-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-generator/src/main/resources/vm/vue/v3/index.vue.vm | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-generator/src/main/resources/vm/vue/v3/readme.txt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-ui/src/components/Crontab/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-ui/src/components/Crontab/week.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-ui/src/views/system/user/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,465 @@ <template> <div class="app-container"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> #foreach($column in $columns) #if($column.query) #set($dictType=$column.dictType) #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #set($parentheseIndex=$column.columnComment.indexOf("ï¼")) #if($parentheseIndex != -1) #set($comment=$column.columnComment.substring(0, $parentheseIndex)) #else #set($comment=$column.columnComment) #end #if($column.htmlType == "input") <el-form-item label="${comment}" prop="${column.javaField}"> <el-input v-model="queryParams.${column.javaField}" placeholder="请è¾å ¥${comment}" clearable size="small" @keyup.enter="handleQuery" /> </el-form-item> #elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType) <el-form-item label="${comment}" prop="${column.javaField}"> <el-select v-model="queryParams.${column.javaField}" placeholder="è¯·éæ©${comment}" clearable size="small"> <el-option v-for="dict in ${dictType}" :key="dict.value" :label="dict.label" :value="dict.value" /> </el-select> </el-form-item> #elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType) <el-form-item label="${comment}" prop="${column.javaField}"> <el-select v-model="queryParams.${column.javaField}" placeholder="è¯·éæ©${comment}" clearable size="small"> <el-option label="è¯·éæ©åå ¸çæ" value="" /> </el-select> </el-form-item> #elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN") <el-form-item label="${comment}" prop="${column.javaField}"> <el-date-picker clearable size="small" v-model="queryParams.${column.javaField}" type="date" value-format="YYYY-MM-DD" placeholder="éæ©${comment}"> </el-date-picker> </el-form-item> #elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") <el-form-item label="${comment}"> <el-date-picker v-model="daterange${AttrName}" size="small" style="width: 240px" value-format="YYYY-MM-DD" type="daterange" range-separator="-" start-placeholder="å¼å§æ¥æ" end-placeholder="ç»ææ¥æ" ></el-date-picker> </el-form-item> #end #end #end <el-form-item> <el-button type="primary" icon="Search" size="mini" @click="handleQuery">æç´¢</el-button> <el-button icon="Refresh" size="mini" @click="resetQuery">éç½®</el-button> </el-form-item> </el-form> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-button type="primary" plain icon="Plus" size="mini" @click="handleAdd" v-hasPermi="['${moduleName}:${businessName}:add']" >æ°å¢</el-button> </el-col> <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> </el-row> <el-table v-loading="loading" :data="${businessName}List" row-key="${treeCode}" default-expand-all :tree-props="{children: 'children', hasChildren: 'hasChildren'}" > #foreach($column in $columns) #set($javaField=$column.javaField) #set($parentheseIndex=$column.columnComment.indexOf("ï¼")) #if($parentheseIndex != -1) #set($comment=$column.columnComment.substring(0, $parentheseIndex)) #else #set($comment=$column.columnComment) #end #if($column.pk) #elseif($column.list && $column.htmlType == "datetime") <el-table-column label="${comment}" align="center" prop="${javaField}" width="180"> <template #default="scope"> <span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}</span> </template> </el-table-column> #elseif($column.list && "" != $column.dictType) <el-table-column label="${comment}" align="center" prop="${javaField}"> <template #default="scope"> #if($column.htmlType == "checkbox") <dict-tag :options="${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/> #else <dict-tag :options="${column.dictType}" :value="scope.row.${javaField}"/> #end </template> </el-table-column> #elseif($column.list && "" != $javaField) #if(${foreach.index} == 1) <el-table-column label="${comment}" prop="${javaField}" /> #else <el-table-column label="${comment}" align="center" prop="${javaField}" /> #end #end #end <el-table-column label="æä½" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-button size="mini" type="text" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['${moduleName}:${businessName}:edit']" >ä¿®æ¹</el-button> <el-button size="mini" type="text" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['${moduleName}:${businessName}:add']" >æ°å¢</el-button> <el-button size="mini" type="text" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['${moduleName}:${businessName}:remove']" >å é¤</el-button> </template> </el-table-column> </el-table> <!-- æ·»å æä¿®æ¹${functionName}å¯¹è¯æ¡ --> <el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-form ref="${businessName}Ref" :model="form" :rules="rules" label-width="80px"> #foreach($column in $columns) #set($field=$column.javaField) #if($column.insert && !$column.pk) #if(($column.usableColumn) || (!$column.superColumn)) #set($parentheseIndex=$column.columnComment.indexOf("ï¼")) #if($parentheseIndex != -1) #set($comment=$column.columnComment.substring(0, $parentheseIndex)) #else #set($comment=$column.columnComment) #end #set($dictType=$column.dictType) #if("" != $treeParentCode && $column.javaField == $treeParentCode) <el-form-item label="${comment}" prop="${treeParentCode}"> <tree-select v-model:value="form.${treeParentCode}" :options="${businessName}Options" :objMap="{ value: '${treeCode}', label: '${treeName}', children: 'children' }" placeholder="è¯·éæ©${comment}" /> </el-form-item> #elseif($column.htmlType == "input") <el-form-item label="${comment}" prop="${field}"> <el-input v-model="form.${field}" placeholder="请è¾å ¥${comment}" /> </el-form-item> #elseif($column.htmlType == "imageUpload") <el-form-item label="${comment}"> <imageUpload v-model="form.${field}"/> </el-form-item> #elseif($column.htmlType == "fileUpload") <el-form-item label="${comment}"> <fileUpload v-model="form.${field}"/> </el-form-item> #elseif($column.htmlType == "editor") <el-form-item label="${comment}"> <editor v-model="form.${field}" :min-height="192"/> </el-form-item> #elseif($column.htmlType == "select" && "" != $dictType) <el-form-item label="${comment}" prop="${field}"> <el-select v-model="form.${field}" placeholder="è¯·éæ©${comment}"> <el-option v-for="dict in ${dictType}" :key="dict.value" :label="dict.label" #if($column.javaType == "Integer" || $column.javaType == "Long"):value="parseInt(dict.value)"#else:value="dict.value"#end ></el-option> </el-select> </el-form-item> #elseif($column.htmlType == "select" && $dictType) <el-form-item label="${comment}" prop="${field}"> <el-select v-model="form.${field}" placeholder="è¯·éæ©${comment}"> <el-option label="è¯·éæ©åå ¸çæ" value="" /> </el-select> </el-form-item> #elseif($column.htmlType == "checkbox" && "" != $dictType) <el-form-item label="${comment}"> <el-checkbox-group v-model="form.${field}"> <el-checkbox v-for="dict in ${dictType}" :key="dict.value" :label="dict.value"> {{dict.label}} </el-checkbox> </el-checkbox-group> </el-form-item> #elseif($column.htmlType == "checkbox" && $dictType) <el-form-item label="${comment}"> <el-checkbox-group v-model="form.${field}"> <el-checkbox>è¯·éæ©åå ¸çæ</el-checkbox> </el-checkbox-group> </el-form-item> #elseif($column.htmlType == "radio" && "" != $dictType) <el-form-item label="${comment}"> <el-radio-group v-model="form.${field}"> <el-radio v-for="dict in ${dictType}" :key="dict.value" #if($column.javaType == "Integer" || $column.javaType == "Long"):label="parseInt(dict.value)"#else:label="dict.value"#end >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> #elseif($column.htmlType == "radio" && $dictType) <el-form-item label="${comment}"> <el-radio-group v-model="form.${field}"> <el-radio label="1">è¯·éæ©åå ¸çæ</el-radio> </el-radio-group> </el-form-item> #elseif($column.htmlType == "datetime") <el-form-item label="${comment}" prop="${field}"> <el-date-picker clearable size="small" v-model="form.${field}" type="date" value-format="YYYY-MM-DD" placeholder="éæ©${comment}"> </el-date-picker> </el-form-item> #elseif($column.htmlType == "textarea") <el-form-item label="${comment}" prop="${field}"> <el-input v-model="form.${field}" type="textarea" placeholder="请è¾å ¥å 容" /> </el-form-item> #end #end #end #end </el-form> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="submitForm">ç¡® å®</el-button> <el-button @click="cancel">å æ¶</el-button> </div> </template> </el-dialog> </div> </template> <script setup name="${BusinessName}"> import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}"; const { proxy } = getCurrentInstance(); #if(${dicts} != '') #set($dictsNoSymbol=$dicts.replace("'", "")) const { ${dictsNoSymbol} } = proxy.useDict(${dicts}); #end const ${businessName}List = ref([]); const ${businessName}Options = ref([]); const open = ref(false); const loading = ref(true); const showSearch = ref(true); const title = ref(""); #foreach ($column in $columns) #if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) const daterange${AttrName} = ref([]); #end #end const data = reactive({ form: {}, queryParams: { #foreach ($column in $columns) #if($column.query) $column.javaField: null#if($foreach.count != $columns.size()),#end #end #end }, rules: { #foreach ($column in $columns) #if($column.required) #set($parentheseIndex=$column.columnComment.indexOf("ï¼")) #if($parentheseIndex != -1) #set($comment=$column.columnComment.substring(0, $parentheseIndex)) #else #set($comment=$column.columnComment) #end $column.javaField: [ { required: true, message: "$commentä¸è½ä¸ºç©º", trigger: #if($column.htmlType == "select")"change"#else"blur"#end } ]#if($foreach.count != $columns.size()),#end #end #end } }); const { queryParams, form, rules } = toRefs(data); /** æ¥è¯¢${functionName}å表 */ function getList() { loading.value = true; #foreach ($column in $columns) #if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") queryParams.value.params = {}; #break #end #end #foreach ($column in $columns) #if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) if (null != daterange${AttrName} && '' != daterange${AttrName}) { queryParams.value.params["begin${AttrName}"] = daterange${AttrName}.value[0]; queryParams.value.params["end${AttrName}"] = daterange${AttrName}.value[1]; } #end #end list${BusinessName}(queryParams.value).then(response => { ${businessName}List.value = proxy.handleTree(response.data, "${treeCode}", "${treeParentCode}"); loading.value = false; }); } /** æ¥è¯¢${functionName}䏿æ ç»æ */ async function getTreeselect() { await list${BusinessName}().then(response => { ${businessName}Options.value = []; const data = { ${treeCode}: 0, ${treeName}: '顶级èç¹', children: [] }; data.children = proxy.handleTree(response.data, "${treeCode}", "${treeParentCode}"); ${businessName}Options.value.push(data); }); } // åæ¶æé® function cancel() { open.value = false; reset(); } // 表åéç½® function reset() { form.value = { #foreach ($column in $columns) #if($column.htmlType == "radio") $column.javaField: #if($column.javaType == "Integer" || $column.javaType == "Long")0#else"0"#end#if($foreach.count != $columns.size()),#end #elseif($column.htmlType == "checkbox") $column.javaField: []#if($foreach.count != $columns.size()),#end #else $column.javaField: null#if($foreach.count != $columns.size()),#end #end #end }; proxy.resetForm("${businessName}Ref"); } /** æç´¢æé®æä½ */ function handleQuery() { getList(); } /** éç½®æé®æä½ */ function resetQuery() { #foreach ($column in $columns) #if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) daterange${AttrName}.value = []; #end #end proxy.resetForm("queryRef"); handleQuery(); } /** æ°å¢æé®æä½ */ async function handleAdd(row) { reset(); await getTreeselect(); if (row != null && row.${treeCode}) { form.value.${treeParentCode} = row.${treeCode}; } else { form.value.${treeParentCode} = 0; } open.value = true; title.value = "æ·»å ${functionName}"; } /** ä¿®æ¹æé®æä½ */ async function handleUpdate(row) { reset(); await getTreeselect(); if (row != null) { form.value.${treeParentCode} = row.${treeCode}; } get${BusinessName}(row.${pkColumn.javaField}).then(response => { form.value = response.data; #foreach ($column in $columns) #if($column.htmlType == "checkbox") form.value.$column.javaField = form.value.${column.javaField}.split(","); #end #end open.value = true; title.value = "ä¿®æ¹${functionName}"; }); } /** æäº¤æé® */ function submitForm() { proxy.#[[$]]#refs["${businessName}Ref"].validate(valid => { if (valid) { #foreach ($column in $columns) #if($column.htmlType == "checkbox") form.value.$column.javaField = form.value.${column.javaField}.join(","); #end #end if (form.value.${pkColumn.javaField} != null) { update${BusinessName}(form.value).then(response => { proxy.#[[$modal]]#.msgSuccess("ä¿®æ¹æå"); open.value = false; getList(); }); } else { add${BusinessName}(form.value).then(response => { proxy.#[[$modal]]#.msgSuccess("æ°å¢æå"); open.value = false; getList(); }); } } }); } /** å é¤æé®æä½ */ function handleDelete(row) { proxy.#[[$modal]]#.confirm('æ¯å¦ç¡®è®¤å é¤${functionName}ç¼å·ä¸º"' + row.${pkColumn.javaField} + '"çæ°æ®é¡¹ï¼').then(function() { return del${BusinessName}(row.${pkColumn.javaField}); }).then(() => { getList(); proxy.#[[$modal]]#.msgSuccess("å 餿å"); }).catch(() => {}); } getList(); </script> ruoyi-generator/src/main/resources/vm/vue/v3/index.vue.vm
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,567 @@ <template> <div class="app-container"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> #foreach($column in $columns) #if($column.query) #set($dictType=$column.dictType) #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #set($parentheseIndex=$column.columnComment.indexOf("ï¼")) #if($parentheseIndex != -1) #set($comment=$column.columnComment.substring(0, $parentheseIndex)) #else #set($comment=$column.columnComment) #end #if($column.htmlType == "input") <el-form-item label="${comment}" prop="${column.javaField}"> <el-input v-model="queryParams.${column.javaField}" placeholder="请è¾å ¥${comment}" clearable size="small" @keyup.enter="handleQuery" /> </el-form-item> #elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType) <el-form-item label="${comment}" prop="${column.javaField}"> <el-select v-model="queryParams.${column.javaField}" placeholder="è¯·éæ©${comment}" clearable size="small"> <el-option v-for="dict in ${dictType}" :key="dict.value" :label="dict.label" :value="dict.value" /> </el-select> </el-form-item> #elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType) <el-form-item label="${comment}" prop="${column.javaField}"> <el-select v-model="queryParams.${column.javaField}" placeholder="è¯·éæ©${comment}" clearable size="small"> <el-option label="è¯·éæ©åå ¸çæ" value="" /> </el-select> </el-form-item> #elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN") <el-form-item label="${comment}" prop="${column.javaField}"> <el-date-picker clearable size="small" v-model="queryParams.${column.javaField}" type="date" value-format="YYYY-MM-DD" placeholder="éæ©${comment}"> </el-date-picker> </el-form-item> #elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") <el-form-item label="${comment}"> <el-date-picker v-model="daterange${AttrName}" size="small" style="width: 240px" value-format="YYYY-MM-DD" type="daterange" range-separator="-" start-placeholder="å¼å§æ¥æ" end-placeholder="ç»ææ¥æ" ></el-date-picker> </el-form-item> #end #end #end <el-form-item> <el-button type="primary" icon="Search" size="mini" @click="handleQuery">æç´¢</el-button> <el-button icon="Refresh" size="mini" @click="resetQuery">éç½®</el-button> </el-form-item> </el-form> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-button type="primary" plain icon="Plus" size="mini" @click="handleAdd" v-hasPermi="['${moduleName}:${businessName}:add']" >æ°å¢</el-button> </el-col> <el-col :span="1.5"> <el-button type="success" plain icon="Edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['${moduleName}:${businessName}:edit']" >ä¿®æ¹</el-button> </el-col> <el-col :span="1.5"> <el-button type="danger" plain icon="Delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['${moduleName}:${businessName}:remove']" >å é¤</el-button> </el-col> <el-col :span="1.5"> <el-button type="warning" plain icon="Download" size="mini" @click="handleExport" v-hasPermi="['${moduleName}:${businessName}:export']" >导åº</el-button> </el-col> <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> </el-row> <el-table v-loading="loading" :data="${businessName}List" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" align="center" /> #foreach($column in $columns) #set($javaField=$column.javaField) #set($parentheseIndex=$column.columnComment.indexOf("ï¼")) #if($parentheseIndex != -1) #set($comment=$column.columnComment.substring(0, $parentheseIndex)) #else #set($comment=$column.columnComment) #end #if($column.pk) <el-table-column label="${comment}" align="center" prop="${javaField}" /> #elseif($column.list && $column.htmlType == "datetime") <el-table-column label="${comment}" align="center" prop="${javaField}" width="180"> <template #default="scope"> <span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}</span> </template> </el-table-column> #elseif($column.list && "" != $column.dictType) <el-table-column label="${comment}" align="center" prop="${javaField}"> <template #default="scope"> #if($column.htmlType == "checkbox") <dict-tag :options="${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/> #else <dict-tag :options="${column.dictType}" :value="scope.row.${javaField}"/> #end </template> </el-table-column> #elseif($column.list && "" != $javaField) <el-table-column label="${comment}" align="center" prop="${javaField}" /> #end #end <el-table-column label="æä½" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-button size="mini" type="text" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['${moduleName}:${businessName}:edit']" >ä¿®æ¹</el-button> <el-button size="mini" type="text" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['${moduleName}:${businessName}:remove']" >å é¤</el-button> </template> </el-table-column> </el-table> <pagination v-show="total>0" :total="total" v-model:p:page="queryParams.pageNum" v-model:p:limit="queryParams.pageSize" @pagination="getList" /> <!-- æ·»å æä¿®æ¹${functionName}å¯¹è¯æ¡ --> <el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-form ref="${businessName}Ref" :model="form" :rules="rules" label-width="80px"> #foreach($column in $columns) #set($field=$column.javaField) #if($column.insert && !$column.pk) #if(($column.usableColumn) || (!$column.superColumn)) #set($parentheseIndex=$column.columnComment.indexOf("ï¼")) #if($parentheseIndex != -1) #set($comment=$column.columnComment.substring(0, $parentheseIndex)) #else #set($comment=$column.columnComment) #end #set($dictType=$column.dictType) #if($column.htmlType == "input") <el-form-item label="${comment}" prop="${field}"> <el-input v-model="form.${field}" placeholder="请è¾å ¥${comment}" /> </el-form-item> #elseif($column.htmlType == "imageUpload") <el-form-item label="${comment}"> <imageUpload v-model="form.${field}"/> </el-form-item> #elseif($column.htmlType == "fileUpload") <el-form-item label="${comment}"> <fileUpload v-model="form.${field}"/> </el-form-item> #elseif($column.htmlType == "editor") <el-form-item label="${comment}"> <editor v-model="form.${field}" :min-height="192"/> </el-form-item> #elseif($column.htmlType == "select" && "" != $dictType) <el-form-item label="${comment}" prop="${field}"> <el-select v-model="form.${field}" placeholder="è¯·éæ©${comment}"> <el-option v-for="dict in ${dictType}" :key="dict.value" :label="dict.label" #if($column.javaType == "Integer" || $column.javaType == "Long"):value="parseInt(dict.value)"#else:value="dict.value"#end ></el-option> </el-select> </el-form-item> #elseif($column.htmlType == "select" && $dictType) <el-form-item label="${comment}" prop="${field}"> <el-select v-model="form.${field}" placeholder="è¯·éæ©${comment}"> <el-option label="è¯·éæ©åå ¸çæ" value="" /> </el-select> </el-form-item> #elseif($column.htmlType == "checkbox" && "" != $dictType) <el-form-item label="${comment}"> <el-checkbox-group v-model="form.${field}"> <el-checkbox v-for="dict in ${dictType}" :key="dict.value" :label="dict.value"> {{dict.label}} </el-checkbox> </el-checkbox-group> </el-form-item> #elseif($column.htmlType == "checkbox" && $dictType) <el-form-item label="${comment}"> <el-checkbox-group v-model="form.${field}"> <el-checkbox>è¯·éæ©åå ¸çæ</el-checkbox> </el-checkbox-group> </el-form-item> #elseif($column.htmlType == "radio" && "" != $dictType) <el-form-item label="${comment}"> <el-radio-group v-model="form.${field}"> <el-radio v-for="dict in ${dictType}" :key="dict.value" #if($column.javaType == "Integer" || $column.javaType == "Long"):label="parseInt(dict.value)"#else:label="dict.value"#end >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> #elseif($column.htmlType == "radio" && $dictType) <el-form-item label="${comment}"> <el-radio-group v-model="form.${field}"> <el-radio label="1">è¯·éæ©åå ¸çæ</el-radio> </el-radio-group> </el-form-item> #elseif($column.htmlType == "datetime") <el-form-item label="${comment}" prop="${field}"> <el-date-picker clearable size="small" v-model="form.${field}" type="date" value-format="YYYY-MM-DD" placeholder="éæ©${comment}"> </el-date-picker> </el-form-item> #elseif($column.htmlType == "textarea") <el-form-item label="${comment}" prop="${field}"> <el-input v-model="form.${field}" type="textarea" placeholder="请è¾å ¥å 容" /> </el-form-item> #end #end #end #end #if($table.sub) <el-divider content-position="center">${subTable.functionName}ä¿¡æ¯</el-divider> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-button type="primary" icon="Plus" size="mini" @click="handleAdd${subClassName}">æ·»å </el-button> </el-col> <el-col :span="1.5"> <el-button type="danger" icon="Delete" size="mini" @click="handleDelete${subClassName}">å é¤</el-button> </el-col> </el-row> <el-table :data="${subclassName}List" :row-class-name="row${subClassName}Index" @selection-change="handle${subClassName}SelectionChange" ref="${subclassName}"> <el-table-column type="selection" width="50" align="center" /> <el-table-column label="åºå·" align="center" prop="index" width="50"/> #foreach($column in $subTable.columns) #set($javaField=$column.javaField) #set($parentheseIndex=$column.columnComment.indexOf("ï¼")) #if($parentheseIndex != -1) #set($comment=$column.columnComment.substring(0, $parentheseIndex)) #else #set($comment=$column.columnComment) #end #if($column.pk || $javaField == ${subTableFkclassName}) #elseif($column.list && "" != $javaField) <el-table-column label="$comment" prop="${javaField}"> <template #default="scope"> <el-input v-model="scope.row.$javaField" placeholder="请è¾å ¥$comment" /> </template> </el-table-column> #end #end </el-table> #end </el-form> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="submitForm">ç¡® å®</el-button> <el-button @click="cancel">å æ¶</el-button> </div> </template> </el-dialog> </div> </template> <script setup name="${BusinessName}"> import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}"; const { proxy } = getCurrentInstance(); #if(${dicts} != '') #set($dictsNoSymbol=$dicts.replace("'", "")) const { ${dictsNoSymbol} } = proxy.useDict(${dicts}); #end const ${businessName}List = ref([]); #if($table.sub) const ${subclassName}List = ref([]); #end const open = ref(false); const loading = ref(true); const showSearch = ref(true); const ids = ref([]); #if($table.sub) const checked${subClassName} = ref([]); #end const single = ref(true); const multiple = ref(true); const total = ref(0); const title = ref(""); #foreach ($column in $columns) #if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) const daterange${AttrName} = ref([]); #end #end const data = reactive({ form: {}, queryParams: { pageNum: 1, pageSize: 10, #foreach ($column in $columns) #if($column.query) $column.javaField: null#if($foreach.count != $columns.size()),#end #end #end }, rules: { #foreach ($column in $columns) #if($column.required) #set($parentheseIndex=$column.columnComment.indexOf("ï¼")) #if($parentheseIndex != -1) #set($comment=$column.columnComment.substring(0, $parentheseIndex)) #else #set($comment=$column.columnComment) #end $column.javaField: [ { required: true, message: "$commentä¸è½ä¸ºç©º", trigger: #if($column.htmlType == "select")"change"#else"blur"#end } ]#if($foreach.count != $columns.size()),#end #end #end } }); const { queryParams, form, rules } = toRefs(data); /** æ¥è¯¢${functionName}å表 */ function getList() { loading.value = true; #foreach ($column in $columns) #if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") queryParams.value.params = {}; #break #end #end #foreach ($column in $columns) #if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) if (null != daterange${AttrName} && '' != daterange${AttrName}) { queryParams.value.params["begin${AttrName}"] = daterange${AttrName}.value[0]; queryParams.value.params["end${AttrName}"] = daterange${AttrName}.value[1]; } #end #end list${BusinessName}(queryParams.value).then(response => { ${businessName}List.value = response.rows; total.value = response.total; loading.value = false; }); } // åæ¶æé® function cancel() { open.value = false; reset(); } // 表åéç½® function reset() { form.value = { #foreach ($column in $columns) #if($column.htmlType == "radio") $column.javaField: #if($column.javaType == "Integer" || $column.javaType == "Long")0#else"0"#end#if($foreach.count != $columns.size()),#end #elseif($column.htmlType == "checkbox") $column.javaField: []#if($foreach.count != $columns.size()),#end #else $column.javaField: null#if($foreach.count != $columns.size()),#end #end #end }; #if($table.sub) ${subclassName}List.value = []; #end proxy.resetForm("${businessName}Ref"); } /** æç´¢æé®æä½ */ function handleQuery() { queryParams.value.pageNum = 1; getList(); } /** éç½®æé®æä½ */ function resetQuery() { #foreach ($column in $columns) #if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) daterange${AttrName}.value = []; #end #end proxy.resetForm("queryRef"); handleQuery(); } // å¤éæ¡é䏿°æ® function handleSelectionChange(selection) { ids.value = selection.map(item => item.${pkColumn.javaField}); single.value = selection.length != 1; multiple.value = !selection.length; } /** æ°å¢æé®æä½ */ function handleAdd() { reset(); open.value = true; title.value = "æ·»å ${functionName}"; } /** ä¿®æ¹æé®æä½ */ function handleUpdate(row) { reset(); const ${pkColumn.javaField} = row.${pkColumn.javaField} || ids.value get${BusinessName}(${pkColumn.javaField}).then(response => { form.value = response.data; #foreach ($column in $columns) #if($column.htmlType == "checkbox") form.value.$column.javaField = form.value.${column.javaField}.split(","); #end #end #if($table.sub) ${subclassName}List.value = response.data.${subclassName}List; #end open.value = true; title.value = "ä¿®æ¹${functionName}"; }); } /** æäº¤æé® */ function submitForm() { proxy.#[[$]]#refs["${businessName}Ref"].validate(valid => { if (valid) { #foreach ($column in $columns) #if($column.htmlType == "checkbox") form.value.$column.javaField = form.value.${column.javaField}.join(","); #end #end #if($table.sub) form.value.${subclassName}List = ${subclassName}List.value; #end if (form.value.${pkColumn.javaField} != null) { update${BusinessName}(form.value).then(response => { proxy.#[[$modal]]#.msgSuccess("ä¿®æ¹æå"); open.value = false; getList(); }); } else { add${BusinessName}(form.value).then(response => { proxy.#[[$modal]]#.msgSuccess("æ°å¢æå"); open.value = false; getList(); }); } } }); } /** å é¤æé®æä½ */ function handleDelete(row) { const ${pkColumn.javaField}s = row.${pkColumn.javaField} || ids.value; proxy.#[[$modal]]#.confirm('æ¯å¦ç¡®è®¤å é¤${functionName}ç¼å·ä¸º"' + ${pkColumn.javaField}s + '"çæ°æ®é¡¹ï¼').then(function() { return del${BusinessName}(${pkColumn.javaField}s); }).then(() => { getList(); proxy.#[[$modal]]#.msgSuccess("å 餿å"); }).catch(() => {}); } #if($table.sub) /** ${subTable.functionName}åºå· */ function row${subClassName}Index({ row, rowIndex }) { row.index = rowIndex + 1; } /** ${subTable.functionName}æ·»å æé®æä½ */ function handleAdd${subClassName}() { let obj = {}; #foreach($column in $subTable.columns) #if($column.pk || $column.javaField == ${subTableFkclassName}) #elseif($column.list && "" != $javaField) obj.$column.javaField = ""; #end #end ${subclassName}List.value.push(obj); } /** ${subTable.functionName}å é¤æé®æä½ */ function handleDelete${subClassName}() { if (checked${subClassName}.value.length == 0) { proxy.#[[$modal]]#.msgError("请å éæ©è¦å é¤ç${subTable.functionName}æ°æ®"); } else { const ${subclassName}s = ${subclassName}List.value; const checked${subClassName}s = checked${subClassName}.value; ${subclassName}List.value = ${subclassName}s.filter(function(item) { return checked${subClassName}s.indexOf(item.index) == -1 }); } } /** å¤éæ¡é䏿°æ® */ function handle${subClassName}SelectionChange(selection) { checked${subClassName}.value = selection.map(item => item.index) } #end /** å¯¼åºæé®æä½ */ function handleExport() { proxy.download('${moduleName}/${businessName}/export', { ...queryParams.value }, `${businessName}_#[[${new Date().getTime()}]]#.xlsx`) } getList(); </script> ruoyi-generator/src/main/resources/vm/vue/v3/readme.txt
¶Ô±ÈÐÂÎļþ @@ -0,0 +1 @@ å¦æä½¿ç¨çæ¯RuoYi-Vue3å端ï¼é£ä¹éè¦è¦çä¸ä¸æ¤ç®å½ç模æ¿index.vue.vmãindex-tree.vue.vmæä»¶å°ä¸çº§vueç®å½ã ruoyi-ui/src/components/Crontab/index.vue
@@ -273,7 +273,7 @@ insValue = 5; } else { this.$refs[refName].checkboxList = value.split(","); insValue = 7; insValue = 6; } } else if (name == "year") { if (value == "") { ruoyi-ui/src/components/Crontab/week.vue
@@ -60,7 +60,7 @@ <el-radio v-model='radioValue' :label="6"> æå® <el-select clearable v-model="checkboxList" placeholder="å¯å¤é" multiple style="width:100%"> <el-option v-for="(item,index) of weekList" :key="index" :label="item.value" :value="item.key">{{item.value}}</el-option> <el-option v-for="(item,index) of weekList" :key="index" :label="item.value" :value="String(item.key)">{{item.value}}</el-option> </el-select> </el-radio> </el-form-item> ruoyi-ui/src/views/system/user/index.vue
@@ -663,7 +663,7 @@ this.upload.open = false; this.upload.isUploading = false; this.$refs.upload.clearFiles(); this.$alert(response.msg, "å¯¼å ¥ç»æ", { dangerouslyUseHTMLString: true }); this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "å¯¼å ¥ç»æ", { dangerouslyUseHTMLString: true }); this.getList(); }, // æäº¤ä¸ä¼ æä»¶