@@ -163,6 +183,29 @@ export default {
}
//渲染尾页
this.pageBtn.push({text: `${this.pageCount}`, index: this.pageCount})
+ },
+ formatDateTime(str){
+ if (!str) return '-';
+
+ const date = new Date(str);
+ if (isNaN(date)) return '-'; // 防止 Safari 报 Invalid Date
+
+ const pad = n => n.toString().padStart(2, '0');
+
+ const Y = date.getFullYear();
+ const M = pad(date.getMonth() + 1);
+ const D = pad(date.getDate());
+ const h = pad(date.getHours());
+ const m = pad(date.getMinutes());
+ const s = pad(date.getSeconds());
+
+ return `${Y}-${M}-${D} ${h}:${m}:${s}`;
+ },
+ modify(id){
+ this.$emit('dataModify',id)
+ },
+ deleteData(id){
+ this.$emit('dataDelete',id)
}
},
watch: {
diff --git a/src/components/UserFormModal.vue b/src/components/UserFormModal.vue
new file mode 100644
index 0000000..eaef9c8
--- /dev/null
+++ b/src/components/UserFormModal.vue
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
diff --git a/src/directives/money.js b/src/directives/money.js
new file mode 100644
index 0000000..c7dc9ff
--- /dev/null
+++ b/src/directives/money.js
@@ -0,0 +1,28 @@
+export default {
+ bind(el) {
+ const handler = function (e) {
+ let val = e.target.value;
+
+ // 只允许输入数字和一个小数点
+ val = val
+ .replace(/[^\d.]/g, '') // 移除非数字和点
+ .replace(/^\./g, '') // 不能以点开头
+ .replace(/\.{2,}/g, '.') // 多个点只留一个
+ .replace('.', '#') // 临时标记第一个点
+ .replace(/\./g, '') // 移除其他点
+ .replace('#', '.') // 还原第一个点
+ .replace(/^0+(\d)/, '$1') // 去掉前导 0
+ .replace(/^(\d+\.\d{0,2}).*/, '$1') // 最多两位小数
+
+ e.target.value = val
+ el.dispatchEvent(new Event('input')) // 手动触发 v-model 更新
+ }
+
+ el.__moneyInputHandler__ = handler
+ el.addEventListener('input', handler)
+ },
+ unbind(el) {
+ el.removeEventListener('input', el.__moneyInputHandler__)
+ delete el.__moneyInputHandler__
+ }
+}
diff --git a/src/main.js b/src/main.js
index 3198bef..3f76338 100644
--- a/src/main.js
+++ b/src/main.js
@@ -4,6 +4,8 @@ import router from './router'
import store from './store'
import api from './request/api'
import Alert from '@/plugins/alert'
+import Confirm from '@/plugins/confirm'
+import MoneyDirective from '@/directives/money'
import 'jquery'
import 'bootstrap/dist/js/bootstrap.bundle.min.js'
import 'bootstrap/dist/css/bootstrap.min.css'
@@ -18,6 +20,9 @@ Vue.config.productionTip = false
//挂载后端请求函数到全局
Vue.prototype.$api = api
Vue.use(Alert)
+Vue.use(Confirm)
+
+Vue.directive('money',MoneyDirective)
/**
* 初始化系统
diff --git a/src/plugins/confirm.js b/src/plugins/confirm.js
new file mode 100644
index 0000000..ba98112
--- /dev/null
+++ b/src/plugins/confirm.js
@@ -0,0 +1,28 @@
+import Confirm from "@/components/Confirm.vue"
+import Vue from "vue"
+
+const ConfirmConstructor = Vue.extend(Confirm)
+
+function showConfirm(title,message,btnTxt){
+ const instance = new ConfirmConstructor({
+ propsData:{title,message,btnTxt}
+ })
+
+ const vm = instance.$mount()
+ document.body.appendChild(vm.$el)
+ return instance.open().then(result => {
+ cleanup()
+ return result
+ })
+
+ function cleanup() {
+ document.body.removeChild(vm.$el)
+ instance.$destroy()
+ }
+}
+
+export default {
+ install(){
+ Vue.prototype.$confirm = showConfirm
+ }
+}
\ No newline at end of file
diff --git a/src/request/api.js b/src/request/api.js
index 2b61f9d..8cd9c44 100644
--- a/src/request/api.js
+++ b/src/request/api.js
@@ -20,6 +20,14 @@ const getUserList = async (pageIndex,pageSize,desc) => await request.get(`/api/A
//获取用户数量
const getUserCount = async () => await request.get('/api/Admin/UserCount')
+//删除用户
+const deleteUser = async (id) => await request.delete(`/api/Admin/DeleteUser?userId=${id}`)
+
+//获取指定用户信息
+const getUserInfoById = async (id) => await request.get(`/api/Admin/UserInfo?userId=${id}`)
+
+//更新用户信息
+const updateUserInfo = async (id,param) => await request.post(`/api/Admin/UpdateUser?userId=${id}`,param)
export default {
login,
register,
@@ -27,5 +35,8 @@ export default {
getAllConfig,
getUserInfo,
getUserList,
- getUserCount
+ getUserCount,
+ deleteUser,
+ getUserInfoById,
+ updateUserInfo
}
\ No newline at end of file
diff --git a/src/views/layout/Users.vue b/src/views/layout/Users.vue
index 440b289..e047220 100644
--- a/src/views/layout/Users.vue
+++ b/src/views/layout/Users.vue
@@ -1,53 +1,96 @@
-