mirror of
https://gitee.com/xiangheng/x_admin.git
synced 2025-10-15 20:52:11 +08:00
统一message,统一模板
This commit is contained in:
@@ -179,7 +179,7 @@ export default defineComponent({
|
||||
.catch((err) => {
|
||||
console.error(err)
|
||||
err.target && (this.activeStep = err.target)
|
||||
err.msg && this.$message.error(err.msg)
|
||||
err.message && this.$message.error(err.message)
|
||||
})
|
||||
},
|
||||
|
||||
|
@@ -191,13 +191,13 @@ export default {
|
||||
if (haveMoreChildNode) {
|
||||
// 如果都是网关就可以,等优化
|
||||
return reject({
|
||||
msg: '流程设计-一个节点只能有一个子节点,可以有多个网关'
|
||||
message: '流程设计-一个节点只能有一个子节点,可以有多个网关'
|
||||
})
|
||||
}
|
||||
|
||||
// if (data.nodes.length != data.edges.length + 1) {
|
||||
// return reject({
|
||||
// msg: "流程设计-节点之间必须连线,可以清理多余的节点",//不是很重要
|
||||
// message: "流程设计-节点之间必须连线,可以清理多余的节点",//不是很重要
|
||||
// });
|
||||
// }
|
||||
// 检查开始节点和结束节点是否存在
|
||||
@@ -205,7 +205,7 @@ export default {
|
||||
const findEndNode = nodes.filter((item) => item.type == 'bpmn:endEvent')
|
||||
if (findStartNode.length != 1 || findEndNode.length != 1) {
|
||||
return reject({
|
||||
msg: '流程设计-流程必须有且只有一个开始节点和结束节点'
|
||||
message: '流程设计-流程必须有且只有一个开始节点和结束节点'
|
||||
})
|
||||
}
|
||||
|
||||
|
@@ -113,8 +113,8 @@ export default defineComponent({
|
||||
visible.value = false
|
||||
emit('change')
|
||||
}
|
||||
if (response.code == RequestCodeEnum.FAILED && response.msg) {
|
||||
feedback.msgError(response.msg)
|
||||
if (response.code == RequestCodeEnum.FAILED && response.message) {
|
||||
feedback.msgError(response.message)
|
||||
}
|
||||
}
|
||||
const handleError = (event: any, file: any) => {
|
||||
|
@@ -49,7 +49,7 @@ const axiosHooks: AxiosHooks = {
|
||||
if (!isTransformResponse) {
|
||||
return response.data
|
||||
}
|
||||
const { code, data, msg } = response.data
|
||||
const { code, data, message } = response.data
|
||||
switch (code) {
|
||||
case RequestCodeEnum.SUCCESS:
|
||||
return data
|
||||
@@ -64,7 +64,7 @@ const axiosHooks: AxiosHooks = {
|
||||
case RequestCodeEnum.NO_PERMISSTION:
|
||||
case RequestCodeEnum.FAILED:
|
||||
case RequestCodeEnum.SYSTEM_ERROR:
|
||||
msg && feedback.msgError(msg)
|
||||
message && feedback.msgError(message)
|
||||
return Promise.reject(data)
|
||||
|
||||
case RequestCodeEnum.TOKEN_INVALID:
|
||||
|
2
admin/src/utils/request/type.d.ts
vendored
2
admin/src/utils/request/type.d.ts
vendored
@@ -33,5 +33,5 @@ export interface AxiosHooks {
|
||||
export interface ResponseData<T = any> {
|
||||
code: number
|
||||
data: T
|
||||
msg: string
|
||||
message: string
|
||||
}
|
||||
|
@@ -179,7 +179,7 @@ const handleSubmit = async () => {
|
||||
feedback.msgSuccess('操作成功')
|
||||
emit('success')
|
||||
}).catch((err) => {
|
||||
feedback.msgError(err.msg)
|
||||
feedback.msgError(err.message)
|
||||
})
|
||||
} catch (error) {}
|
||||
})
|
||||
|
@@ -47,7 +47,6 @@ export function {{{.ModuleName}}}_edit(data: Record<string, any>) {
|
||||
|
||||
// {{{.FunctionName}}}删除
|
||||
export function {{{.ModuleName}}}_delete({{{ .PrimaryKey }}}: number | string) {
|
||||
return request.post({ url: '/{{{.ModuleName}}}/del', { {{{ .PrimaryKey }}} } })
|
||||
return request({
|
||||
url: '/{{{.ModuleName}}}/del',
|
||||
method: "POST",
|
||||
|
@@ -43,11 +43,11 @@
|
||||
onShow
|
||||
} from "@dcloudio/uni-app";
|
||||
import {
|
||||
useDictOptions
|
||||
} from "@/api/dict.js";
|
||||
useDictData
|
||||
} from "@/hooks/useDictOptions";
|
||||
import {
|
||||
{{{ .ModuleName }}}_detail
|
||||
} from "@/api/{{{ .ModuleName }}}.js";
|
||||
} from "@/api/{{{ .ModuleName }}}";
|
||||
|
||||
|
||||
import {
|
||||
@@ -57,7 +57,10 @@
|
||||
} from "@/utils/utils";
|
||||
|
||||
let form = ref({});
|
||||
|
||||
{{{- if ge (len .DictFields) 1 }}}
|
||||
{{{- $dictSize := sub (len .DictFields) 1 }}}
|
||||
const { dictData } = useDictData([{{{- range .DictFields }}}'{{{ . }}}'{{{- if ne (index $.DictFields $dictSize) . }}},{{{- end }}}{{{- end }}}])
|
||||
{{{- end }}}
|
||||
onLoad((e) => {
|
||||
console.log("onLoad", e);
|
||||
getDetails(e.id);
|
||||
@@ -67,18 +70,22 @@
|
||||
getDetails(form.value.id);
|
||||
}
|
||||
});
|
||||
|
||||
onPullDownRefresh(() => {
|
||||
getDetails(form.value.id);
|
||||
});
|
||||
function getDetails(id) {
|
||||
{{{ .ModuleName }}}_detail(id).then((res) => {
|
||||
uni.stopPullDownRefresh();
|
||||
if (res.code == 200) {
|
||||
if (res?.result) {
|
||||
form.value = res?.result
|
||||
if (res?.data) {
|
||||
form.value = res?.data
|
||||
}
|
||||
} else {
|
||||
toast(res.message);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
uni.stopPullDownRefresh();
|
||||
toast(err.message||"网络错误");
|
||||
});
|
||||
}
|
||||
|
@@ -5,13 +5,17 @@
|
||||
{{{- if .IsEdit }}}
|
||||
<uv-form-item label="{{{ .ColumnComment }}}" prop="{{{ (toCamelCase .GoField) }}}" borderBottom>
|
||||
{{{- if eq .HtmlType "input" }}}
|
||||
<uv-input v-model="form.{{{ (toCamelCase .GoField) }}}" border="surround"></uv-input>
|
||||
<uv-input v-model="form.{{{ (toCamelCase .GoField) }}}" border="surround"></uv-input>
|
||||
{{{- else if eq .HtmlType "number" }}}
|
||||
<uv-number-box v-model="form.{{{ (toCamelCase .GoField) }}}" :min="-99999999" :max="99999999" :integer="true"></uv-number-box>
|
||||
<uv-number-box v-model="form.{{{ (toCamelCase .GoField) }}}" :min="-99999999" :max="99999999" :integer="true"></uv-number-box>
|
||||
{{{- else if eq .HtmlType "textarea" }}}
|
||||
<uv-textarea v-model="form.{{{ (toCamelCase .GoField) }}}" border="surround"></uv-textarea>
|
||||
<uv-textarea v-model="form.{{{ (toCamelCase .GoField) }}}" border="surround"></uv-textarea>
|
||||
{{{- else if or (eq .HtmlType "checkbox") (eq .HtmlType "radio") (eq .HtmlType "select")}}}
|
||||
<x-picker v-model="form.{{{ (toCamelCase .GoField) }}}" valueKey="value" labelKey="name" :columns="dictData.{{{ .DictType }}}"></x-picker>
|
||||
{{{- if ne .DictType "" }}}
|
||||
<x-picker v-model="form.{{{ (toCamelCase .GoField) }}}" valueKey="value" labelKey="name" :columns="dictData.{{{ .DictType }}}"></x-picker>
|
||||
{{{- else }}}
|
||||
请选择字典生成代码
|
||||
{{{- end }}}
|
||||
{{{- end }}}
|
||||
</uv-form-item>
|
||||
{{{- end }}}
|
||||
@@ -35,12 +39,15 @@
|
||||
import {
|
||||
{{{ .ModuleName }}}_detail,
|
||||
{{{ .ModuleName }}}_edit
|
||||
} from "@/api/{{{ .ModuleName }}}.js";
|
||||
} from "@/api/{{{ .ModuleName }}}";
|
||||
import {
|
||||
toast,
|
||||
alert
|
||||
} from "@/utils/utils";
|
||||
|
||||
import {
|
||||
useDictData
|
||||
} from "@/hooks/useDictOptions";
|
||||
|
||||
let formRef = ref();
|
||||
let form = ref({
|
||||
{{{- range .Columns }}}
|
||||
|
@@ -65,8 +65,8 @@ import {
|
||||
onReachBottom,
|
||||
onPageScroll,
|
||||
} from "@dcloudio/uni-app";
|
||||
import { {{{ .ModuleName }}}_list } from "@/api/{{{ .ModuleName }}}.js";
|
||||
import { usePaging } from "@/utils/usePaging";
|
||||
import { {{{ .ModuleName }}}_list } from "@/api/{{{ .ModuleName }}}";
|
||||
import { usePaging } from "@/hooks/usePaging";
|
||||
import { toPath } from "@/utils/utils";
|
||||
const queryParams = reactive({
|
||||
key: "",
|
||||
|
@@ -1,32 +1,20 @@
|
||||
<!-- 产品,分组,IMEI,SIm卡1、2,安装位置,在线状态 ,启用状态-->
|
||||
<template>
|
||||
<view class="page-content">
|
||||
<uv-form labelPosition="left" labelWidth="80" :model="form" ref="formRef">
|
||||
<uv-form-item label="在线状态" prop="status" borderBottom>
|
||||
<x-picker valueKey="value" labelKey="label" :columns="dictData.devices_status"
|
||||
v-model="form.status"></x-picker>
|
||||
</uv-form-item>
|
||||
|
||||
|
||||
<uv-form-item label="位置" prop="placedName" borderBottom>
|
||||
<uv-input v-model="form.placedName"> </uv-input>
|
||||
</uv-form-item>
|
||||
|
||||
<uv-form-item label="开始时间" prop="startTime" borderBottom>
|
||||
<uv-input v-model="form.startTime" :readonly="true" placeholder="请选择时间"
|
||||
@click="startTimePicker.open()"> </uv-input>
|
||||
<uv-datetime-picker ref="startTimePicker" :minDate="minDate" :maxDate="maxDate" :value="form.startTime"
|
||||
mode="datetime" @confirm="startTimeConfirm">
|
||||
</uv-datetime-picker>
|
||||
</uv-form-item>
|
||||
<uv-form-item label="结束时间" prop="endTime" borderBottom>
|
||||
|
||||
<uv-input v-model="form.endTime" :readonly="true" placeholder="请选择时间"
|
||||
@click="endTimePicker.open()"> </uv-input>
|
||||
<uv-datetime-picker ref="endTimePicker" :minDate="minDate" :maxDate="maxDate" :value="form.endTime" mode="datetime"
|
||||
@confirm="endTimeConfirm">
|
||||
</uv-datetime-picker>
|
||||
{{{- range .Columns }}}
|
||||
{{{- if eq .IsQuery 1 }}}
|
||||
<uv-form-item label="{{{ .ColumnComment }}}" prop="{{{ (toCamelCase .GoField) }}}" borderBottom>
|
||||
{{{- if eq .HtmlType "datetime" }}}
|
||||
<x-date-range v-model:startTime="form.{{{ (toCamelCase .GoField) }}}Start"
|
||||
v-model:endTime="form.{{{ (toCamelCase .GoField) }}}End"></x-date-range>
|
||||
{{{- else if or (eq .HtmlType "select") (eq .HtmlType "radio") }}}
|
||||
<x-picker v-model="form.{{{ (toCamelCase .GoField) }}}" valueKey="value" labelKey="name" :columns="dictData.{{{ .DictType }}}"></x-picker>
|
||||
{{{- else if eq .HtmlType "input" }}}
|
||||
<uv-input v-model="form.{{{ (toCamelCase .GoField) }}}"> </uv-input>
|
||||
{{{- end }}}
|
||||
</uv-form-item>
|
||||
{{{- end }}}
|
||||
{{{- end }}}
|
||||
|
||||
<uv-button type="primary" text="搜索" customStyle="margin-top: 20rpx" @click="submit"></uv-button>
|
||||
</uv-form>
|
||||
@@ -34,7 +22,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
import {
|
||||
onLoad
|
||||
} from "@dcloudio/uni-app";
|
||||
@@ -50,34 +38,26 @@
|
||||
} from "@/utils/utils";
|
||||
import {
|
||||
useDictData
|
||||
} from "@/methods/useDictOptions";
|
||||
const startTimePicker = ref();
|
||||
const endTimePicker = ref();
|
||||
} from "@/hooks/useDictOptions";
|
||||
|
||||
const {
|
||||
dictData
|
||||
} = useDictData(["devices_status"]);
|
||||
{{{- if ge (len .DictFields) 1 }}}
|
||||
{{{- $dictSize := sub (len .DictFields) 1 }}}
|
||||
const { dictData } = useDictData([{{{- range .DictFields }}}'{{{ . }}}'{{{- if ne (index $.DictFields $dictSize) . }}},{{{- end }}}{{{- end }}}])
|
||||
{{{- end }}}
|
||||
|
||||
let formRef = ref();
|
||||
let form = ref({
|
||||
|
||||
location: "",
|
||||
|
||||
placedName: "",
|
||||
status: "",
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
{{{- range .Columns }}}
|
||||
{{{- if .IsQuery }}}
|
||||
{{{- if eq .HtmlType "datetime" }}}
|
||||
{{{ (toCamelCase .GoField) }}}Start: '',
|
||||
{{{ (toCamelCase .GoField) }}}End: '',
|
||||
{{{- else }}}
|
||||
{{{ (toCamelCase .GoField) }}}: '',
|
||||
{{{- end }}}
|
||||
{{{- end }}}
|
||||
{{{- end }}}
|
||||
});
|
||||
let minDate = dayjs('2022-01-01 00:00:00').valueOf()
|
||||
let maxDate = dayjs().endOf('month').valueOf()
|
||||
function startTimeConfirm(e) {
|
||||
form.value.startTime = dayjs(e.value).format('YYYY-MM-DD HH:mm:ss')
|
||||
}
|
||||
|
||||
function endTimeConfirm(e) {
|
||||
form.value.endTime = dayjs(e.value).format('YYYY-MM-DD HH:mm:ss')
|
||||
}
|
||||
|
||||
|
||||
function submit() {
|
||||
console.log("submit", form.value);
|
||||
|
@@ -223,7 +223,7 @@ func (tu templateUtil) GetFilePaths(tplCodeMap map[string]string, ModuleName str
|
||||
"vue/index.vue.tpl": strings.Join([]string{"admin/src/views/", ModuleName, "/index.vue"}, ""), // "admin/src/views/%s/index.vue",
|
||||
"vue/index-tree.vue.tpl": strings.Join([]string{"admin/src/views/", ModuleName, "/index-tree.vue"}, ""), // "admin/src/views/%s/index-tree.vue",
|
||||
|
||||
"uniapp/api.ts.tpl": strings.Join([]string{"uniapp/src/api/", ModuleName, ".ts"}, ""),
|
||||
"uniapp/api.ts.tpl": strings.Join([]string{"uniapp/api/", ModuleName, ".ts"}, ""),
|
||||
"uniapp/edit.vue.tpl": strings.Join([]string{"uniapp/pages/", ModuleName, "/edit.vue"}, ""),
|
||||
"uniapp/index.vue.tpl": strings.Join([]string{"uniapp/pages/", ModuleName, "/index.vue"}, ""),
|
||||
"uniapp/search.vue.tpl": strings.Join([]string{"uniapp/pages/", ModuleName, "/search.vue"}, ""),
|
||||
|
@@ -15,47 +15,47 @@ import (
|
||||
|
||||
// RespType 响应类型
|
||||
type RespType struct {
|
||||
code int
|
||||
msg string
|
||||
data interface{}
|
||||
code int
|
||||
message string
|
||||
data interface{}
|
||||
}
|
||||
|
||||
// Response 响应格式结构
|
||||
type Response struct {
|
||||
Code int `json:"code"`
|
||||
Msg string `json:"msg"`
|
||||
Data interface{} `json:"data"`
|
||||
Code int `json:"code"`
|
||||
Message string `json:"message"`
|
||||
Data interface{} `json:"data"`
|
||||
}
|
||||
|
||||
var (
|
||||
Success = RespType{code: 200, msg: "成功"}
|
||||
Failed = RespType{code: 300, msg: "失败"}
|
||||
Success = RespType{code: 200, message: "成功"}
|
||||
Failed = RespType{code: 300, message: "失败"}
|
||||
|
||||
ParamsValidError = RespType{code: 310, msg: "参数校验错误"}
|
||||
ParamsTypeError = RespType{code: 311, msg: "参数类型错误"}
|
||||
RequestMethodError = RespType{code: 312, msg: "请求方法错误"}
|
||||
AssertArgumentError = RespType{code: 313, msg: "断言参数错误"}
|
||||
ParamsValidError = RespType{code: 310, message: "参数校验错误"}
|
||||
ParamsTypeError = RespType{code: 311, message: "参数类型错误"}
|
||||
RequestMethodError = RespType{code: 312, message: "请求方法错误"}
|
||||
AssertArgumentError = RespType{code: 313, message: "断言参数错误"}
|
||||
|
||||
LoginAccountError = RespType{code: 330, msg: "登录账号或密码错误"}
|
||||
LoginDisableError = RespType{code: 331, msg: "登录账号已被禁用了"}
|
||||
TokenEmpty = RespType{code: 332, msg: "token参数为空"}
|
||||
TokenInvalid = RespType{code: 333, msg: "token参数无效"}
|
||||
LoginAccountError = RespType{code: 330, message: "登录账号或密码错误"}
|
||||
LoginDisableError = RespType{code: 331, message: "登录账号已被禁用了"}
|
||||
TokenEmpty = RespType{code: 332, message: "token参数为空"}
|
||||
TokenInvalid = RespType{code: 333, message: "token参数无效"}
|
||||
|
||||
NoPermission = RespType{code: 403, msg: "无相关权限"}
|
||||
Request404Error = RespType{code: 404, msg: "请求接口不存在"}
|
||||
Request405Error = RespType{code: 405, msg: "请求方法不允许"}
|
||||
NoPermission = RespType{code: 403, message: "无相关权限"}
|
||||
Request404Error = RespType{code: 404, message: "请求接口不存在"}
|
||||
Request405Error = RespType{code: 405, message: "请求方法不允许"}
|
||||
|
||||
SystemError = RespType{code: 500, msg: "系统错误"}
|
||||
SystemError = RespType{code: 500, message: "系统错误"}
|
||||
)
|
||||
|
||||
// Error 实现error方法
|
||||
func (rt RespType) Error() string {
|
||||
return strconv.Itoa(rt.code) + ":" + rt.msg
|
||||
return strconv.Itoa(rt.code) + ":" + rt.message
|
||||
}
|
||||
|
||||
// Make 以响应类型生成信息
|
||||
func (rt RespType) Make(msg string) RespType {
|
||||
rt.msg = msg
|
||||
func (rt RespType) Make(message string) RespType {
|
||||
rt.message = message
|
||||
return rt
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ func (rt RespType) Code() int {
|
||||
|
||||
// Msg 获取msg
|
||||
func (rt RespType) Msg() string {
|
||||
return rt.msg
|
||||
return rt.message
|
||||
}
|
||||
|
||||
// Data 获取data
|
||||
@@ -89,9 +89,9 @@ func Result(c *gin.Context, resp RespType, data interface{}) {
|
||||
c.Error(resp)
|
||||
}
|
||||
c.JSON(http.StatusOK, Response{
|
||||
Code: resp.code,
|
||||
Msg: resp.msg,
|
||||
Data: data,
|
||||
Code: resp.code,
|
||||
Message: resp.message,
|
||||
Data: data,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -110,9 +110,9 @@ func Ok(c *gin.Context) {
|
||||
}
|
||||
|
||||
// OkWithMsg 正常响应附带msg
|
||||
func OkWithMsg(c *gin.Context, msg string) {
|
||||
func OkWithMsg(c *gin.Context, message string) {
|
||||
resp := Success
|
||||
resp.msg = msg
|
||||
resp.message = message
|
||||
Result(c, resp, []string{})
|
||||
}
|
||||
|
||||
@@ -137,8 +137,8 @@ func Fail(c *gin.Context, resp RespType) {
|
||||
}
|
||||
|
||||
// FailWithMsg 错误响应附带msg
|
||||
func FailWithMsg(c *gin.Context, resp RespType, msg string) {
|
||||
resp.msg = msg
|
||||
func FailWithMsg(c *gin.Context, resp RespType, message string) {
|
||||
resp.message = message
|
||||
respLogger(resp, "Request FailWithMsg: url=[%s], resp=[%+v]", c.Request.URL.Path, resp)
|
||||
Result(c, resp, []string{})
|
||||
}
|
||||
@@ -218,10 +218,10 @@ func CheckMysqlErr(err error) (e error) {
|
||||
}
|
||||
|
||||
// CheckErrDBNotRecord 校验数据库记录不存在的错误
|
||||
func CheckErrDBNotRecord(err error, msg string) (e error) {
|
||||
func CheckErrDBNotRecord(err error, message string) (e error) {
|
||||
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
core.Logger.WithOptions(zap.AddCallerSkip(1)).Infof("记录不存在: err=[%+v]", err)
|
||||
return SystemError.Make(msg)
|
||||
return SystemError.Make(message)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@@ -27,10 +27,10 @@ func GetExcelColumnName(columnNumber int) string {
|
||||
//
|
||||
// 需要在传入的结构体中的字段加上tag:excel:"title:列头名称;index:列下标(从0开始);"
|
||||
//
|
||||
// @param list 要导出的数据
|
||||
// @param sheet 文档
|
||||
// @param title 标题
|
||||
// @param changeHead map[string]string{"Id": "账号", "Name": "真实姓名"}
|
||||
// list 要导出的数据
|
||||
// sheet 文档
|
||||
// title 标题
|
||||
// changeHead map[string]string{"Id": "账号", "Name": "真实姓名"}
|
||||
func NormalDynamicExport(list interface{}, sheet string, title string, changeHead map[string]string) (file *excelize.File, err error) {
|
||||
e := ExcelInit()
|
||||
err = ExportExcel(sheet, title, list, changeHead, e)
|
||||
|
Reference in New Issue
Block a user