Browse Source

b端

master
hx 5 days ago
parent
commit
2293c7205b
  1. 7
      src/utils/request.js
  2. 97
      src/utils/ruoyi.js
  3. 38
      src/views/device/device/index.vue
  4. 32
      src/views/system/user/index.vue

7
src/utils/request.js

@ -51,6 +51,13 @@ service.interceptors.request.use(
if (getToken() && !isToken) { if (getToken() && !isToken) {
config.headers["Authorization"] = "Bearer " + getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改 config.headers["Authorization"] = "Bearer " + getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改
} }
const clientTimeZone =
(Intl.DateTimeFormat &&
Intl.DateTimeFormat().resolvedOptions &&
Intl.DateTimeFormat().resolvedOptions().timeZone) ||
"Asia/Shanghai";
console.log(`时区 :${clientTimeZone}`);
config.headers["X-Timezone"] = clientTimeZone;
// get请求映射params参数 // get请求映射params参数
if (config.method === "get" && config.params) { if (config.method === "get" && config.params) {
let url = config.url + "?" + tansParams(config.params); let url = config.url + "?" + tansParams(config.params);

97
src/utils/ruoyi.js

@ -6,49 +6,86 @@ import { Message } from "element-ui";
*/ */
const baseURL = process.env.VUE_APP_BASE_API; const baseURL = process.env.VUE_APP_BASE_API;
// 日期格式化 // 日期格式化
// export function parseTime(time, pattern) {
// if (arguments.length === 0 || !time) {
// return null;
// }
// const format = pattern || "{y}-{m}-{d} {h}:{i}:{s}";
// let date;
// if (typeof time === "object") {
// date = time;
// } else {
// if (typeof time === "string" && /^[0-9]+$/.test(time)) {
// time = parseInt(time);
// } else if (typeof time === "string") {
// time = time
// .replace(new RegExp(/-/gm), "/")
// .replace("T", " ")
// .replace(new RegExp(/\.[\d]{3}/gm), "");
// }
// if (typeof time === "number" && time.toString().length === 10) {
// time = time * 1000;
// }
// date = new Date(time);
// }
// const formatObj = {
// y: date.getFullYear(),
// m: date.getMonth() + 1,
// d: date.getDate(),
// h: date.getHours(),
// i: date.getMinutes(),
// s: date.getSeconds(),
// a: date.getDay(),
// };
// const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
// let value = formatObj[key];
// // Note: getDay() returns 0 on Sunday
// if (key === "a") {
// return ["日", "一", "二", "三", "四", "五", "六"][value];
// }
// if (result.length > 0 && value < 10) {
// value = "0" + value;
// }
// return value || 0;
// });
// return time_str;
// }
export function parseTime(time, pattern) { export function parseTime(time, pattern) {
if (arguments.length === 0 || !time) { if (!time) return null;
return null;
}
const format = pattern || "{y}-{m}-{d} {h}:{i}:{s}"; const format = pattern || "{y}-{m}-{d} {h}:{i}:{s}";
let date;
if (typeof time === "object") { // 把字符串当作 +8 时区
date = time; if (typeof time === "string") {
time = time.replace(/-/g, "/");
time = new Date(time + " GMT+0800");
} else { } else {
if (typeof time === "string" && /^[0-9]+$/.test(time)) { time = new Date(time);
time = parseInt(time);
} else if (typeof time === "string") {
time = time
.replace(new RegExp(/-/gm), "/")
.replace("T", " ")
.replace(new RegExp(/\.[\d]{3}/gm), "");
}
if (typeof time === "number" && time.toString().length === 10) {
time = time * 1000;
}
date = new Date(time);
} }
const formatObj = { const formatObj = {
y: date.getFullYear(), y: time.getFullYear(),
m: date.getMonth() + 1, m: time.getMonth() + 1,
d: date.getDate(), d: time.getDate(),
h: date.getHours(), h: time.getHours(),
i: date.getMinutes(), i: time.getMinutes(),
s: date.getSeconds(), s: time.getSeconds(),
a: date.getDay(), a: time.getDay(),
}; };
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
return format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key]; let value = formatObj[key];
// Note: getDay() returns 0 on Sunday
if (key === "a") { if (key === "a") {
return ["日", "一", "二", "三", "四", "五", "六"][value]; return ["日","一","二","三","四","五","六"][value];
} }
if (result.length > 0 && value < 10) { if (result.length > 0 && value < 10) {
value = "0" + value; value = "0" + value;
} }
return value || 0;
return value;
}); });
return time_str;
} }
export async function handleCopy(copyText) { export async function handleCopy(copyText) {

38
src/views/device/device/index.vue

@ -17,6 +17,10 @@
<el-input v-model="queryParams.alias" placeholder="请输入名称" clearable size="small" @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.alias" placeholder="请输入名称" clearable size="small" @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="地址" prop="lastAddress">
<el-input v-model="queryParams.lastAddress" placeholder="请输入地址" clearable size="small" @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="设备备注" prop="remark"> <el-form-item label="设备备注" prop="remark">
<el-input v-model="queryParams.remark" placeholder="请输入设备备注" clearable size="small" @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.remark" placeholder="请输入设备备注" clearable size="small" @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
@ -62,6 +66,8 @@
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="info" plain icon="el-icon-user" size="mini" :disabled="multiple" v-hasPermi="['device:device:activate:batch']" @click="handleAssignDevice">分配设备</el-button> <el-button type="info" plain icon="el-icon-user" size="mini" :disabled="multiple" v-hasPermi="['device:device:activate:batch']" @click="handleAssignDevice">分配设备</el-button>
</el-col> </el-col>
<!-- <el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button <el-button
type="success" type="success"
@ -92,7 +98,13 @@
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="deviceList" @selection-change="handleSelectionChange"> <el-table
ref="deviceTable"
v-loading="loading"
:data="deviceList"
@selection-change="handleSelectionChange"
@sort-change="handleTableSortChange"
>
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="订单号" align="center" prop="orderCode" /> <el-table-column label="订单号" align="center" prop="orderCode" />
@ -107,7 +119,14 @@
<el-table-column label="序列号" align="center" prop="sn" /> <el-table-column label="序列号" align="center" prop="sn" />
<el-table-column label="名称" align="center" prop="alias" /> <el-table-column label="名称" align="center" prop="alias" />
<el-table-column label="地址" align="center" prop="lastAddress" min-width="220" /> <el-table-column label="地址" align="center" prop="lastAddress" min-width="220" />
<el-table-column label="更新时间" align="center" prop="lastLocationTime" min-width="115" > <el-table-column
label="更新时间"
align="center"
prop="lastLocationTime"
min-width="115"
sortable="custom"
:sort-orders="['ascending', 'descending', null]"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.lastLocationTime, "{y}-{m}-{d} {h}:{i}:{s}") }}</span> <span>{{ parseTime(scope.row.lastLocationTime, "{y}-{m}-{d} {h}:{i}:{s}") }}</span>
</template> </template>
@ -118,7 +137,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="MAC " align="center" prop="mac" /> <el-table-column label="MAC " align="center" prop="mac" />
<el-table-column label="电量" align="center" prop="battery" /> <!-- <el-table-column label="电量" align="center" prop="battery" /> -->
<el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="备注" align="center" prop="remark" />
@ -417,6 +436,8 @@ function getDefaultQueryParams() {
battery: null, battery: null,
lastReportedTime: null, lastReportedTime: null,
lastLocationTime: null, lastLocationTime: null,
lastAddress: null,
lastLocationSort: undefined,
orderCode: null, orderCode: null,
}; };
} }
@ -650,10 +671,21 @@ export default {
this.resetForm("queryForm"); this.resetForm("queryForm");
} }
this.queryParams = getDefaultQueryParams(); this.queryParams = getDefaultQueryParams();
if (this.$refs.deviceTable) {
this.$refs.deviceTable.clearSort();
}
this.searchBusinessName = ""; this.searchBusinessName = "";
this.searchBusinessSelectVisible = false; this.searchBusinessSelectVisible = false;
this.handleQuery(); this.handleQuery();
}, },
handleTableSortChange({ prop, order }) {
if (prop !== "lastLocationTime") {
return;
}
this.queryParams.lastLocationSort =
order === "ascending" ? "asc" : order === "descending" ? "desc" : undefined;
this.handleQuery();
},
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id); this.ids = selection.map((item) => item.id);

32
src/views/system/user/index.vue

@ -32,8 +32,8 @@
size="small" size="small"
style="width: 240px" style="width: 240px"
> >
<el-option label="启用" :value="0" /> <el-option label="启用" :value="false" />
<el-option label="禁用" :value="1" /> <el-option label="禁用" :value="true" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -101,8 +101,8 @@
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch <el-switch
v-model="scope.row.status" v-model="scope.row.status"
active-value="0" :active-value="false"
inactive-value="1" :inactive-value="true"
@change="handleStatusChange(scope.row)" @change="handleStatusChange(scope.row)"
></el-switch> ></el-switch>
</template> </template>
@ -209,8 +209,8 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status"> <el-radio-group v-model="form.status">
<el-radio :label="0">启用</el-radio> <el-radio :label="false">启用</el-radio>
<el-radio :label="1">禁用</el-radio> <el-radio :label="true">禁用</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -466,6 +466,15 @@ export default {
// }); // });
}, },
methods: { methods: {
normalizeBooleanStatus(value) {
if (value === true || value === "true" || value === 1 || value === "1") {
return true;
}
if (value === false || value === "false" || value === 0 || value === "0") {
return false;
}
return false;
},
normalizeRoleOptions(list = []) { normalizeRoleOptions(list = []) {
return (Array.isArray(list) ? list : []).map(item => ({ return (Array.isArray(list) ? list : []).map(item => ({
roleId: item.roleId != null ? item.roleId : item.id, roleId: item.roleId != null ? item.roleId : item.id,
@ -485,7 +494,7 @@ export default {
listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => { listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
this.userList = response.data.list.map(user => ({ this.userList = response.data.list.map(user => ({
...user, ...user,
status: String(user.status) // status: this.normalizeBooleanStatus(user.status)
})); }));
// console.log(this.userList[0].googleAuthSecret) // console.log(this.userList[0].googleAuthSecret)
this.total = Number(response.data.total); this.total = Number(response.data.total);
@ -511,7 +520,7 @@ export default {
}, },
// //
handleStatusChange(row) { handleStatusChange(row) {
let text = row.status === "0" ? "启用" : "停用"; let text = row.status ? "禁用" : "启用";
this.$confirm('确认要"' + text + '""' + row.account + '"用户吗?', "警告", { this.$confirm('确认要"' + text + '""' + row.account + '"用户吗?', "警告", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
@ -521,7 +530,7 @@ export default {
}).then(() => { }).then(() => {
this.msgSuccess(text + "成功"); this.msgSuccess(text + "成功");
}).catch(function() { }).catch(function() {
row.status = row.status === "0" ? "1" : "0"; row.status = !row.status;
}); });
}, },
// //
@ -544,7 +553,7 @@ export default {
phonenumber: undefined, phonenumber: undefined,
email: undefined, email: undefined,
sex: undefined, sex: undefined,
status: 0, status: false,
remark: undefined, remark: undefined,
postIds: [], postIds: [],
roleIds: [] roleIds: []
@ -608,6 +617,7 @@ export default {
this.form = Object.assign({}, data, { this.form = Object.assign({}, data, {
postIds: userRes.postIds || [], postIds: userRes.postIds || [],
roleIds: roleIds, roleIds: roleIds,
status: this.normalizeBooleanStatus(data.status),
passwordHash: undefined passwordHash: undefined
}); });
this.$set(this.form, "roleIds", roleIds); this.$set(this.form, "roleIds", roleIds);
@ -674,7 +684,7 @@ export default {
nickName: this.employeeForm.nickName, nickName: this.employeeForm.nickName,
account: this.employeeForm.account, account: this.employeeForm.account,
passwordHash: this.employeeForm.passwordHash, passwordHash: this.employeeForm.passwordHash,
status: 0, status: false,
roleIds: (this.employeeForm.roleIds || []).map(id => Number(id)) roleIds: (this.employeeForm.roleIds || []).map(id => Number(id))
}; };
addEmployeeUser(submitData).then(() => { addEmployeeUser(submitData).then(() => {

Loading…
Cancel
Save