+
@@ -26,9 +26,9 @@
:src="item.sendFrom === 1 ? user.avatar : mp.avatar"
class="avue-comment__avatar"
/>
-
+
-
+
-
-->
+.select-item {
+ width: 280px;
+ padding: 10px;
+ margin: 0 auto 10px auto;
+ border: 1px solid #eaeaea;
+}
+
+.select-item2 {
+ padding: 10px;
+ margin: 0 auto 10px auto;
+ border: 1px solid #eaeaea;
+}
+
+.ope-row {
+ padding-top: 10px;
+ text-align: center;
+}
+
+.input-margin-bottom {
+ margin-bottom: 2%;
+}
+
+.item-name {
+ font-size: 12px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ text-align: center;
+}
+
+.el-form-item__content {
+ line-height: unset !important;
+}
+
+.col-select {
+ border: 1px solid rgb(234, 234, 234);
+ padding: 50px 0px;
+ height: 160px;
+ width: 49.5%;
+}
+
+.col-select2 {
+ border: 1px solid rgb(234, 234, 234);
+ padding: 50px 0px;
+ height: 160px;
+}
+
+.col-add {
+ border: 1px solid rgb(234, 234, 234);
+ padding: 50px 0px;
+ height: 160px;
+ width: 49.5%;
+ float: right;
+}
+
+.avatar-uploader-icon {
+ border: 1px solid #d9d9d9;
+ font-size: 28px;
+ color: #8c939d;
+ width: 100px !important;
+ height: 100px !important;
+ line-height: 100px !important;
+ text-align: center;
+}
+
+.material-img {
+ width: 100%;
+}
+
+.thumb-div {
+ display: inline-block;
+ text-align: center;
+}
+
+.item-infos {
+ width: 30%;
+ margin: auto;
+}
+
diff --git a/src/views/mp/components/wx-video-play/main.vue b/src/views/mp/components/wx-video-play/main.vue
index 880d10f8..7dc4347c 100644
--- a/src/views/mp/components/wx-video-play/main.vue
+++ b/src/views/mp/components/wx-video-play/main.vue
@@ -8,110 +8,78 @@
存在的问题:mediaId 有效期是 3 天,超过时间后无法播放
2)重构后的做法:后端接收到微信公众号的视频消息后,将视频消息的 media_id 的文件内容保存到文件服务器中,这样前端可以直接使用 URL 播放。
② 体验优化:弹窗关闭后,自动暂停视频的播放
+
-->
-
+
-
-
-
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/src/views/mp/components/wx-voice-play/main.vue b/src/views/mp/components/wx-voice-play/main.vue
index 3260fc05..9ec8e2e9 100644
--- a/src/views/mp/components/wx-voice-play/main.vue
+++ b/src/views/mp/components/wx-voice-play/main.vue
@@ -25,6 +25,7 @@
diff --git a/src/views/mp/tag/index.vue b/src/views/mp/tag/index.vue
index 84e6fc17..bedfbad8 100644
--- a/src/views/mp/tag/index.vue
+++ b/src/views/mp/tag/index.vue
@@ -28,13 +28,21 @@
/>
- 搜索
- 重置
+
+
+ 搜索
+
+
+
+ 重置
+
- 新增
+
+ 新增
- 同步
+
+ 同步
@@ -91,6 +99,7 @@ import { dateFormatter } from '@/utils/formatTime'
import * as MpTagApi from '@/api/mp/tag'
import * as MpAccountApi from '@/api/mp/account'
import TagForm from './TagForm.vue'
+
const message = useMessage() // 消息弹窗
const { t } = useI18n() // 国际化
@@ -106,7 +115,7 @@ const queryParams = reactive({
const queryFormRef = ref() // 搜索的表单
const accountList = ref
([]) // 公众号账号列表
-/** 查询参数列表 */
+/** 查询列表 */
const getList = async () => {
// 如果没有选中公众号账号,则进行提示。
if (!queryParams.accountId) {
diff --git a/src/views/system/dict/data.vue b/src/views/system/dict/data.vue
index 7b159481..8492262a 100644
--- a/src/views/system/dict/data.vue
+++ b/src/views/system/dict/data.vue
@@ -130,7 +130,7 @@ const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // 导出的加载中
const dicts = ref() // 字典类型的列表
-/** 查询参数列表 */
+/** 查询列表 */
const getList = async () => {
loading.value = true
try {
diff --git a/src/views/system/loginlog/index.vue b/src/views/system/loginlog/index.vue
index 7b1aca5f..c48957a7 100644
--- a/src/views/system/loginlog/index.vue
+++ b/src/views/system/loginlog/index.vue
@@ -123,7 +123,7 @@ const queryParams = reactive({
const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // 导出的加载中
-/** 查询参数列表 */
+/** 查询列表 */
const getList = async () => {
loading.value = true
try {
diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue
index 3baf3148..8feb066b 100644
--- a/src/views/system/menu/index.vue
+++ b/src/views/system/menu/index.vue
@@ -126,7 +126,7 @@ const queryFormRef = ref() // 搜索的表单
const isExpandAll = ref(false) // 是否展开,默认全部折叠
const refreshTable = ref(true) // 重新渲染表格状态
-/** 查询参数列表 */
+/** 查询列表 */
const getList = async () => {
loading.value = true
try {
diff --git a/src/views/system/notify/message/NotifyMessageDetail.vue b/src/views/system/notify/message/NotifyMessageDetail.vue
new file mode 100644
index 00000000..283575bb
--- /dev/null
+++ b/src/views/system/notify/message/NotifyMessageDetail.vue
@@ -0,0 +1,64 @@
+
+
+
+
diff --git a/src/views/system/notify/message/index.vue b/src/views/system/notify/message/index.vue
index 93a8ed68..9a39e7f6 100644
--- a/src/views/system/notify/message/index.vue
+++ b/src/views/system/notify/message/index.vue
@@ -1,67 +1,208 @@
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.templateParams }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
diff --git a/src/views/system/notify/message/message.data.ts b/src/views/system/notify/message/message.data.ts
deleted file mode 100644
index 665311d2..00000000
--- a/src/views/system/notify/message/message.data.ts
+++ /dev/null
@@ -1,101 +0,0 @@
-import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
-
-// CrudSchema
-const crudSchemas = reactive({
- primaryKey: 'id', // 默认的主键ID
- primaryTitle: '编号', // 默认显示的值
- primaryType: 'id', // 默认为seq,序号模式
- action: true,
- actionWidth: '200', // 3个按钮默认200,如有删减对应增减即可
- columns: [
- {
- title: '用户编号',
- field: 'userId',
- isSearch: true
- },
- {
- title: '用户类型',
- field: 'userType',
- dictType: DICT_TYPE.USER_TYPE,
- dictClass: 'string',
- isSearch: true,
- table: {
- width: 80
- }
- },
- {
- title: '模版编号',
- field: 'templateId'
- },
- {
- title: '模板编码',
- field: 'templateCode',
- isSearch: true,
- table: {
- width: 80
- }
- },
- {
- title: '发送人名称',
- field: 'templateNickname',
- table: {
- width: 120
- }
- },
- {
- title: '模版内容',
- field: 'templateContent',
- table: {
- width: 200
- }
- },
- {
- title: '模版类型',
- field: 'templateType',
- dictType: DICT_TYPE.SYSTEM_NOTIFY_TEMPLATE_TYPE,
- dictClass: 'number',
- isSearch: true,
- table: {
- width: 80
- }
- },
- {
- title: '模版参数',
- field: 'templateParams',
- isTable: false
- },
- {
- title: '是否已读',
- field: 'readStatus',
- dictType: DICT_TYPE.INFRA_BOOLEAN_STRING,
- dictClass: 'boolean',
- table: {
- width: 80
- }
- },
- {
- title: '阅读时间',
- field: 'readTime',
- formatter: 'formatDate',
- table: {
- width: 180
- }
- },
- {
- title: '创建时间',
- field: 'createTime',
- isForm: false,
- formatter: 'formatDate',
- search: {
- show: true,
- itemRender: {
- name: 'XDataTimePicker'
- }
- },
- table: {
- width: 180
- }
- }
- ]
-})
-export const { allSchemas } = useVxeCrudSchemas(crudSchemas)
diff --git a/src/views/system/notify/my/MyNotifyMessageDetail.vue b/src/views/system/notify/my/MyNotifyMessageDetail.vue
new file mode 100644
index 00000000..45af259d
--- /dev/null
+++ b/src/views/system/notify/my/MyNotifyMessageDetail.vue
@@ -0,0 +1,46 @@
+
+
+
+
diff --git a/src/views/system/notify/my/index.vue b/src/views/system/notify/my/index.vue
index 9f3e9b10..d423a98c 100644
--- a/src/views/system/notify/my/index.vue
+++ b/src/views/system/notify/my/index.vue
@@ -1,58 +1,213 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
diff --git a/src/views/system/notify/my/my.data.ts b/src/views/system/notify/my/my.data.ts
deleted file mode 100644
index 103ed8ef..00000000
--- a/src/views/system/notify/my/my.data.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
-
-// CrudSchema
-const crudSchemas = reactive({
- primaryKey: 'id',
- primaryTitle: ' ',
- primaryType: 'checkbox',
- action: true,
- actionWidth: '200', // 3个按钮默认200,如有删减对应增减即可
- columns: [
- {
- title: '发送人名称',
- field: 'templateNickname',
- table: {
- width: 120
- }
- },
- {
- title: '发送时间',
- field: 'createTime',
- isForm: false,
- formatter: 'formatDate',
- search: {
- show: true,
- itemRender: {
- name: 'XDataTimePicker'
- }
- },
- table: {
- width: 180
- }
- },
- {
- title: '类型',
- field: 'templateType',
- dictType: DICT_TYPE.SYSTEM_NOTIFY_TEMPLATE_TYPE,
- dictClass: 'number',
- table: {
- width: 80
- }
- },
- {
- title: '内容',
- field: 'templateContent'
- },
- {
- title: '是否已读',
- field: 'readStatus',
- dictType: DICT_TYPE.INFRA_BOOLEAN_STRING,
- dictClass: 'boolean',
- table: {
- width: 80
- },
- isSearch: true
- }
- ]
-})
-export const { allSchemas } = useVxeCrudSchemas(crudSchemas)
diff --git a/src/views/system/oauth2/token/index.vue b/src/views/system/oauth2/token/index.vue
index 7e8aca22..a809e452 100644
--- a/src/views/system/oauth2/token/index.vue
+++ b/src/views/system/oauth2/token/index.vue
@@ -115,7 +115,7 @@ const queryParams = reactive({
})
const queryFormRef = ref() // 搜索的表单
-/** 查询参数列表 */
+/** 查询列表 */
const getList = async () => {
loading.value = true
try {
diff --git a/src/views/system/operatelog/index.vue b/src/views/system/operatelog/index.vue
index d7490ba8..c5713be1 100644
--- a/src/views/system/operatelog/index.vue
+++ b/src/views/system/operatelog/index.vue
@@ -156,7 +156,7 @@ const queryParams = reactive({
const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // 导出的加载中
-/** 查询参数列表 */
+/** 查询列表 */
const getList = async () => {
loading.value = true
try {
diff --git a/src/views/system/sensitiveWord/index.vue b/src/views/system/sensitiveWord/index.vue
index cf1fdb82..5b73132b 100644
--- a/src/views/system/sensitiveWord/index.vue
+++ b/src/views/system/sensitiveWord/index.vue
@@ -168,7 +168,7 @@ const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // 导出的加载中
const tagList = ref([]) // 标签数组
-/** 查询参数列表 */
+/** 查询列表 */
const getList = async () => {
loading.value = true
try {
diff --git a/src/views/system/sms/channel/index.vue b/src/views/system/sms/channel/index.vue
index 65d18029..62cd7cc2 100644
--- a/src/views/system/sms/channel/index.vue
+++ b/src/views/system/sms/channel/index.vue
@@ -146,7 +146,7 @@ const queryParams = reactive({
createTime: []
})
-/** 查询参数列表 */
+/** 查询列表 */
const getList = async () => {
loading.value = true
try {
diff --git a/src/views/system/tenant/index.vue b/src/views/system/tenant/index.vue
index e316992d..1991fbea 100644
--- a/src/views/system/tenant/index.vue
+++ b/src/views/system/tenant/index.vue
@@ -191,7 +191,7 @@ const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // 导出的加载中
const packageList = ref([]) //租户套餐列表
-/** 查询参数列表 */
+/** 查询列表 */
const getList = async () => {
loading.value = true
try {
diff --git a/src/views/system/tenantPackage/tenantPackage.data.ts b/src/views/system/tenantPackage/tenantPackage.data.ts
index 47db56d4..d57dee29 100644
--- a/src/views/system/tenantPackage/tenantPackage.data.ts
+++ b/src/views/system/tenantPackage/tenantPackage.data.ts
@@ -43,7 +43,7 @@ const crudSchemas = reactive({
{
title: t('form.remark'),
field: 'remark',
- isTable: false,
+ isTable: true,
isSearch: true,
form: {
component: 'Input',
diff --git a/src/views/system/user/RoleForm.vue b/src/views/system/user/RoleForm.vue
index cb5603fe..0cb82df8 100644
--- a/src/views/system/user/RoleForm.vue
+++ b/src/views/system/user/RoleForm.vue
@@ -8,12 +8,12 @@
-
+
@@ -28,6 +28,7 @@
-
-
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 138c7373..5b286cc7 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -269,6 +269,7 @@
import type { ElTree } from 'element-plus'
import { handleTree, defaultProps } from '@/utils/tree'
// 原vue3版本api方法都是Api结尾觉得见名知义,个人觉得这个可以形成规范
+// TODO 使用 DeptApi 这种形式哈
import { getSimpleDeptList as getSimpleDeptListApi } from '@/api/system/dept'
import { getSimplePostList as getSimplePostListApi, PostVO } from '@/api/system/post'
import { DICT_TYPE, getDictOptions } from '@/utils/dict'
@@ -279,16 +280,15 @@ import {
updateUserStatusApi,
UserVO
} from '@/api/system/user'
-import { parseTime } from './utils'
-import AddForm from './AddForm.vue'
-import ImportForm from './ImportForm.vue'
-import RoleForm from './RoleForm.vue'
+import { parseTime } from './utils' // TODO 可以使用 formatTime 里的方法
+import AddForm from './AddForm.vue' // TODO 改成 UserForm
+import ImportForm from './ImportForm.vue' // TODO 改成 UserImportForm
+import RoleForm from './RoleForm.vue' // TODO 改成 UserAssignRoleForm
import { getUserApi, getUserPageApi } from '@/api/system/user'
import { getSimpleRoleList as getSimpleRoleListApi } from '@/api/system/role'
import { listUserRolesApi } from '@/api/system/permission'
import { CommonStatusEnum } from '@/utils/constants'
import download from '@/utils/download'
-
const message = useMessage() // 消息弹窗
const { t } = useI18n() // 国际化
@@ -304,10 +304,11 @@ const queryParams = reactive({
const showSearch = ref(true)
const showAddDialog = ref(false)
-// 数据字典-
+// 数据字典- // TODO 可以直接 vue 那 getIntDictOptions,这样一方面少个变量,也可以 getIntDictOptions
const statusDictDatas = getDictOptions(DICT_TYPE.COMMON_STATUS)
// ========== 创建部门树结构 ==========
+// TODO 要不把部门树拆成一个左侧的组件,然后点击后触发 handleDeptNodeClick
const deptName = ref('')
watch(
() => deptName.value,
@@ -375,6 +376,7 @@ const resetQuery = () => {
// 添加或编辑
const addEditFormRef = ref()
// 添加用户
+// TODO 可以参考别的模块哈,openForm;然后 tree 和 position 可以里面在加载下,让组件自己维护自己哈。
const handleAdd = () => {
addEditFormRef?.value.resetForm()
// 获得下拉数据
@@ -389,6 +391,7 @@ const handleImport = () => {
}
// 用户导出
+// TODO 改成 await 的风格;
const exportLoading = ref(false)
const handleExport = () => {
message
@@ -432,6 +435,7 @@ const handleCommand = (command: string, index: number, row: UserVO) => {
}
// 用户状态修改
+// TODO 改成 await 的风格;
const handleStatusChange = (row: UserVO) => {
let text = row.status === CommonStatusEnum.ENABLE ? '启用' : '停用'
message
@@ -466,6 +470,7 @@ const handleUpdate = (row: UserVO) => {
}
// 删除用户
+// TODO 改成 await 的风格;
const handleDelete = (row: UserVO) => {
const ids = row.id
message
@@ -481,6 +486,7 @@ const handleDelete = (row: UserVO) => {
}
// 重置密码
+// TODO 改成 await 的风格;
const handleResetPwd = (row: UserVO) => {
message.prompt('请输入"' + row.username + '"的新密码', t('common.reminder')).then(({ value }) => {
resetUserPwdApi(row.id, value)