Browse Source

接口对接,完成度百分之90

admin_zwk
zhaowenkang 5 months ago
parent
commit
b623d68b59
  1. 20
      work/src/api/UpdateWorkApi.js
  2. 25
      work/src/views/AddWork.vue
  3. 207
      work/src/views/WorkDetail.vue
  4. 2
      work/vite.config.js

20
work/src/api/UpdateWorkApi.js

@ -0,0 +1,20 @@
import service from ".";
const UpdateWorkApi={
//查询分部
getdeptinfo(){
return service.post("/api/homework_manage/getdeptinfo")
},
//查询分部门店
getshopinfo(deptId){
return service.post("/api/homework_manage/getshopinfo",{deptId})
},
//查询功能
getrecordbycondition(data){
return service.post("/api/homework_manage/getrecordbycondition",data)
},
//数据导出
excelexport(data){
return service.post("/api/homework_manage/excelexport",data)
}
}
export default UpdateWorkApi;

25
work/src/views/AddWork.vue

@ -30,10 +30,10 @@
</el-form-item>
<el-form-item label="关联文章">
<el-autocomplete v-model="articleTitle" :fetch-suggestions="queryArticleList" placeholder="请输入"
@select="handleSelectArticle" />
@select="handleSelectArticle" clearable @change="handleArticleChange"/>
</el-form-item>
<el-form-item label="关联直播">
<el-select v-model="form.LiveId" placeholder="请选择" style="width: 100%">
<el-select v-model="form.LiveId" placeholder="请选择" style="width: 100%" clearable @change="handleLiveChange">
<el-option v-for="item in live" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
@ -91,6 +91,7 @@ import { ref, onMounted, computed } from 'vue'
import AddWorkApi from '../api/AddWorkApi';
import _ from 'lodash';
import dayjs from 'dayjs';
import { ElMessage } from 'element-plus'
const options = ref([
{ id: 1, name: '牧民俱乐部' },
@ -141,6 +142,12 @@ const back = () => {
const articleSearchResults = ref([]);
//
const queryArticleList = async (queryString: string) => {
if (form.value.LiveId) {
ElMessage.warning('您已关联直播,暂无法关联文章');
articleTitle.value = ''; //
form.value.LiveId = '';
return [];
}
try {
const response = await AddWorkApi.getArticleList(queryString);
const formattedResults = response.data.map(article => ({
@ -164,6 +171,14 @@ const handleSelectArticle = (article: { label: string }) => {
articleTitle.value = selectedArticle.value; //
}
};
const handleLiveChange = () => {
if (form.value.ArticleId) {
ElMessage.warning('您已关联文章,暂无法关联直播');
form.value.LiveId = ''; //
form.value.ArticleId = '';
articleTitle.value = '';
}
};
//
const live = ref([]);
@ -192,10 +207,7 @@ const getQuestionTypeText = (type) => {
return '未知类型题目';
}
};
// content
// const getOptionsFromContent = (content) => {
// return JSON.parse(content);
// };
const addSingleChoice = () => {
questions.value.push({
type: 1, // 1
@ -259,7 +271,6 @@ const handleMouseLeave = (index) => {
onMounted(() => {
isHovered.value = Array(questions.value.length).fill(false);
});
</script>
<style scoped>

207
work/src/views/WorkDetail.vue

@ -15,19 +15,27 @@
</div>
</div>
<div class="table-container">
<div class="search-bar">
<el-input type="text" placeholder="请输入精网号" v-model="searchCriteria.netNumber"
style="width: 180px;" size="large" />
<el-select v-model="searchCriteria.department" placeholder="选择分店门部" size="large"
style="width: 180px; margin-left: 15px;"></el-select>
<el-select v-model="searchCriteria.store" placeholder="--请选择所属门店--" size="large"
style="width: 180px; margin-left: 15px"></el-select>
<div class="search-bar" :v-model="form">
<el-input v-model="form.jwcode" type="text" placeholder="请输入精网号" style="width: 180px;"
size="large" />
<el-select v-model="form.deptId" placeholder="选择分店门部" size="large"
style="width: 180px; margin-left: 15px;" clearable @change="handleDeptSelect">
<el-option v-for="item in dept" :key="item.id" :label="item.deptName"
:value="item.deptId" />
</el-select>
<el-select v-model="form.shopId" placeholder="--请选择所属门店--" size="large"
style="width: 180px; margin-left: 15px" clearable>
<el-option v-for="item in shop" :key="item.id" :label="item.shopName"
:value="item.shopId" />
</el-select>
<el-button class="search-btn" type="primary" size="large" @click="searchData">搜索</el-button>
<div class="export">
<el-button class="export-btn" type="primary" size="large">导出数据</el-button>
<el-button class="export-btn" type="primary" size="large"
@click="exportData">导出数据</el-button>
</div>
</div>
<el-table :data="workdetail" style="width: 100%">
<el-table :data="workdetailData" style="width: 100%">
<el-table-column label="序号">
<template #default="scope">
{{ scope.$index + (PageNo - 1) * PageSize + 1 }}
@ -41,8 +49,16 @@
</template>
</el-table-column>
<el-table-column label="作业详情">
<template #default="scope">
<a class="look" @click="viewDetails(scope.row)">查看</a>
<template v-slot="{ $index }">
<el-popover placement="bottom" title="详情" :width="600" trigger="click"
:content="`${getContent($index).formTitle}${getContent($index).contentTitle}${getContent($index).content}`">
<template #reference>
<el-button link type="primary">查看</el-button>
</template>
<div>{{ getContent($index).formTitle }}</div>
<div>{{ getContent($index).contentTitle }}</div>
<div>{{ getContent($index).content }}</div>
</el-popover>
</template>
</el-table-column>
<el-table-column prop="submitTime" label="提交时间">
@ -64,99 +80,124 @@
</template>
<script lang="ts" setup>
import { ref, onMounted } from 'vue'
import { ref, onMounted, watch } from 'vue'
import { useRoute } from 'vue-router';
import ClassListApi from '../api/ClassListApi';
import { ElMessage } from 'element-plus';
import UpdateWorkApi from '../api/UpdateWorkApi';
const back = () => {
window.history.back()
}
//
const shop = ref([]);
//
const handleDeptSelect = async (val) => {
console.log(val);
const res = await UpdateWorkApi.getshopinfo(val);
shop.value = res.data;
console.log(shop.value);
form.value.shopId = "";
};
const route = useRoute();
const id = ref(route.params.id)
console.log(id.value + '============')
// 1
const PageNo = ref(1);
// 10
const PageSize = ref(20);
//
const workdetail = ref < {
total: number;
jwcode: number;
name: string;
depId:string;
depName: string;
shopId: string;
shopName: string;
form: FormItemType[];
} > ({
name: '',
startDate: '',
endDate: '',
clubType: '',
article: {
id: '',
title: '',
},
live: {
id: '',
name: ''
},
form: []
// PageSize
const handleSizeChange = (newPageSize) => {
PageSize.value = newPageSize;
ClassListApi.getWorkDetail(id.value, PageNo.value, PageSize.value);
};
// PageNo
const handleCurrentChange = (newPageNo) => {
PageNo.value = newPageNo;
ClassListApi.getWorkDetail(id.value, PageNo.value, PageSize.value);
};
const form = ref({
jwcode: "",
deptId: "",
shopId: "",
});
// form
interface FormItemType {
id: number;
type: number;
description: string;
content: string; // stringJSON
groupId: number;
name: string;
sort: number;
status: number;
createdAt: string;
updatedAt: string;
//
const exportData = async () => {
try {
const params = {
...form.value,
id: id.value
};
UpdateWorkApi.excelexport(params);
} catch (error) {
ElMessage.error('导出失败');
console.error('导出失败', error);
}
}
//
const searchData = async () => {
try {
const params = {
...form.value
};
const res = await UpdateWorkApi.getrecordbycondition(params);
console.log('搜索结果:', res);
workdetailData.value = res.data;
} catch (error) {
console.error('搜索失败', error);
}
form.value.jwcode = "";
form.value.deptId = "";
form.value.shopId = "";
}
//
const dept = ref([]);
const getDept = async () => {
try {
const res = await UpdateWorkApi.getdeptinfo();
dept.value = res.data;
console.log(dept.value);
} catch (error) {
console.error('获取分部失败', error);
}
};
getDept();
const route = useRoute();
const id = ref(route.params.id)
console.log(id.value + '============')
const workdetailData = ref([]);
onMounted(async () => {
try {
const response = await ClassListApi.getWorkDetail(id.value, PageNo.value, PageSize.value);
workdetail.value = response.data;
console.log(workdetail.value)
workdetailData.value = response.data;
console.log(workdetailData.value);
} catch (error) {
console.error('接口请求出现错误:', error);
}
});
//
const searchCriteria = ref({
jwcode: '',
deptName: '',
shopName: ''
});
// 1
const PageNo = ref(1);
// 10
const PageSize = ref(20);
//
// const searchData = () => {
// filteredData.value = data.filter(item => {
// return (
// item.jwcode.includes(searchCriteria.value.netNumber) &&
// //item.department.includes(searchCriteria.value.department) &&
// item.store.includes(searchCriteria.value.store)
// );
// });
// pagination.value.page = 1;
// };
//
const viewDetails = (item) => {
console.log('查看详情', item);
const getContent = (index) => {
if (workdetailData.value && workdetailData.value[index] && workdetailData.value[index].Reply) {
const reply = workdetailData.value[index].Reply[0];
return {
formTitle: reply.formTitle,
contentTitle: reply.contentTitle,
content: reply.content
};
}
return {
formTitle: '',
contentTitle: '',
content: ''
};
}
</script>
<style scoped>

2
work/vite.config.js

@ -16,7 +16,7 @@ export default defineConfig({
server: {
proxy: {
'/api': {
target: 'http://192.168.8.191:8080',
target: 'http://192.168.9.19:8080',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '')
},

Loading…
Cancel
Save