Commit 3f78e4f1 by wenyi.chen

0403需求变动1

parent 79b410f6
......@@ -77,6 +77,7 @@ service.interceptors.response.use(
}
}
if(error.response.status == 500){
// alert(error.response.data.message)
if(error.response.data.message){
ElMessageBox.alert(error.response.data.message , '提示', {})
}else{
......
......@@ -10,7 +10,7 @@
<el-option v-for="(item, index) in state.taskList" :key="index" :label="item.name"
:value="item.id"></el-option>
</el-select>
<el-select v-model="state.apiListParam.norm_id" placeholder="请选择指标" size="default" @change="searchChange" clearable filterable style="width:300px;margin-right: 20px;">
<el-select v-model="state.apiListParam.norm_id" placeholder="请选择子任务" size="default" @change="searchChange" clearable filterable style="width:300px;margin-right: 20px;">
<el-option v-for="(item, index) in state.normList" :key="index" :label="item.name"
:value="item.id"></el-option>
</el-select>
......@@ -18,10 +18,6 @@
<el-option v-for="(item, index) in state.statusList" :key="index" :label="item.name"
:value="item.value"></el-option>
</el-select>
<el-input class="search-item" placeholder="输入指标名称" v-model="state.apiListParam.name" size="default"
style="width: 220px;" clearable @change="searchChange()">
</el-input>
<el-button size="default" type="primary" @click="searchChange()" >查询</el-button>
<el-button size="default" @click="reset()" >重置</el-button>
</div>
......@@ -33,6 +29,8 @@
<el-table :data="state.tableData.data" style="width: 100%" :height="state.tableHeight"
ref="multipleTableRef">
<el-table-column label="序号" type="index" width="80" show-overflow-tooltip align="center"></el-table-column>
<el-table-column prop="taskInfo.name" label="任务名称" show-overflow-tooltip align="center"></el-table-column>
<el-table-column prop="normInfo.name" label="子任务名称" show-overflow-tooltip align="center"></el-table-column>
<el-table-column prop="norm_list_info.name" label="指标名称" show-overflow-tooltip align="center">
</el-table-column>
<el-table-column prop="norm_list_info.sort" width="80" label="优先级" show-overflow-tooltip align="center">
......@@ -126,7 +124,6 @@ const state = reactive({
apiListParam: {
page: 1,
limit: 10,
name: '',
status:'2,3',
task_id:'',
order:'asc',
......
......@@ -10,11 +10,11 @@
<el-option v-for="(item, index) in state.taskList" :key="index" :label="item.name"
:value="item.id"></el-option>
</el-select>
<el-select v-model="state.apiListParam.norm_id" placeholder="请选择指标" size="default" @change="searchChange" clearable filterable style="width:300px;margin-right: 20px;">
<el-select v-model="state.apiListParam.norm_id" placeholder="请选择子任务" size="default" @change="searchChange" clearable filterable style="width:300px;margin-right: 20px;">
<el-option v-for="(item, index) in state.normList" :key="index" :label="item.name"
:value="item.id"></el-option>
</el-select>
<el-input class="search-item" placeholder="输入指标名称" v-model="state.apiListParam.name" size="default"
<el-input class="search-item" placeholder="输入子任务名称" v-model="state.apiListParam.name" size="default"
style="width: 220px;" clearable @change="searchChange()">
</el-input>
<el-button size="default" type="primary" @click="searchChange()" >查询</el-button>
......@@ -31,6 +31,8 @@
<el-table-column label="序号" type="index" width="100" show-overflow-tooltip align="center"></el-table-column>
<el-table-column prop="taskPackageInfo.name" label="任务名称1" show-overflow-tooltip align="center">
</el-table-column>
<el-table-column prop="normInfo.name" label="子任务名称" show-overflow-tooltip align="center">
</el-table-column>
<el-table-column prop="name" label="指标名称" show-overflow-tooltip align="center">
</el-table-column>
<el-table-column prop="price" label="单价" show-overflow-tooltip align="center">
......
......@@ -3,7 +3,7 @@
<el-dialog :title="state.dialog.title" v-model="state.dialog.isShowDialog" width="60%" @close="closeDialog" :close-on-click-modal="false">
<el-form ref="dialogFormRef" :model="state.formItem.addItem" :rules="state.rules" size="default" label-width="100px"
v-loading="state.dataLoading" label-position="right" style="width: 90%;text-align: center;">
<el-form-item label="指标名称" prop="name">
<el-form-item label="子任务名称" prop="name">
<el-input type="textarea" v-model="state.formItem.addItem.name" placeholder="请输入指标名称" clearable :disabled="true"></el-input>
</el-form-item>
<el-form-item label="难度等级">
......@@ -141,7 +141,7 @@ const state = reactive({
// 打开弹窗
const openDialog = (norm_id) => {
state.dialog.isShowDialog = true;
state.dialog.title = '指标详情';
state.dialog.title = '子任务详情';
state.apiData.id = norm_id;
// 清空数据
state.formItem.addItem.name = '';
......
......@@ -3,7 +3,7 @@
<el-dialog :title="state.dialog.title" v-model="state.dialog.isShowDialog" width="40%" @close="closeDialog" :close-on-click-modal="false">
<el-form ref="dialogFormRef" :model="state.formItem.addItem" :rules="state.rules" size="default" label-width="100px"
v-loading="state.dataLoading" label-position="right" style="width: 90%;text-align: center;">
<el-form-item label="指标名称" prop="name">
<el-form-item label="子任务名称" prop="name">
<el-input type="textarea" v-model="state.formItem.addItem.name" placeholder="请输入指标名称" clearable></el-input>
</el-form-item>
<el-form-item label="难度等级">
......@@ -138,7 +138,7 @@ const state = reactive({
const openDialog = () => {
finalData();
state.dialog.isShowDialog = true;
state.dialog.title = '发布指标';
state.dialog.title = '发布子任务';
};
......
<template>
<div class="system-role-dialog-container">
<el-dialog :title="state.dialog.title" v-model="state.dialog.isShowDialog" width="60%" @close="closeDialog" :close-on-click-modal="false">
<el-form ref="dialogFormRef" :model="state.formItem.addItem" :rules="state.rules" size="default" label-width="100px"
v-loading="state.dataLoading" label-position="right" style="width: 90%;text-align: center;">
<el-form-item label="指标名称" prop="name">
<el-input type="textarea" v-model="state.formItem.addItem.name" placeholder="请输入指标名称" clearable :disabled="true"></el-input>
</el-form-item>
<el-form-item label="难度等级">
<el-select v-model="state.formItem.addItem.level" :disabled="true" placeholder="请选择难度等级">
<el-option label="1" value="1"></el-option>
<el-option label="2" value="2"></el-option>
<el-option label="3" value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="优先级">
<el-select v-model="state.formItem.addItem.sort" :disabled="true" placeholder="请选择优先级">
<el-option label="低" value="1"></el-option>
<el-option label="中" value="2"></el-option>
<el-option label="高" value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="参考信源" prop="refer">
<el-input type="textarea" v-model="state.formItem.addItem.refer" placeholder="请输入参考信源" clearable :disabled="true"></el-input>
</el-form-item>
<el-form-item label="price" prop="price">
<el-input v-model="state.formItem.addItem.price" placeholder="请输入单价" clearable :disabled="true"></el-input>
</el-form-item>
<el-form-item label="参考指南" prop="guide">
<el-input type="textarea" v-model="state.formItem.addItem.guide" placeholder="请输入参考指南" clearable :disabled="true"></el-input>
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<script setup name="systemRoleDialog">
import { normApi } from '/@/api/norm'
import { ElMessage } from 'element-plus';
import { toolsApi } from '/@/api/tools'
// 定义子组件向父组件传值/事件
const emit = defineEmits(['refresh']);
// 定义变量内容
const dialogFormRef = ref();
const router = useRouter();
const state = reactive({
userId: null,
index:0,
userIndex:0,
apiData: {
id:'',
},
rules: {
},
dialog: {
isShowDialog: false,
title: '',
submitTxt: '',
},
tableData:[
],
columns:[
],
collectsTableData:[],
collectsColumns:[],
dataLoading: false,
btnLoading: false,
// 填写内容及自定义文本框
formItem: {
addItem:{
name:'',
level:'',
sort:'',
refer:'',
price:'',
task_id:'',
},
dynamicItem: [
//默认显示一条
// {
// name: '',
// value:''
// }
],
userFilled: [
//默认显示一条
// {
// name: '',
// radio:'1',
// }
]
}
});
// 打开弹窗
const openDialog = (norm_id) => {
state.dialog.isShowDialog = true;
state.dialog.title = '指标详情';
state.apiData.id = norm_id;
// 清空数据
state.formItem.addItem.name = '';
state.formItem.addItem.level = '';
state.formItem.addItem.sort = '';
state.formItem.addItem.refer = '';
state.formItem.addItem.price = '';
state.formItem.addItem.task_id = '';
state.formItem.addItem.guide = '';
state.formItem.dynamicItem = [];
state.formItem.userFilled = [];
state.tableData=[];
state.columns=[];
state.collectsTableData=[];
state.collectsColumns=[];
normApi().normDetail(state.apiData).then(res => {
let addItem = res.data.addItem;
let custom = res.data.custom;
// 数据详情
state.formItem.addItem.name = addItem.name;
state.formItem.addItem.level = addItem.level;
state.formItem.addItem.sort = addItem.sort+'';
state.formItem.addItem.refer = addItem.refer;
state.formItem.addItem.price =addItem.price;
state.formItem.addItem.task_id= addItem.task_id
state.formItem.addItem.guide= addItem.guide
state.userIndex = 0;
state.index = 0;
custom.forEach(item => {
if(item.user_filled==1){
state.formItem.userFilled.push({name:item.extend_name,radio:item.required+"",remarks:item.extend_remarks});
state.userIndex++
}else{
state.formItem.dynamicItem.push({name:item.extend_name,value:item.extend_value});
state.index++
}
});
//领取列表
let receivesList = res.data.receivesList
if(receivesList){
let arr = [
{ label:'序号', prop: 'index',width:'80px'},
// { label:'ID', prop: 'id'},
{ label:'用户名称', prop: 'userInfo.name',width:120},
{ label:'任务名称', prop: 'task_info.name',width:180},
{ label:'指标名称', prop: 'norm_list_info.name',width:180},
];
state.columns = arr;
receivesList.forEach(function(item, index, arr) {
let list = {
'index': index+1,
// 'id':item.id,
'userInfo.name': item.userInfo.name,
'task_info.name': item.task_info.name,
'norm_list_info.name': item.norm_list_info.name,
'receives_status': item.receives_status,
'completion_status': item.completion_status,
'not_collectible_remarks': item.not_collectible_remarks?item.not_collectible_remarks:"是",
}
state.tableData.push(list);
item.norm_list_extend.forEach(function(items, indexs, arrs) {
if(state.columns.length>0){
state.columns.forEach(function(itemss, indexss, arrss) {
let vlues = state.columns.map(itemsss => itemsss.prop).indexOf('extend_value'+indexs)
if(vlues== -1){
state.columns.push( { label: items.extend_name, prop: 'extend_value'+indexs,width:180 })
}
});
}else{
state.columns.push( { label: items.extend_name, prop: 'extend_value'+indexs,width:180 })
}
list['extend_value'+indexs] =items.extend_value;
});
});
state.columns.push( { label: '领取状态', prop:'receives_status',width:100 })
state.columns.push( { label: '完成状态', prop:'completion_status',width:100 })
state.columns.push( { label: '是否可采集', prop:'not_collectible_remarks',width:200 })
}
}).catch(() => {
})
};
// 关闭弹窗
const closeDialog = () => {
dialogFormRef.value.resetFields();
state.dialog.isShowDialog = false;
};
// 暴露变量
defineExpose({
openDialog,
});
onMounted(() => {
if(router.currentRoute.value.query.task_id){
state.formItem.addItem.task_id = router.currentRoute.value.query.task_id
}
});
</script>
<style scoped lang="scss">
.el-dialog__body {
display: flex;
justify-content: center;
align-content: center;
}
.el-input.is-disabled{
background:#fff !important;
color: var(--el-radio-text-color) !important;
-webkit-text-fill-color: var(--el-radio-text-color) !important;
}
:deep(.el-input .el-input__inner){
background:#fff !important;
color: var(--el-radio-text-color) !important;
-webkit-text-fill-color: var(--el-radio-text-color) !important;
}
:deep(.el-input .el-input__wrapper){
background:#fff !important;
color: var(--el-radio-text-color) !important;
-webkit-text-fill-color: var(--el-radio-text-color) !important;
}
.el-textarea.is-disabled{
background:#fff !important;
color: var(--el-radio-text-color) !important;
-webkit-text-fill-color: var(--el-radio-text-color) !important;
}
:deep(.el-textarea .el-textarea__inner){
background:#fff !important;
color: var(--el-radio-text-color) !important;
-webkit-text-fill-color: var(--el-radio-text-color) !important;
}
:deep(.el-textarea .el-textarea__wrapper){
background:#fff !important;
color: var(--el-radio-text-color) !important;
-webkit-text-fill-color: var(--el-radio-text-color) !important;
}
</style>
......@@ -10,14 +10,14 @@
<el-option v-for="(item, index) in state.taskList" :key="index" :label="item.name"
:value="item.id"></el-option>
</el-select>
<el-input class="search-item" placeholder="请输入指标名称" v-model="state.apiData.name" size="default"
<el-input class="search-item" placeholder="请输入子任务名称" v-model="state.apiData.name" size="default"
style="width: 220px;" clearable @change="searchChange()">
</el-input>
<el-button size="default" type="primary" @click="searchChange()" >查询</el-button>
<el-button size="default" @click="reset()" >重置</el-button>
</div>
<div>
<el-button size="default" type="primary" @click="release()" v-if="state.isHide">发布指标</el-button>
<el-button size="default" type="primary" @click="release()" v-if="state.isHide">发布子任务</el-button>
<el-button @click="backToPreviousPage">返回页面</el-button>
</div>
</div>
......@@ -34,7 +34,7 @@
</template>
</el-table-column>
<el-table-column prop="taskPackageInfo.unit" label="单位名称" show-overflow-tooltip align="center"></el-table-column>
<el-table-column prop="name" label="指标名称" show-overflow-tooltip align="center">
<el-table-column prop="name" label="子任务名称" show-overflow-tooltip align="center">
<template #default="scope">
<span @click="details(scope.row.id)">{{scope.row.name}}</span>
</template>
......@@ -57,7 +57,8 @@
<el-table-column label="操作" width="380" fixed="right" align="center">
<template #default="scope">
<el-button size="small" type="primary" @click="details(scope.row.id)">查看详情</el-button>
<el-button size="small" type="danger" @click="edit(scope.row.id)">修改指标</el-button>
<el-button size="small" @click="edit(scope.row.id)">修改子任务</el-button>
<el-button size="small" type="danger" @click="importFile(scope.row.id)">导入数据</el-button>
<el-button size="small" type="warning" @click="exportFile(scope.row.id)">导出数据</el-button>
</template>
</el-table-column>
......@@ -73,6 +74,7 @@
<DetailDialog ref="DetailDialogRef" @refresh="getList()" />
<AddDialog ref="AddDialogRef" @refresh="getList()" />
<EditDialog ref="EditDialogRef" @refresh="getList()" />
<ImporDialog ref="ImporDialogRef" @refresh="getList()" />
</el-card>
</div>
</div>
......@@ -90,12 +92,14 @@ const Breadcrumb = defineAsyncComponent(() => import('/@/layout/navBars/breadcru
const AddDialog = defineAsyncComponent(() => import('/@/views/norm/list/dialog.vue'));
const DetailDialog = defineAsyncComponent(() => import('/@/views/norm/list/details.vue'));
const EditDialog = defineAsyncComponent(() => import('/@/views/norm/list/edit.vue'));
const ImporDialog = defineAsyncComponent(() => import('/@/views/norm/list/impor.vue'));
const router = useRouter();
// 定义变量内容
const AddDialogRef = ref()
const DetailDialogRef = ref()
const EditDialogRef = ref()
const ImporDialogRef = ref()
const state = reactive({
apiData: {
......@@ -193,6 +197,12 @@ const details= (norm_id) => {
const edit= (norm_id) => {
EditDialogRef.value.openDialog(norm_id);
}
// 导入数据窗口
const importFile= (norm_id) => {
ImporDialogRef.value.openDialog(norm_id);
}
// 导出文件
const exportFile= (id) => {
let query = {id:id}
......@@ -213,6 +223,7 @@ const exportFile= (id) => {
}).catch(() => {
})
}
</script>
<style lang="scss" scoped>
......
......@@ -40,10 +40,10 @@
<span style="color:#F56C6C">{{scope.row.collectsQuantity}}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="350" fixed="right" align="center">
<el-table-column label="操作" width="450" fixed="right" align="center">
<template #default="scope">
<!-- <el-button size="small" link type="primary" @click="details(scope.row.id)">发布指标</el-button> -->
<el-button size="small" type="primary" @click="details(scope.row.id)">详情与发布</el-button>
<el-button size="small" type="primary" @click="details(scope.row.id)">发布子任务</el-button>
<el-button size="small" type="danger" @click="edit(scope.row)">修改任务</el-button>
<el-button size="small" type="warning" @click="exportFile(scope.row.id)">导出数据</el-button>
</template>
......
......@@ -37,7 +37,7 @@ const viteConfig = defineConfig((mode) => {
hmr: true,
proxy: {
'/dev': {
target: 'http://gcspider.raisound.com:81/data-collect-api',
target: 'http://gcspider.raisound.com:81/data-collect-api-dev',
// target: 'https://data-collect.raisound.com/smart-detection',
// target: 'http://192.168.10.168/data-collect-api',
ws: true,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment