Commit dee4d0eb by 李宁

1

1 parent 9c18465f
*.DS_Store
**/node_modules/
**/dist/
**/package-lock.json
**/yarn.lock
**/dist.zip
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
......@@ -15,7 +15,7 @@
<div class="header-content">
<img src="img/logo.png" alt="Logo" class="logo">
<img src="img/hello.png" alt="Logo" class="hello">
<div class="name">欢迎登录和家智</div>
<div class="name">欢迎怀化移动智能质</div>
</div>
</div>
</div>
......
......@@ -3,7 +3,9 @@
"allow": [
"Bash(npm run build)",
"Read(//Users/lining/Desktop/xsdCode/Activity/huaiHua/app/**)",
"Read(//Users/lining/Desktop/xsdCode/Activity/huaiHua/**)"
"Read(//Users/lining/Desktop/xsdCode/Activity/huaiHua/**)",
"Read(//Users/lining/Downloads/**)",
"Bash(npm run dev)"
],
"deny": [],
"ask": []
......
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
......@@ -5,8 +5,8 @@
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>视频质检系统</title>
<script type="module" crossorigin src="./assets/index-D1E41z8w.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index--TXUEGg1.css">
<script type="module" crossorigin src="./assets/index-BpBuKBGo.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-BPUNzQVu.css">
</head>
<body>
<div id="app"></div>
......
......@@ -24,6 +24,10 @@
<el-icon><List /></el-icon>
<span>质检信息列表</span>
</el-menu-item>
<el-menu-item index="/quality-result">
<el-icon><DocumentChecked /></el-icon>
<span>质检结果列表</span>
</el-menu-item>
<el-menu-item index="/staff-list">
<el-icon><User /></el-icon>
<span>工维人员管理</span>
......@@ -42,7 +46,7 @@
<script setup>
import { useRouter } from 'vue-router'
import { Upload, List, User } from '@element-plus/icons-vue'
import { Upload, List, User, DocumentChecked } from '@element-plus/icons-vue'
import { ElMessage } from 'element-plus'
import { onMounted } from 'vue'
import Header from './components/Header.vue'
......
......@@ -2,25 +2,16 @@
<div class="header">
<div class="header-left">
<img src="../assets/logo.png" alt="Logo" class="header-logo" />
<span class="header-title">和家智检管理系统</span>
<span class="header-title">怀化移动智能质检</span>
</div>
<div class="header-right">
<el-dropdown @command="handleCommand">
<div class="user-info">
<span class="username">Hi,{{ username }}</span>
<el-icon class="arrow-icon">
<ArrowDown />
</el-icon>
</div>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item command="logout">
<el-icon><SwitchButton /></el-icon>
退出登录
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<div class="header-actions" @click="downLoad">
<el-tooltip content="操作手册" placement="bottom" effect="dark">
<div class="manual-icon">
<el-icon><Document /></el-icon>
</div>
</el-tooltip>
</div>
<el-dropdown @command="handleCommand">
<div class="user-info">
<span class="username">Hi,{{ username }}</span>
......@@ -45,7 +36,7 @@
import { ref, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ArrowDown, SwitchButton } from '@element-plus/icons-vue'
import { ArrowDown, SwitchButton, Document } from '@element-plus/icons-vue'
const router = useRouter()
const username = ref('')
......@@ -55,6 +46,10 @@ onMounted(() => {
username.value = localStorage.getItem('adminNum') || '用户'
})
const downLoad = () => {
window.open('https://jfq5tn3wbn.feishu.cn/docx/P5bvdCV3jo0E2axFa9bczwdQnQc?from=from_copylink')
}
const handleCommand = async (command) => {
if (command === 'logout') {
try {
......@@ -118,6 +113,33 @@ const handleCommand = async (command) => {
.header-right {
display: flex;
align-items: center;
gap: 16px;
}
.header-actions {
display: flex;
align-items: center;
}
.manual-icon {
display: flex;
align-items: center;
justify-content: center;
width: 36px;
height: 36px;
border-radius: 6px;
cursor: pointer;
transition: all 0.3s ease;
color: #666666;
}
.manual-icon:hover {
background-color: #f5f5f5;
color: #409eff;
}
.manual-icon .el-icon {
font-size: 18px;
}
.user-info {
......
......@@ -15,7 +15,7 @@
</div>
<div class="form-header">
<h2>智能质检运营平台</h2>
<h2>怀化移动智能质检</h2>
</div>
<el-form :model="loginForm" :rules="rules" ref="loginFormRef" class="login-form-inner">
......@@ -112,8 +112,8 @@ const loading = ref(false)
const currentCaptcha = ref('')
const loginForm = reactive({
adminNum: 'huaihuayidong',
password: 'Hhyd2025..',
adminNum: '',
password: '',
captchaCode: '',
code: '',
codeId: ''
......
......@@ -70,8 +70,8 @@
<el-table-column prop="applyId" label="质检号ID" width="220"></el-table-column>
<el-table-column prop="campaignId" label="工维人员工号" width="120"></el-table-column>
<el-table-column prop="accNbr" label="用户账号" width="120"></el-table-column>
<el-table-column prop="orderCode" label="工单号" width="120"></el-table-column>
<el-table-column prop="addressName" label="工单地址" width="220"></el-table-column>
<el-table-column prop="orderCode" label="工单号" width="220" show-overflow-tooltip></el-table-column>
<el-table-column prop="addressName" label="工单地址" width="220" show-overflow-tooltip></el-table-column>
<el-table-column prop="orderType" label="工单类型" width="220" show-overflow-tooltip></el-table-column>
<el-table-column prop="deviceType" label="设备类型" width="220" show-overflow-tooltip></el-table-column>
<el-table-column prop="finish" label="质检状态" width="120">
......@@ -84,16 +84,14 @@
</template>
</el-table-column>
<el-table-column prop="finishTime" label="完成时间" width="180"></el-table-column>
<el-table-column label="操作" width="180" fixed="right">
<el-table-column label="操作" width="180" fixed="right" align="center">
<template #default="scope">
<div style="display: flex; gap: 5px;">
<el-button size="small" type="danger" @click="deleteWorkOrder(scope.row)" :disabled="scope.row.finish === 1">
<el-button size="small" type="danger" @click="deleteWorkOrder(scope.row)" :disabled="scope.row.finish === 1">
删除
</el-button>
<el-button size="small" type="primary" @click="addWorkOrder(scope.row)" :disabled="scope.row.finish===1 || (scope.row.orderType&&scope.row.orderType.includes('故障投诉'))">
新增工单
</el-button>
</div>
</template>
</el-table-column>
</el-table>
......
......@@ -124,9 +124,20 @@ const handleFilter = async () => {
batchStatusList: filterForm.batchStatus
};
let fn = (dateString)=>{
const date = new Date(dateString);
date.setDate(date.getDate() + 1);
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
if (filterForm.uploadTime && filterForm.uploadTime.length === 2) {
params.uploadStartTime = filterForm.uploadTime[0];
params.uploadEndTime = filterForm.uploadTime[1];
params.uploadEndTime = fn(filterForm.uploadTime[1]);
}
const response = await getQualityBatches(params);
......
......@@ -3,6 +3,7 @@ import Login from '../pages/Login.vue'
import Upload from '../pages/Upload.vue'
import QualityList from '../pages/QualityList.vue'
import QualityDetail from '../pages/QualityDetail.vue'
import QualityResult from '../pages/QualityResult.vue'
import StaffList from '../pages/StaffList.vue'
const routes = [
......@@ -31,6 +32,11 @@ const routes = [
component: QualityDetail
},
{
path: '/quality-result',
name: 'quality-result',
component: QualityResult
},
{
path: '/staff-list',
name: 'staff-list',
component: StaffList
......
......@@ -70,6 +70,30 @@ export const getQualityBatchDetail = (params) => {
.then(response => response.json());
};
// 获取质检结果列表
export const getQualityResults = (params) => {
return fetch(`${API_BASE_URL}/zhijian-trial/zhiJianOrder/applyPage`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(params)
})
.then(response => response.json());
};
// 获取质检结果详情
export const getQualityResultsDetail = (params) => {
return fetch(`${API_BASE_URL}/zhijian-trial/zhiJianOrder/getResultDetail`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(params)
})
.then(response => response.json());
};
// 获取此次质检单的设备和工单类型
export const queryOrderAndDevice = (params) => {
return fetch(`${API_BASE_URL}/zhijian-trial/zhiJianOrder/getDevices`, {
......
......@@ -6,6 +6,13 @@ export default defineConfig({
plugins: [vue()],
base: './',
assetsInclude: ['**/*.xlsx', '**/*.xls', '**/*.csv'],
css: {
preprocessorOptions: {
scss: {
additionalData: `@use "@/styles/variables.scss" as *;`
}
}
},
server: {
host: '0.0.0.0',
port: 8080,
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!