From 589a907a4e76a751172a1be5bb711a970e0e96b8 Mon Sep 17 00:00:00 2001
From: hejianhao <15708179461@qq.com>
Date: 星期三, 30 四月 2025 09:40:59 +0800
Subject: [PATCH] 菌种报告评定
---
/dev/null | 212 ---------------------
culture/src/router/index.js | 252 +++++++-----------------
culture/src/views/deliveryAssessment/projectTeamIntegral/detail.vue | 116 +----------
3 files changed, 93 insertions(+), 487 deletions(-)
diff --git a/culture/src/router/index.js b/culture/src/router/index.js
index a93abb5..3258f75 100644
--- a/culture/src/router/index.js
+++ b/culture/src/router/index.js
@@ -134,89 +134,89 @@
path: "/strain-library",
component: Parent,
meta: {
- title: "菌种库管理",
+ title: "菌种库管理",
},
children: [
- {
- path: "strain-library-manage",
- name: "StrainLibraryManage",
- meta: {
- title: "原始细胞库",
- keepAlive: true,
- },
- component: () => import("../views/strain-library/strain-library-manage"),
- },
- {
- path: "strain-library-manage/add",
- name: "StrainLibraryManageAdd",
- meta: {
- title: "新增原始细胞库",
- keepAlive: true,
- hide: true
- },
- component: () => import("../views/strain-library/strain-library-manage/add.vue"),
- },
- {
- path: "strain-library-manage/record",
- name: "StrainRecord",
- meta: {
- title: "出入库记录",
- keepAlive: true,
- hide: true
- },
- component: () => import("../views/strain-library/strain-library-manage/record.vue"),
- },
- {
- path: "main-cell-library",
- name: "MainCellLibrary",
- meta: {
- title: "主细胞库",
- keepAlive: true,
- },
- component: () => import("../views/strain-library/main-cell-library"),
- },
- {
- path: "main-cell-library/add",
- name: "MainCellLibraryAdd",
- meta: {
- title: "新增主细胞",
- keepAlive: true,
- hide: true
- },
- component: () => import("../views/strain-library/main-cell-library/add.vue"),
- },
- {
- path: "production-cell-library",
- name: "ProductionCellLibrary",
- meta: {
- title: "生产细胞库",
- keepAlive: true,
- },
- component: () => import("../views/strain-library/production-cell-library"),
- },
- {
- path: "production-cell-library/add",
- name: "ProductionCellLibraryAdd",
- meta: {
- title: "新增生产细胞",
- keepAlive: true,
- hide: true
+ {
+ path: "strain-library-manage",
+ name: "StrainLibraryManage",
+ meta: {
+ title: "原始细胞库",
+ keepAlive: true,
+ },
+ component: () => import("../views/strain-library/strain-library-manage"),
},
- component: () => import("../views/strain-library/production-cell-library/add.vue"),
- }
+ {
+ path: "strain-library-manage/add",
+ name: "StrainLibraryManageAdd",
+ meta: {
+ title: "新增原始细胞库",
+ keepAlive: true,
+ hide: true
+ },
+ component: () => import("../views/strain-library/strain-library-manage/add.vue"),
+ },
+ {
+ path: "strain-library-manage/record",
+ name: "StrainRecord",
+ meta: {
+ title: "出入库记录",
+ keepAlive: true,
+ hide: true
+ },
+ component: () => import("../views/strain-library/strain-library-manage/record.vue"),
+ },
+ {
+ path: "main-cell-library",
+ name: "MainCellLibrary",
+ meta: {
+ title: "主细胞库",
+ keepAlive: true,
+ },
+ component: () => import("../views/strain-library/main-cell-library"),
+ },
+ {
+ path: "main-cell-library/add",
+ name: "MainCellLibraryAdd",
+ meta: {
+ title: "新增主细胞",
+ keepAlive: true,
+ hide: true
+ },
+ component: () => import("../views/strain-library/main-cell-library/add.vue"),
+ },
+ {
+ path: "production-cell-library",
+ name: "ProductionCellLibrary",
+ meta: {
+ title: "生产细胞库",
+ keepAlive: true,
+ },
+ component: () => import("../views/strain-library/production-cell-library"),
+ },
+ {
+ path: "production-cell-library/add",
+ name: "ProductionCellLibraryAdd",
+ meta: {
+ title: "新增生产细胞",
+ keepAlive: true,
+ hide: true
+ },
+ component: () => import("../views/strain-library/production-cell-library/add.vue"),
+ }
]
- },
- {
- path: 'pedigree-vhart',
- name: 'PedigreeChart',
- meta: {
- title: "菌种传代生产谱系图",
},
- component: () => import("../views/pedigree-chart"),
- }
+ {
+ path: 'pedigree-vhart',
+ name: 'PedigreeChart',
+ meta: {
+ title: "菌种传代生产谱系图",
+ },
+ component: () => import("../views/pedigree-chart"),
+ }
]
},
-
+
{
path: "/dataManagement",
component: Layouts,
@@ -474,117 +474,23 @@
path: "/deliveryAssessment",
component: Layouts,
meta: {
- title: "工作交付评定",
+ title: "菌种报告评定",
},
children: [
{
path: "projectTeamIntegral",
meta: {
- title: "项目组总积分",
+ title: "菌种项目组评定表",
},
component: () => import("../views/deliveryAssessment/projectTeamIntegral"),
},
{
path: "projectTeamIntegral-detail",
meta: {
- title: "积分详情",
+ title: "评定详情",
hide: true
},
component: () => import("../views/deliveryAssessment/projectTeamIntegral/detail.vue"),
- },
- {
- // 超级管理员
- path: "taskList",
- meta: {
- title: "课题列表",
- },
- component: () => import("../views/deliveryAssessment/taskList"),
- },
- {
- // 工艺工程师 审批人 实验员 超级管理员
- path: "restsTask",
- meta: {
- title: "实验员其他任务",
- },
- component: () => import("../views/deliveryAssessment/restsTask"),
- },
- {
- // 超级管理员 工艺工程师
- path: "clinicalTrial",
- meta: {
- title: "临床试验积分列表",
- },
- component: () => import("../views/deliveryAssessment/clinicalTrial"),
- },
- {
- // 化验师 审批人
- path: "testingAndEvaluation",
- meta: {
- title: "检测项评定列表",
- },
- component: () => import("../views/deliveryAssessment/testingAndEvaluation"),
- },
- {
- // 化验师 实验员
- path: "experimentResults",
- meta: {
- title: "实验结果评定",
- },
- component: () => import("../views/deliveryAssessment/experimentResults"),
- },
- {
- // 化验师 工艺工程师 审批人
- path: "assayTaskList",
- meta: {
- title: "课题评定列表",
- },
- component: () => import("../views/deliveryAssessment/assayTaskList"),
- },
- {
- // 工艺工程师
- path: "processEngineerEvaluate",
- meta: {
- title: "工艺工程师工作评定详情",
- },
- component: () => import("../views/deliveryAssessment/processEngineerEvaluate"),
- },
- {
- // 工艺工程师
- path: "testerWorkerEvaluate",
- meta: {
- title: "实验员工作评定",
- },
- component: () => import("../views/deliveryAssessment/testerWorkerEvaluate"),
- },
- {
- // 工艺工程师
- path: "addTesterWorkerEvaluate",
- name: 'AddTesterWorkerEvaluate',
- meta: {
- title: "新增实验员工作评定",
- hide: true,
- keepAlive: true,
- },
- component: () => import("../views/deliveryAssessment/testerWorkerEvaluate/add"),
- },
- {
- // 工艺工程师
- path: "chemistEvaluate",
- meta: {
- title: "化验师工作评定",
- },
- component: () => import("../views/deliveryAssessment/chemistEvaluate"),
- },
- {
- // 工艺工程师
- path: "addchemistEvaluate",
- name: 'AddchemistEvaluate',
- meta: {
- title: "新增化验师工作评定",
- hide: true,
- keepAlive: true,
- },
- component: () => import("../views/deliveryAssessment/chemistEvaluate/add"),
},
]
}
diff --git a/culture/src/views/deliveryAssessment/assayTaskList/components/AssessmentDialog.vue b/culture/src/views/deliveryAssessment/assayTaskList/components/AssessmentDialog.vue
deleted file mode 100644
index 3a79f52..0000000
--- a/culture/src/views/deliveryAssessment/assayTaskList/components/AssessmentDialog.vue
+++ /dev/null
@@ -1,208 +0,0 @@
-<template>
- <el-dialog :visible.sync="dialogVisible" title="课题评定详情" width="70%" @close="handleClose">
- <el-form :model="form" inline label-position="top" :rules="rules" ref="formRef">
- <el-row :gutter="20">
- <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
- <el-form-item label="报告编号" prop="reportNo" required>
- <el-input v-model="form.reportNo" disabled placeholder="自动生成" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
- <el-form-item label="报告名称" prop="reportName">
- <el-input v-model="form.reportName" placeholder="请输入" />
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <div class="content-box">
- <el-row :gutter="16">
- <el-col style="margin-top: 5px;" :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
- <Table :total="0" :height="null" :data="criteriaList" show-summary :summary-method="getSummaries"
- :span-method="arraySpanMethod">
- <el-table-column type="index" label="序号" width="80" />
- <el-table-column prop="criteria" label="规程型课题评定标准" />
- <el-table-column prop="fullScore" label="满分值" width="100" />
- <el-table-column label="评定分值" prop="score" width="200">
- <template #default="{ row }">
- <el-input-number v-model="row.score" :min="0" :max="row.fullScore" :step="1" />
- </template>
- </el-table-column>
- <el-table-column prop="rule" label="创新型课题报告评分规则">
- <template>
- <div>
- <div>1、规程型课题评定总分的满分为5分。</div>
- <div>2、某分项工作完成,但出现以下三种错误中的1种,则减1分:</div>
- <div>①有缺项、漏项;</div>
- <div>②或不完整清晰;</div>
- <div>③或工作效率人为拖延。</div>
- <div>3、不能完成某分项的全部工作,或课题不涉及该分项内容,则该分项评0分。</div>
- </div>
- </template>
- </el-table-column>
- </Table>
- </el-col>
- </el-row>
- </div>
- <div class="assessed">
- <div>评定时间:2025-2-20 11:08:00</div>
- <div>评定人:张三</div>
- </div>
- </el-dialog>
-</template>
-
-<script>
-export default {
- name: 'AssessmentDialog',
- props: {
- modelValue: {
- type: Boolean,
- default: false
- },
- reportData: {
- type: Object,
- default: () => { }
- }
- },
- data() {
- return {
- dialogVisible: false,
- form: {
- reportNo: '',
- reportName: '',
- },
- rules: {
- reportName: [
- { required: true, message: '请输入报告名称', trigger: 'blur' }
- ],
- },
- criteriaList: [
- {
- criteria: '文献资料调查:全面性,系统性 编辑逻辑清晰,表达规范',
- fullScore: 1,
- score: 0,
- },
- {
- criteria: '专业/技术路线与方法:合理性、可行性;实验设计科学、能实现研究目标,方法先进、完整、可靠;',
- fullScore: 2,
- score: 0,
- },
- {
- criteria: '课题报告完成度高,预期研究结果果是否具有技术价值和应用价值。风险识别:识别了潜在的技术风险、市场风险和管理风险。',
- fullScore: 3,
- score: 0,
- },
- ]
- }
- },
- watch: {
- modelValue: {
- handler(val) {
- this.dialogVisible = val;
- },
- immediate: true
- },
- reportData: {
- handler(val) {
- if (val) {
- this.form.reportNo = val.reportNo || '';
- this.form.reportName = val.reportName || '';
- }
- },
- immediate: true
- }
- },
- methods: {
- handleClose() {
- this.$emit('update:modelValue', false);
- },
- async handleSubmit() {
- try {
- await this.$refs.formRef.validate();
- const totalScore = this.criteriaList.reduce((sum, item) => sum + (item.score || 0), 0);
- const assessmentData = {
- ...this.form,
- totalScore,
- criteriaScores: this.criteriaList.map(item => ({
- criteria: item.criteria,
- score: item.score || 0
- }))
- };
- this.$emit('submit', assessmentData);
- this.handleClose();
- } catch (error) {
- // 表单验证失败
- }
- },
- getSummaries(param) {
- const { columns, data } = param;
- const sums = [];
- columns.forEach((column, index) => {
- if (index === 0) {
- sums[index] = '合计';
- return;
- }
- const values = data.map(item => Number(item[column.property]));
- if (!values.every(value => isNaN(value))) {
- sums[index] = values.reduce((prev, curr) => {
- const value = Number(curr);
- if (!isNaN(value)) {
- return prev + curr;
- } else {
- return prev;
- }
- }, 0);
- sums[index] += ' 分';
- } else {
- sums[index] = '';
- }
- });
- return sums;
- },
- arraySpanMethod({ row, column, rowIndex, columnIndex }) {
- if (columnIndex === 4 && rowIndex == 0) {
- return {
- rowspan: 6,
- colspan: 1
- }
- } else if (rowIndex !== 0 && columnIndex === 4) {
- return [0, 0]
- }
- }
- }
-}
-</script>
-
-<style lang="less" scoped>
-.content-box {
-
- &-left {
- margin-top: 5px;
- display: flex;
- flex-direction: column;
- border: 1px solid #EBEEF5;
- border-radius: 8px 8px 0px 0px;
- font-size: 12px;
-
- &-th {
- line-height: 40px;
- background: #FAFAFA !important;
- color: #909399;
- padding: 0 10px;
- font-weight: bold;
- }
-
- &-body {
- padding: 0 10px;
- line-height: 23px;
- }
- }
-}
-
-.assessed {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
- gap: 25px;
- margin-top: 20px;
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/assayTaskList/components/CraftDialog.vue b/culture/src/views/deliveryAssessment/assayTaskList/components/CraftDialog.vue
deleted file mode 100644
index 478a8fb..0000000
--- a/culture/src/views/deliveryAssessment/assayTaskList/components/CraftDialog.vue
+++ /dev/null
@@ -1,231 +0,0 @@
-<template>
- <el-dialog :visible.sync="dialogVisible" title="课题评定详情" width="70%" @close="handleClose">
- <el-form :model="form" inline label-position="top" :rules="rules" ref="formRef">
- <el-row :gutter="20">
- <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
- <el-form-item label="报告编号" prop="reportNo" required>
- <el-input v-model="form.reportNo" disabled placeholder="自动生成" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
- <el-form-item label="报告名称" prop="reportName">
- <el-input v-model="form.reportName" placeholder="请输入" />
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <div class="content-box">
- <el-row :gutter="16">
- <el-col style="margin-top: 5px;" :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
- <Table :total="0" :height="null" :data="criteriaList" show-summary :summary-method="getSummaries"
- :span-method="arraySpanMethod">
- <el-table-column type="index" label="序号" width="80" />
- <el-table-column prop="criteria" label="创新型课题标准" />
- <el-table-column prop="fullScore" label="满分值" width="100" />
- <el-table-column label="评定分值" prop="score" width="200">
- <template #default="{ row }">
- <el-input-number v-model="row.score" :min="0" :max="row.fullScore" :step="1" />
- </template>
- </el-table-column>
- <el-table-column prop="rule" label="创新型课题报告评分规则">
- <template>
- <div>
- <div>1、各分项评满分,应满足以下四项要求:</div>
- <div>①分项内容:清晰、系统、完整,结构逻辑清晰,无缺项;</div>
- <div>②团队工作运行顺畅、计划时间高效。</div>
- <div>③工作结果完成度高。</div>
- <div>④课题文档报告完成度高。</div>
- <div>2、某分项工作完成,但出现以下三种错误中的1种,则减1分:</div>
- <div>①有缺项、漏项;</div>
- <div>②或不完整清晰;</div>
- <div>③或工作效率人为拖延。</div>
- <div>3、某分项工作基本完成,但出现三种错误中的2-3种,则减2分:</div>
- <div> ①有缺项、漏项;</div>
- <div>②或不完整清晰;</div>
- <div>③或工作效率人为拖延。</div>
- <div>4、不能完成某分项的全部工作,或课题不涉及该分项内容,则该分项评0分。</div>
- </div>
- </template>
- </el-table-column>
- </Table>
- </el-col>
- </el-row>
- </div>
- <div class="assessed">
- <div>评定时间:2025-2-20 11:08:00</div>
- <div>评定人:张三</div>
- </div>
- </el-dialog>
-</template>
-
-<script>
-export default {
- name: 'CraftDialog',
- props: {
- modelValue: {
- type: Boolean,
- default: false
- },
- reportData: {
- type: Object,
- default: () => { }
- }
- },
- data() {
- return {
- dialogVisible: false,
- form: {
- reportNo: '',
- reportName: '',
- },
- rules: {
- reportName: [
- { required: true, message: '请输入报告名称', trigger: 'blur' }
- ],
- },
- criteriaList: [
- {
- criteria: '课题名称依准确性、报告内容完整性:研究目标是否完整、是否研究工作内容合理性、是否围绕目标展开开、是否具有逻辑性和条理性',
- fullScore: 3,
- score: 0,
- },
- {
- criteria: '文献资料调查:全面性、系统性编辑逻辑顺畅,表达规范',
- fullScore: 2,
- score: 0,
- },
- {
- criteria: '专业/技术路线与方法:合理性、可行性;实验设计科学、能完成研究目标、方法完整、完整、可靠;',
- fullScore: 3,
- score: 0,
- },
- {
- criteria: '实验验证工作可行性强,团队工作调度支持实验设备、材料等条件的准备良好,时间计划合理,能效按时完成',
- fullScore: 2,
- score: 0,
- },
- {
- criteria: '实验设计合理性:①对照设置,重复次数,样本量足够。②变量控制:自变量控制,因变量测量,干扰因素分析识别;确保结果的准确性③验证结果解释分析:符合科学原理、逻辑严密、不存在漏洞。具有实际应用价值,解决了实际问题或实现了研究目的。',
- fullScore: 3,
- score: 0,
- },
- {
- criteria: '课题报告完成度高,预期研究结果果是否具有技术价值和应用价值。风险识别:识别了潜在的技术风险、市场风险和管理风险。',
- fullScore: 2,
- score: 0,
- }
- ]
- }
- },
- watch: {
- modelValue: {
- handler(val) {
- this.dialogVisible = val;
- },
- immediate: true
- },
- reportData: {
- handler(val) {
- if (val) {
- this.form.reportNo = val.reportNo || '';
- this.form.reportName = val.reportName || '';
- }
- },
- immediate: true
- }
- },
- methods: {
- handleClose() {
- this.$emit('update:modelValue', false);
- },
- async handleSubmit() {
- try {
- await this.$refs.formRef.validate();
- const totalScore = this.criteriaList.reduce((sum, item) => sum + (item.score || 0), 0);
- const assessmentData = {
- ...this.form,
- totalScore,
- criteriaScores: this.criteriaList.map(item => ({
- criteria: item.criteria,
- score: item.score || 0
- }))
- };
- this.$emit('submit', assessmentData);
- this.handleClose();
- } catch (error) {
- // 表单验证失败
- }
- },
- getSummaries(param) {
- const { columns, data } = param;
- const sums = [];
- columns.forEach((column, index) => {
- if (index === 0) {
- sums[index] = '合计';
- return;
- }
- const values = data.map(item => Number(item[column.property]));
- if (!values.every(value => isNaN(value))) {
- sums[index] = values.reduce((prev, curr) => {
- const value = Number(curr);
- if (!isNaN(value)) {
- return prev + curr;
- } else {
- return prev;
- }
- }, 0);
- sums[index] += ' 分';
- } else {
- sums[index] = '';
- }
- });
- return sums;
- },
- arraySpanMethod({ row, column, rowIndex, columnIndex }) {
- if (columnIndex === 4 && rowIndex == 0) {
- return {
- rowspan: 6,
- colspan: 1
- }
- } else if (rowIndex !== 0 && columnIndex === 4) {
- return [0, 0]
- }
- }
- }
-}
-</script>
-
-<style lang="less" scoped>
-.content-box {
-
- &-left {
- margin-top: 5px;
- display: flex;
- flex-direction: column;
- border: 1px solid #EBEEF5;
- border-radius: 8px 8px 0px 0px;
- font-size: 12px;
-
- &-th {
- line-height: 40px;
- background: #FAFAFA !important;
- color: #909399;
- padding: 0 10px;
- font-weight: bold;
- }
-
- &-body {
- padding: 0 10px;
- line-height: 23px;
- }
- }
-}
-
-.assessed {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
- gap: 25px;
- margin-top: 20px;
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/assayTaskList/index.vue b/culture/src/views/deliveryAssessment/assayTaskList/index.vue
deleted file mode 100644
index efe9000..0000000
--- a/culture/src/views/deliveryAssessment/assayTaskList/index.vue
+++ /dev/null
@@ -1,154 +0,0 @@
-<template>
- <div class="list">
- <TableCustom :queryForm="queryForm" :tableData="tableData" :total="total" @currentChange="handleCurrentChange"
- @sizeChange="handleSizeChange">
- <template #search>
- <el-form :model="form" label-width="140px" inline>
- <el-form-item label="项目组名称:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="课题类型:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="课题名称:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="提交人:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="状态:">
- <el-select v-model="form.name" placeholder="请选择" />
- </el-form-item>
- <el-form-item class="search-btn-box">
- <el-button>重置</el-button>
- <el-button type="primary">查询</el-button>
- </el-form-item>
- </el-form>
- </template>
- <template #setting>
- <div class="top-box-integral">
- <div style="background-color:rgba(232, 250, 246, 1)" v-for="item in 3" :key="item"
- class="top-box-integral-card">
- <div class="top-box-integral-card-title">{{ ['课题合计数量', '待评定', '已评定'][item - 1] }}</div>
- <div style="color:rgba(4, 156, 154, 1)" class="top-box-integral-card-num">99.9</div>
- </div>
- </div>
- </template>
- <template #table>
- <el-table-column prop="name" label="所属项目组" />
- <el-table-column prop="age" label="课题类型" />
- <el-table-column prop="age" label="报告编号" />
- <el-table-column prop="age" label="报告名称" />
- <el-table-column prop="age" label="提交人" />
- <el-table-column prop="age" label="评定结果" />
- <el-table-column prop="age" label="累积分值" />
- <el-table-column prop="age" label="评定时间" />
- <el-table-column prop="age" label="状态">
- <template #default="{ row }">
- <el-tag v-if="row.status == 1" type="info" color="#fff">已评定</el-tag>
- <el-tag v-else type="success">待评定</el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="age" label="操作">
- <template #default="{ row }">
- <el-button type="text">详情</el-button>
- </template>
- </el-table-column>
- </template>
- </TableCustom>
-
- <!-- 化验师 审批人 -->
- <AssessmentDialog :modelValue="assessmentVisible" :reportData="currentReport" />
-
- <!-- 工艺工程师 -->
- <CraftDialog :modelValue="craftVisible" :reportData="currentReport" />
- </div>
-</template>
-
-<script>
-import AssessmentDialog from './components/AssessmentDialog.vue'
-import CraftDialog from './components/CraftDialog.vue'
-
-export default {
- name: 'AssayTaskList',
- components: {
- AssessmentDialog,
- CraftDialog
- },
- data() {
- return {
- form: {
- },
- tableData: [],
- queryForm: {
- pageSize: 10,
- pageNum: 1
- },
- total: 0,
- assessmentVisible: false,
- currentReport: {},
- craftVisible: false,
- }
- },
- methods: {
- handleCurrentChange(page) {
- this.queryForm.pageNum = page
- this.getList()
- },
- handleSizeChange(size) {
- this.queryForm.pageSize = size
- this.getList()
- },
- getList() {
-
- },
- handleDetail(row) {
- // 处理详情
- },
- handleAssessment(row) {
- this.currentReport = row;
- this.assessmentVisible = true;
- },
- handleAssessmentSubmit(data) {
- console.log('评定提交数据:', data);
- // 处理评定提交
- }
- }
-}
-</script>
-
-<style scoped lang="less">
-.list {
- height: 100%;
-}
-
-.top-box-integral {
- display: flex;
- justify-content: space-between;
- flex-wrap: wrap;
- gap: 28px;
-
- &-card {
- flex: 1;
- background: #E8FAF6;
- box-shadow: 0px 10px 10px 0px rgba(0, 0, 0, 0.06);
- border-radius: 10px;
- padding: 21px 20px;
-
- &-title {
- font-family: 'SourceHanSansCN-Medium';
- font-size: 14px;
- color: rgba(0, 0, 0, 0.8);
- }
-
- &-num {
- font-family: 'SF Compact Display Black';
- text-align: center;
- font-weight: 900;
- font-size: 50px;
- color: #049C9A;
- line-height: 60px;
- }
- }
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/chemistEvaluate/add.vue b/culture/src/views/deliveryAssessment/chemistEvaluate/add.vue
deleted file mode 100644
index 7aaf1fa..0000000
--- a/culture/src/views/deliveryAssessment/chemistEvaluate/add.vue
+++ /dev/null
@@ -1,200 +0,0 @@
-<template>
- <Card>
- <template>
- <div class="header-title" style="margin-bottom: 18px;">
- <div class="header-title-left">
- <img src="@/assets/public/headercard.png" />
- <div>所属实验调度</div>
- </div>
- <el-button class="el-icon-plus" type="primary" @click="showScheduling = true"> 选择实验调度</el-button>
- </div>
- <Table :tableData="tableData" :total="total" :height="null">
- <template>
- <el-table-column prop="planCode" label="所属项目课题方案"></el-table-column>
- <el-table-column prop="planName" label="实验编号"></el-table-column>
- <el-table-column prop="planName" label="实验名称"></el-table-column>
- <el-table-column prop="stage" label="通知时间"></el-table-column>
- <el-table-column prop="stage" label="实验开始时间"></el-table-column>
- <el-table-column prop="stage" label="实验结束时间"></el-table-column>
- <el-table-column prop="stage" label="参加人员"></el-table-column>
- <el-table-column prop="creator" label="状态"></el-table-column>
- </template>
- </Table>
- <div class="header-title" style="margin-top: 60px;">
- <div class="header-title-left">
- <img src="@/assets/public/headercard.png" />
- <div>被评定化验师</div>
- </div>
- <el-button class="el-icon-plus" type="primary" @click="addMember"> 选择化验师</el-button>
- </div>
- <div class="member-list">
- <div class="member-list-card">
- <div class="member-item">
- <div class="member-title">化验师</div>
- <div class="member-name-box-2">
- <div v-for="i in [1, 2, 3, 4, 5, 6, 7, 8]" :key="i" class="member-name">张三</div>
- </div>
- <div class="member-edit" @click="addMember">修改</div>
- </div>
- </div>
- </div>
- <div class="header-title" style="margin-bottom: 18px;margin-top: 60px;">
- <div class="header-title-left">
- <img src="@/assets/public/headercard.png" />
- <div>工作标准评定</div>
- </div>
- </div>
- <EvaluateTable :type="1" />
- <div class="add-project-footer">
- <el-button type="primary">保存</el-button>
- <el-button>存草稿</el-button>
- </div>
- </template>
- <SelectMember ref="selectMember" />
- <ExperimentalScheduling :show="showScheduling" />
- </Card>
-</template>
-
-<script>
-import ExperimentalScheduling from "@/views/dataManagement/confirmation-sheet/components/experimental-scheduling";
-export default {
- name: 'AddchemistEvaluate',
- components: {
- ExperimentalScheduling,
- },
- data() {
- return {
- showScheduling: false,
- }
- },
- methods: {
- submitForm() {
- },
- addMember() {
- this.$refs.selectMember.open()
- },
- }
-}
-</script>
-
-<style scoped lang="less">
-.el-form--inline .el-form-item {
- margin-right: 83px;
-}
-
-.header-title {
- display: flex;
- align-items: center;
- flex-wrap: wrap;
- gap: 13px;
-
- .header-title-left {
- display: flex;
- align-items: center;
- gap: 13px;
-
- img {
- width: 12px;
- height: 19px;
- }
-
- div {
- flex-shrink: 0;
- font-weight: bold;
- font-size: 18px;
- color: #222222;
- line-height: 27px;
- font-family: 'Source Han Sans CN Bold Bold';
-
- &:before {
- content: '*';
- color: #F56C6C;
- margin-right: 4px;
- }
- }
- }
-}
-
-.member-list {
- margin-top: 18px;
- display: flex;
- flex-wrap: wrap;
- gap: 28px;
-
- .member-list-card {
- position: relative;
- width: 340px;
- height: 400px;
- border-radius: 8px;
- border: 1px solid #DCDFE6;
- background: linear-gradient(to bottom, rgba(255, 77, 79, 0.20) 0%, rgba(255, 242, 194, 0) 70%);
-
- .member-item {
- height: 100%;
- display: flex;
- flex-direction: column;
-
- .member-title {
- margin-top: 20px;
- width: 100%;
- font-family: 'Source Han Sans CN Bold Bold';
- font-weight: bold;
- font-size: 16px;
- color: rgba(0, 0, 0, 0.8);
- line-height: 16px;
- text-align: center;
- }
-
- .member-name-box-2 {
- padding: 0 20px;
- padding-top: 40px;
- display: grid;
- grid-template-columns: repeat(4, 1fr);
- align-items: flex-start;
- flex-wrap: wrap;
- gap: 20px;
- justify-content: center;
- }
-
- .member-name {
- width: 60px;
- height: 60px;
- background: #7D8B79;
- border-radius: 50%;
- text-align: center;
- line-height: 60px;
- font-weight: 500;
- font-size: 16px;
- color: #FFFFFF;
- }
-
- .member-edit {
- cursor: pointer;
- position: absolute;
- bottom: 10px;
- left: 50%;
- transform: translateX(-50%);
- font-weight: 400;
- font-size: 12px;
- color: #FF4D4F;
- line-height: 22px;
- width: 40px;
- background: #FFF1F0;
- border-radius: 4px;
- border: 1px solid #FFCCC7;
- text-align: center;
- }
- }
- }
-}
-
-.add-project-footer {
- display: flex;
- gap: 20px;
- margin-top: 43px;
-
- button {
- width: 220px;
- }
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/chemistEvaluate/index.vue b/culture/src/views/deliveryAssessment/chemistEvaluate/index.vue
deleted file mode 100644
index 7adc094..0000000
--- a/culture/src/views/deliveryAssessment/chemistEvaluate/index.vue
+++ /dev/null
@@ -1,217 +0,0 @@
-<template>
- <div class="list">
- <TableCustom :queryForm="queryForm" :tableData="tableData" :total="total" @currentChange="handleCurrentChange"
- @sizeChange="handleSizeChange">
- <template #search>
- <el-form :model="form" label-width="140px" inline>
- <el-form-item label="所属项目课题方案:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="实验编号:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="实验名称:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="评定时间:">
- <el-date-picker v-model="value1" type="daterange" range-separator="至" start-placeholder="开始日期"
- end-placeholder="结束日期">
- </el-date-picker>
- </el-form-item>
- <el-form-item class="search-btn-box">
- <el-button>重置</el-button>
- <el-button type="primary">查询</el-button>
- </el-form-item>
- </el-form>
- </template>
- <template #setting>
- <div class="tableTitle">
- <div class="flex a-center">
- <div class="title" :class="{ active: currentType === 'list' }"
- @click="handleTypeChange('list')">
- 化验师工作评定列表</div>
- <div class="drafts" :class="{ active: currentType === 'draft' }"
- @click="handleTypeChange('draft')">草稿箱</div>
- </div>
- <el-button @click="handleAdd" class="el-icon-plus" type="primary">
- 新增化验师工作评定</el-button>
- </div>
- </template>
- <template #table>
- <el-table-column prop="name" label="所属项目组" />
- <el-table-column prop="age" label="检测项名称" />
- <el-table-column prop="age" label="检测项编号" />
- <el-table-column prop="age" label="备注" />
- <el-table-column prop="age" label="创建人" />
- <el-table-column prop="age" label="创建时间" />
- <el-table-column prop="age" label="状态">
- <template #default="{ row }">
- <el-tag v-if="row.status == 1" type="info" color="#fff">已评定</el-tag>
- <el-tag v-else type="success">待评定</el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="age" label="操作">
- <template #default="{ row }">
- <el-button type="text" @click="assessmentVisible = true">详情</el-button>
- </template>
- </el-table-column>
- </template>
- </TableCustom>
- </div>
-</template>
-
-<script>
-
-export default {
- name: 'TesterWorkerEvaluate',
- data() {
- return {
- currentType: 'list', // 当前显示类型:list-列表,draft-草稿箱
- form: {
- },
- tableData: [],
- queryForm: {
- pageSize: 10,
- pageNum: 1
- },
- total: 0,
- }
- },
- methods: {
- handleAdd() {
- this.$router.push({
- path: '/deliveryAssessment/addTesterWorkerEvaluate'
- })
- },
- handleCurrentChange(page) {
- this.queryForm.pageNum = page
- this.getList()
- },
- handleSizeChange(size) {
- this.queryForm.pageSize = size
- this.getList()
- },
- getList() {
-
- },
- handleTypeChange(type) {
- this.currentType = type;
- this.getList();
- },
- }
-}
-</script>
-
-<style scoped lang="less">
-.list {
- height: 100%;
-}
-
-.top-box-integral {
- display: flex;
- justify-content: space-between;
- flex-wrap: wrap;
- gap: 28px;
-
- &-card {
- flex: 1;
- background: #E8FAF6;
- box-shadow: 0px 10px 10px 0px rgba(0, 0, 0, 0.06);
- border-radius: 10px;
- padding: 21px 20px;
-
- &-title {
- font-family: 'SourceHanSansCN-Medium';
- font-size: 14px;
- color: rgba(0, 0, 0, 0.8);
- }
-
- &-num {
- font-family: 'SF Compact Display Black';
- text-align: center;
- font-weight: 900;
- font-size: 50px;
- color: #049C9A;
- line-height: 60px;
- }
- }
-}
-
-.tip-warring {
- margin-top: 20px;
- color: rgba(255, 73, 85, 1);
-}
-
-.table-title {
- width: 220px;
- height: 50px;
- background: #FFFFFF;
- border-radius: 8px 8px 0px 0px;
- border: 1px solid #049C9A;
- display: flex;
- align-items: center;
- justify-content: center;
- font-family: SourceHanSansCN, SourceHanSansCN;
- font-weight: bold;
- font-size: 18px;
- color: #049C9A;
- line-height: 27px;
-}
-
-.expand-box {
- padding: 20px;
- background: linear-gradient(180deg, #049C9A 0%, #0ACBCA 100%);
- border-radius: 20px;
-
- &-title {
- font-weight: 500;
- font-size: 16px;
- color: #FFFFFF;
- line-height: 24px;
- margin-bottom: 20px;
- }
-}
-
-.flex {
- display: flex;
- align-items: center;
-}
-
-.tableTitle {
- display: flex;
- padding-bottom: 20px;
- justify-content: space-between;
- align-items: center;
-
- .title {
- background: #fafafc;
- border-radius: 8px 8px 0px 0px;
- border: 1px solid #dcdfe6;
- padding: 16px 29px;
- font-weight: bold;
- font-size: 18px;
- color: #606266;
- width: unset;
- cursor: pointer;
- }
-
- .drafts {
- padding: 16px 65px;
- background: #fafafc;
- border-radius: 8px 8px 0px 0px;
- border: 1px solid #dcdfe6;
- font-weight: 400;
- font-size: 18px;
- color: #606266;
- margin-left: 16px;
- cursor: pointer;
- }
-
- .active {
- color: #049c9a;
- background: #ffffff;
- border-radius: 8px 8px 0px 0px;
- border: 1px solid #049c9a;
- }
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/clinicalTrial/components/detail.vue b/culture/src/views/deliveryAssessment/clinicalTrial/components/detail.vue
deleted file mode 100644
index a0f65eb..0000000
--- a/culture/src/views/deliveryAssessment/clinicalTrial/components/detail.vue
+++ /dev/null
@@ -1,115 +0,0 @@
-<template>
- <el-dialog :visible.sync="dialogVisible" title="新增临床试验" width="50%" @close="handleClose">
- <div class="content-box">
- <div class="header-title-left">
- <img src="@/assets/public/headercard.png" />
- <div>所属项目组</div>
- </div>
- <Table :data="criteriaList" :height="null">
- <el-table-column prop="name" label="项目组名称" />
- <el-table-column prop="name" label="项目负责人" />
- <el-table-column prop="name" label="项目组成员" />
- <el-table-column prop="name" label="创建时间" />
- </Table>
- <div class="header-title-left">
- <img src="@/assets/public/headercard.png" />
- <div>临床试验内容</div>
- </div>
- <el-input type="textarea" :rows="4" placeholder="请输入" v-model="form.textarea" />
- <div class="header-title-left">
- <img src="@/assets/public/headercard.png" />
- <div>临床试验时间</div>
- </div>
- <el-date-picker v-model="form.value1" type="datetime" placeholder="请选择" />
- <div class="header-title-left">
- <img src="@/assets/public/headercard.png" />
- <div>评定积分</div>
- </div>
- <el-input-number placeholder="请输入" v-model="form.score" :min="0" :max="form.fullScore" :precision="1"
- :step="1" />
- </div>
- <template #footer>
- <span class="dialog-footer select-member-footer">
- <el-button type="primary">确认</el-button>
- </span>
- </template>
- </el-dialog>
-</template>
-
-<script>
-export default {
- name: 'Detail',
- props: {
- modelValue: {
- type: Boolean,
- default: false
- },
- reportData: {
- type: Object,
- default: () => { }
- }
- },
- data() {
- return {
- dialogVisible: false,
- form: {
- textarea: '',
- value1: '',
- score: null,
- fullScore: 3
- },
- rules: {
- reportName: [
- { required: true, message: '请输入报告名称', trigger: 'blur' }
- ],
- },
- criteriaList: []
- }
- },
- watch: {
- modelValue: {
- handler(val) {
- this.dialogVisible = val;
- },
- immediate: true
- },
- reportData: {
- handler(val) {
- if (val) {
- this.form = val || {};
- }
- },
- immediate: true
- }
- },
- methods: {
- handleClose() {
- },
- }
-}
-</script>
-
-<style lang="less" scoped>
-.header-title-left {
- display: flex;
- align-items: center;
- gap: 13px;
- margin: 10px 0;
-
- img {
- width: 12px;
- height: 19px;
- }
-
- div {
- flex-shrink: 0;
- font-weight: bold;
- font-size: 18px;
- color: #222222;
- line-height: 27px;
- font-family: 'Source Han Sans CN Bold Bold';
- }
-
-
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/clinicalTrial/index.vue b/culture/src/views/deliveryAssessment/clinicalTrial/index.vue
deleted file mode 100644
index ffef8cd..0000000
--- a/culture/src/views/deliveryAssessment/clinicalTrial/index.vue
+++ /dev/null
@@ -1,127 +0,0 @@
-<template>
- <div class="list">
- <TableCustom :queryForm="queryForm" :tableData="tableData" :total="total" @currentChange="handleCurrentChange"
- @sizeChange="handleSizeChange">
- <template #search>
- <el-form :model="form" label-width="140px" inline>
- <el-form-item label="项目组名称:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="任务内容:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item class="search-btn-box">
- <el-button>重置</el-button>
- <el-button type="primary">查询</el-button>
- </el-form-item>
- </el-form>
- </template>
- <template #setting>
- <el-button @click="assessmentVisible = true, currentReport = {}" class="el-icon-plus" type="primary">
- 新增临床试验</el-button>
- </template>
- <template #table>
- <el-table-column prop="name" label="所属项目组" />
- <el-table-column prop="age" label="临床试验内容" />
- <el-table-column prop="age" label=" 临床试验时间" />
- <el-table-column prop="age" label="添加人" />
- <el-table-column prop="age" label="评定积分" />
- <el-table-column prop="age" label="累计分数" />
- <el-table-column prop="age" label="评定时间" />
- <el-table-column prop="age" label="操作">
- <template #default="{ row }">
- <el-button type="text">详情</el-button>
- </template>
- </el-table-column>
- </template>
- </TableCustom>
-
- <Detail :modelValue="assessmentVisible" :reportData="currentReport" />
- </div>
-</template>
-
-<script>
-import Detail from './components/detail.vue'
-
-export default {
- name: 'ClinicalTrial',
- components: {
- Detail
- },
- data() {
- return {
- form: {
- },
- tableData: [],
- queryForm: {
- pageSize: 10,
- pageNum: 1
- },
- total: 0,
- assessmentVisible: false,
- currentReport: {}
- }
- },
- methods: {
- handleCurrentChange(page) {
- this.queryForm.pageNum = page
- this.getList()
- },
- handleSizeChange(size) {
- this.queryForm.pageSize = size
- this.getList()
- },
- getList() {
-
- },
- handleDetail(row) {
- // 处理详情
- },
- handleAssessment(row) {
- this.currentReport = row;
- this.assessmentVisible = true;
- },
- }
-}
-</script>
-
-<style scoped lang="less">
-.list {
- height: 100%;
-}
-
-.top-box-integral {
- display: flex;
- justify-content: space-between;
- flex-wrap: wrap;
- gap: 28px;
-
- &-card {
- flex: 1;
- background: #E8FAF6;
- box-shadow: 0px 10px 10px 0px rgba(0, 0, 0, 0.06);
- border-radius: 10px;
- padding: 21px 20px;
-
- &-title {
- font-family: 'SourceHanSansCN-Medium';
- font-size: 14px;
- color: rgba(0, 0, 0, 0.8);
- }
-
- &-num {
- font-family: 'SF Compact Display Black';
- text-align: center;
- font-weight: 900;
- font-size: 50px;
- color: #049C9A;
- line-height: 60px;
- }
- }
-}
-
-.tip-warring {
- margin-top: 20px;
- color: rgba(255, 73, 85, 1);
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/experimentResults/components/detail.vue b/culture/src/views/deliveryAssessment/experimentResults/components/detail.vue
deleted file mode 100644
index d72af5b..0000000
--- a/culture/src/views/deliveryAssessment/experimentResults/components/detail.vue
+++ /dev/null
@@ -1,54 +0,0 @@
-<template>
- <el-dialog :visible.sync="dialogVisible" title="化验师工作评定" width="79.17%" @close="handleClose">
- <EvaluateTable ref="evaluateTable" />
- <div class="assessed">
- <div>评定时间:2025-2-20 11:08:00</div>
- <div>评定人:张三</div>
- </div>
- </el-dialog>
-</template>
-
-<script>
-export default {
- name: 'Detail',
- props: {
- modelValue: {
- type: Boolean,
- default: false
- },
- reportData: {
- type: Object,
- default: () => { }
- }
- },
- data() {
- return {
- dialogVisible: false,
- }
- },
- watch: {
- modelValue: {
- handler(val) {
- this.dialogVisible = val;
- },
- immediate: true
- },
- },
- methods: {
- handleClose() {
- console.log(this.$refs.evaluateTable.total);
- console.log(this.$refs.evaluateTable.activeIndex);
- },
- }
-}
-</script>
-
-<style lang="less" scoped>
-.assessed {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
- gap: 25px;
- margin-top: 20px;
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/experimentResults/index.vue b/culture/src/views/deliveryAssessment/experimentResults/index.vue
deleted file mode 100644
index 5bfb1c3..0000000
--- a/culture/src/views/deliveryAssessment/experimentResults/index.vue
+++ /dev/null
@@ -1,143 +0,0 @@
-<template>
- <div class="list">
- <TableCustom :queryForm="queryForm" :tableData="tableData" :total="total" @currentChange="handleCurrentChange"
- @sizeChange="handleSizeChange">
- <template #search>
- <el-form :model="form" label-width="140px" inline>
- <el-form-item label="项目课题方案名称:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="所属实验编号:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="实验名称:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="创建时间:">
- <el-date-picker v-model="value1" type="daterange" range-separator="至" start-placeholder="开始日期"
- end-placeholder="结束日期">
- </el-date-picker>
- </el-form-item>
- <el-form-item label="项目阶段:">
- <el-select v-model="form.status" placeholder="请选择">
- <el-option label="是" value="1"></el-option>
- <el-option label="否" value="0"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item class="search-btn-box">
- <el-button>重置</el-button>
- <el-button type="primary">查询</el-button>
- </el-form-item>
- </el-form>
- </template>
- <template #table>
- <el-table-column prop="name" label="所属项目课题方案" />
- <el-table-column prop="age" label="项目阶段" />
- <el-table-column prop="age" label="实验编号" />
- <el-table-column prop="age" label="实验名称" />
- <el-table-column prop="age" label="工艺工程师" />
- <el-table-column prop="age" label="实验员" />
- <el-table-column prop="age" label="是否评定">
- <template #default="{ row }">
- <span :style="{ color: ['green', 'red'][row.status - 1] }">{{ ['是', '否'][row.status - 1]
- }}</span>
- </template>
- </el-table-column>
- <el-table-column prop="age" label="创建日期" />
- <el-table-column prop="age" label="操作">
- <template #default="{ row }">
- <el-button type="text">评定详情</el-button>
- </template>
- </el-table-column>
- </template>
- </TableCustom>
-
- <Detail :modelValue="assessmentVisible" :reportData="currentReport" />
- </div>
-</template>
-
-<script>
-import Detail from './components/detail.vue'
-
-export default {
- name: 'ExperimentResults',
- components: {
- Detail
- },
- data() {
- return {
- form: {
- },
- tableData: [],
- queryForm: {
- pageSize: 10,
- pageNum: 1
- },
- total: 0,
- assessmentVisible: false,
- currentReport: {}
- }
- },
- methods: {
- handleCurrentChange(page) {
- this.queryForm.pageNum = page
- this.getList()
- },
- handleSizeChange(size) {
- this.queryForm.pageSize = size
- this.getList()
- },
- getList() {
-
- },
- handleDetail(row) {
- // 处理详情
- },
- handleAssessment(row) {
- this.currentReport = row;
- this.assessmentVisible = true;
- },
- }
-}
-</script>
-
-<style scoped lang="less">
-.list {
- height: 100%;
-}
-
-.top-box-integral {
- display: flex;
- justify-content: space-between;
- flex-wrap: wrap;
- gap: 28px;
-
- &-card {
- flex: 1;
- background: #E8FAF6;
- box-shadow: 0px 10px 10px 0px rgba(0, 0, 0, 0.06);
- border-radius: 10px;
- padding: 21px 20px;
-
- &-title {
- font-family: 'SourceHanSansCN-Medium';
- font-size: 14px;
- color: rgba(0, 0, 0, 0.8);
- }
-
- &-num {
- font-family: 'SF Compact Display Black';
- text-align: center;
- font-weight: 900;
- font-size: 50px;
- color: #049C9A;
- line-height: 60px;
- }
- }
-}
-
-.tip-warring {
- margin-top: 20px;
- color: rgba(255, 73, 85, 1);
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/processEngineerEvaluate/index.vue b/culture/src/views/deliveryAssessment/processEngineerEvaluate/index.vue
deleted file mode 100644
index 348229f..0000000
--- a/culture/src/views/deliveryAssessment/processEngineerEvaluate/index.vue
+++ /dev/null
@@ -1,157 +0,0 @@
-<template>
- <div class="list">
- <TableCustom :queryForm="queryForm" :tableData="tableData" :total="total" @currentChange="handleCurrentChange"
- @sizeChange="handleSizeChange">
- <template #search>
- <el-form :model="form" label-width="140px" inline>
- <el-form-item label="所属项目课题方案:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="实验编号:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="创建日期:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="状态:">
- <el-select v-model="form.name" placeholder="请选择" />
- </el-form-item>
- <el-form-item class="search-btn-box">
- <el-button>重置</el-button>
- <el-button type="primary">查询</el-button>
- </el-form-item>
- </el-form>
- </template>
- <template #setting>
- <div class="table-title">
- 实验结果汇报列表
- </div>
- </template>
- <template #table>
- <el-table-column prop="name" label="所属项目课题方案" />
- <el-table-column prop="age" label="实验编号" />
- <el-table-column prop="age" label="工艺工程师" />
- <el-table-column prop="age" label="化验师" />
- <el-table-column prop="age" label="实验员" />
- <el-table-column prop="age" label="创建日期" />
- <el-table-column prop="age" label="状态">
- <template #default="{ row }">
- <el-tag v-if="row.status == 1" type="info" color="#fff">已评定</el-tag>
- <el-tag v-else type="success">待评定</el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="age" label="操作">
- <template #default="{ row }">
- <el-button type="text" @click="assessmentVisible = true">详情</el-button>
- </template>
- </el-table-column>
- </template>
- </TableCustom>
- </div>
-</template>
-
-<script>
-
-export default {
- name: 'ProcessEngineerEvaluate',
- data() {
- return {
- form: {
- },
- tableData: [],
- queryForm: {
- pageSize: 10,
- pageNum: 1
- },
- total: 0,
- }
- },
- methods: {
- handleCurrentChange(page) {
- this.queryForm.pageNum = page
- this.getList()
- },
- handleSizeChange(size) {
- this.queryForm.pageSize = size
- this.getList()
- },
- getList() {
-
- },
- handleDetail(row) {
- // 处理详情
- },
- }
-}
-</script>
-
-<style scoped lang="less">
-.list {
- height: 100%;
-}
-
-.top-box-integral {
- display: flex;
- justify-content: space-between;
- flex-wrap: wrap;
- gap: 28px;
-
- &-card {
- flex: 1;
- background: #E8FAF6;
- box-shadow: 0px 10px 10px 0px rgba(0, 0, 0, 0.06);
- border-radius: 10px;
- padding: 21px 20px;
-
- &-title {
- font-family: 'SourceHanSansCN-Medium';
- font-size: 14px;
- color: rgba(0, 0, 0, 0.8);
- }
-
- &-num {
- font-family: 'SF Compact Display Black';
- text-align: center;
- font-weight: 900;
- font-size: 50px;
- color: #049C9A;
- line-height: 60px;
- }
- }
-}
-
-.tip-warring {
- margin-top: 20px;
- color: rgba(255, 73, 85, 1);
-}
-
-.table-title {
- width: 220px;
- height: 50px;
- background: #FFFFFF;
- border-radius: 8px 8px 0px 0px;
- border: 1px solid #049C9A;
- display: flex;
- align-items: center;
- justify-content: center;
- font-family: SourceHanSansCN, SourceHanSansCN;
- font-weight: bold;
- font-size: 18px;
- color: #049C9A;
- line-height: 27px;
-}
-
-.expand-box {
- padding: 20px;
- background: linear-gradient(180deg, #049C9A 0%, #0ACBCA 100%);
- border-radius: 20px;
-
- &-title {
- font-weight: 500;
- font-size: 16px;
- color: #FFFFFF;
- line-height: 24px;
- margin-bottom: 20px;
- }
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/projectTeamIntegral/detail.vue b/culture/src/views/deliveryAssessment/projectTeamIntegral/detail.vue
index 2f398f5..3c17bbb 100644
--- a/culture/src/views/deliveryAssessment/projectTeamIntegral/detail.vue
+++ b/culture/src/views/deliveryAssessment/projectTeamIntegral/detail.vue
@@ -9,11 +9,11 @@
</div>
</div>
<div class="top-box-integral">
- <div :style="{ backgroundColor: ['rgba(232, 250, 246, 1)', 'rgba(255, 243, 213, 1)', 'rgba(254, 237, 220, 1)', 'rgba(239, 248, 255, 1)', 'rgba(255, 237, 238, 1)'][item - 1] }"
- v-for="item in 5" :key="item" class="top-box-integral-card">
- <div class="top-box-integral-card-title">{{ ['项目组总积分', '工艺工程师积分', '化验师积分', '实验员积分', '实验终止次数'][item -
+ <div :style="{ backgroundColor: ['rgba(232, 250, 246, 1)', 'rgba(254, 237, 220, 1)', 'rgba(239, 248, 255, 1)', 'rgba(255, 237, 238, 1)'][item - 1] }"
+ v-for="item in 4" :key="item" class="top-box-integral-card">
+ <div class="top-box-integral-card-title">{{ ['项目组总积分', '化验师积分', '实验员积分', '实验终止次数'][item -
1] }}</div>
- <div :style="{ color: ['rgba(4, 156, 154, 1)', 'rgba(255, 197, 61, 1)', 'rgba(255, 147, 0, 1)', 'rgba(23, 119, 213, 1)', 'rgba(255, 73, 85, 1)'][item - 1] }"
+ <div :style="{ color: ['rgba(4, 156, 154, 1)', 'rgba(255, 147, 0, 1)', 'rgba(23, 119, 213, 1)', 'rgba(255, 73, 85, 1)'][item - 1] }"
class="top-box-integral-card-num">99.9</div>
</div>
</div>
@@ -22,9 +22,8 @@
<div class="integral-content-box">
<div class="integral-content-box-left">
<div @click="changeActiveItem(item)" class="integral-content-box-left-item"
- :class="actionsLeftTab == item && 'activeItem'" v-for="item in 3" :key="item">
- <div>{{ ['工艺工程师', '化验师', '实验员'][item - 1] }}</div>
- <div>工作内容评定</div>
+ :class="actionsLeftTab == item && 'activeItem'" v-for="item in 2" :key="item">
+ <div>{{ ['菌种工程师', '菌种实验员'][item - 1] }}</div>
</div>
</div>
<div class="integral-content-box-right">
@@ -36,7 +35,6 @@
<div>评定情况</div>
<div>开始时间</div>
<div>结束时间</div>
- <div>操作</div>
</div>
<div class="integral-content-box-right-body">
<div v-for="item in itemList" :key="item" class="integral-content-box-right-body-item">
@@ -47,9 +45,6 @@
</div>
<div></div>
<div></div>
- <div>
- <el-button type="text">修改</el-button>
- </div>
</div>
</div>
</div>
@@ -67,109 +62,28 @@
actionspPersonnel: null,
craftList: [
{
- gainer: '1、项目可研报告',
+ gainer: '1、创新型课题',
situationOne: '课题数:',
situationTwo: '积分数:',
},
{
- gainer: '2、项目可行报告',
+ gainer: '2、规程型课题',
situationOne: '课题数:',
situationTwo: '积分数:',
},
{
- gainer: '3、项目实验室开发阶段',
- situationOne: '实验数:',
+ gainer: '3、实验操作评定',
+ situationOne: '考核数:',
situationTwo: '积分数:',
},
- {
- gainer: '4、项目中试试验阶段',
- situationOne: '实验数:',
- situationTwo: '积分数:',
- },
- {
- gainer: '5、项目生产验证试验阶段',
- situationOne: '实验数:',
- situationTwo: '积分数:',
- },
- {
- gainer: '6、工艺开发工具',
- situationOne: '课题数:',
- situationTwo: '积分数:',
- },
- {
- gainer: '7、验证与开发',
- situationOne: '课题数:',
- situationTwo: '积分数:',
- },
- {
- gainer: '8、立项报告',
- situationOne: '课题数:',
- situationTwo: '积分数:',
- },
- {
- gainer: '9、临床实验积分',
- situationTwo: '积分数:',
- },
- ],//工艺工程师-工作内容评定
+ ],//菌种工程师
assayList: [
{
- gainer: '1、项目开发阶段',
- situationOne: '实验数:',
+ gainer: '1、实验操作评定',
+ situationOne: '考核数:',
situationTwo: '积分数:',
},
- {
- gainer: '2、项目中试试验阶段',
- situationOne: '实验数:',
- situationTwo: '积分数:',
- },
- {
- gainer: '3、项目生产验证试验阶段',
- situationOne: '实验数:',
- situationTwo: '积分数:',
- },
- {
- gainer: '4、项目检测项、检验包评定',
- situationOne: '课题数:',
- situationTwo: '积分数:',
- },
- {
- gainer: '5、中试、生产验证试验检验分析报告评定',
- situationOne: '课题数:',
- situationTwo: '积分数:',
- },
- {
- gainer: '6、原辅料、包材、竞品检验分析报告评定',
- situationOne: '课题数:',
- situationTwo: '积分数:',
- },
- {
- gainer: '7、产品报批及项目工作总结报告评定',
- situationOne: '课题数:',
- situationTwo: '积分数:',
- },
- ],//化验师-工作内容评定
- experimentList: [
- {
- gainer: '1、项目实验室开发阶段',
- situationOne: '实验数:',
- situationTwo: '积分数:',
- },
- {
- gainer: '2、项目中试试验阶段',
- situationOne: '实验数:',
- situationTwo: '积分数:',
- },
- {
- gainer: '3、项目生产验证试验阶段',
- situationOne: '实验数:',
- situationTwo: '积分数:',
- },
- {
- gainer: '4、其他任务',
- situationOne: '实验数:',
- situationTwo: '积分数:',
- },
- ],//实验员-工作内容评定
+ ],//菌种实验员
}
},
computed: {
@@ -179,8 +93,6 @@
return this.craftList
case 2:
return this.assayList
- case 3:
- return this.experimentList
default:
return this.craftList
}
diff --git a/culture/src/views/deliveryAssessment/restsTask/components/detail.vue b/culture/src/views/deliveryAssessment/restsTask/components/detail.vue
deleted file mode 100644
index 9c1c638..0000000
--- a/culture/src/views/deliveryAssessment/restsTask/components/detail.vue
+++ /dev/null
@@ -1,104 +0,0 @@
-<template>
- <el-dialog :visible.sync="dialogVisible" title="其他任务详情" width="70%" @close="handleClose">
- <div class="content-box">
- <div class="header-title-left">
- <img src="@/assets/public/headercard.png" />
- <div>所属项目组</div>
- </div>
- <Table :data="criteriaList" :height="null">
- <el-table-column prop="name" label="项目组名称" />
- <el-table-column prop="name" label="项目负责人" />
- <el-table-column prop="name" label="项目组成员" />
- <el-table-column prop="name" label="创建时间" />
- </Table>
- <div class="header-title-left">
- <img src="@/assets/public/headercard.png" />
- <div>任务内容</div>
- </div>
- <div>清理</div>
- <div class="header-title-left">
- <img src="@/assets/public/headercard.png" />
- <div>任务时间</div>
- </div>
- <div>2020-12-31 12:00:00</div>
- <div class="header-title-left">
- <img src="@/assets/public/headercard.png" />
- <div>评定积分</div>
- </div>
- <div>2</div>
- </div>
- </el-dialog>
-</template>
-
-<script>
-export default {
- name: 'Detail',
- props: {
- modelValue: {
- type: Boolean,
- default: false
- },
- reportData: {
- type: Object,
- default: () => { }
- }
- },
- data() {
- return {
- dialogVisible: false,
- form: {},
- rules: {
- reportName: [
- { required: true, message: '请输入报告名称', trigger: 'blur' }
- ],
- },
- criteriaList: []
- }
- },
- watch: {
- modelValue: {
- handler(val) {
- this.dialogVisible = val;
- },
- immediate: true
- },
- reportData: {
- handler(val) {
- if (val) {
- this.form = val || {};
- }
- },
- immediate: true
- }
- },
- methods: {
- handleClose() {
- },
- }
-}
-</script>
-
-<style lang="less" scoped>
-.header-title-left {
- display: flex;
- align-items: center;
- gap: 13px;
- margin: 10px 0;
-
- img {
- width: 12px;
- height: 19px;
- }
-
- div {
- flex-shrink: 0;
- font-weight: bold;
- font-size: 18px;
- color: #222222;
- line-height: 27px;
- font-family: 'Source Han Sans CN Bold Bold';
- }
-
-
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/restsTask/index.vue b/culture/src/views/deliveryAssessment/restsTask/index.vue
deleted file mode 100644
index 4d5cd5b..0000000
--- a/culture/src/views/deliveryAssessment/restsTask/index.vue
+++ /dev/null
@@ -1,128 +0,0 @@
-<template>
- <div class="list">
- <TableCustom :queryForm="queryForm" :tableData="tableData" :total="total" @currentChange="handleCurrentChange"
- @sizeChange="handleSizeChange">
- <template #search>
- <el-form :model="form" label-width="140px" inline>
- <el-form-item label="项目组名称:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="任务内容:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item class="search-btn-box">
- <el-button>重置</el-button>
- <el-button type="primary">查询</el-button>
- </el-form-item>
- </el-form>
- </template>
- <!-- 工艺工程师 -->
- <template #setting>
- <el-button @click="assessmentVisible = true, currentReport = {}" class="el-icon-plus" type="primary">
- 新增其他任务</el-button>
- </template>
- <template #table>
- <el-table-column prop="name" label="所属项目组" />
- <el-table-column prop="age" label="任务内容" />
- <el-table-column prop="age" label="任务时间" />
- <el-table-column prop="age" label="添加人" />
- <el-table-column prop="age" label="评定积分" />
- <el-table-column prop="age" label="累计分数" />
- <el-table-column prop="age" label="评定时间" />
- <el-table-column prop="age" label="操作">
- <template #default="{ row }">
- <el-button type="text">详情</el-button>
- </template>
- </el-table-column>
- </template>
- </TableCustom>
-
- <Detail :modelValue="assessmentVisible" :reportData="currentReport" />
- </div>
-</template>
-
-<script>
-import Detail from './components/detail.vue'
-
-export default {
- name: 'RestsTask',
- components: {
- Detail
- },
- data() {
- return {
- form: {
- },
- tableData: [],
- queryForm: {
- pageSize: 10,
- pageNum: 1
- },
- total: 0,
- assessmentVisible: false,
- currentReport: {}
- }
- },
- methods: {
- handleCurrentChange(page) {
- this.queryForm.pageNum = page
- this.getList()
- },
- handleSizeChange(size) {
- this.queryForm.pageSize = size
- this.getList()
- },
- getList() {
-
- },
- handleDetail(row) {
- // 处理详情
- },
- handleAssessment(row) {
- this.currentReport = row;
- this.assessmentVisible = true;
- },
- }
-}
-</script>
-
-<style scoped lang="less">
-.list {
- height: 100%;
-}
-
-.top-box-integral {
- display: flex;
- justify-content: space-between;
- flex-wrap: wrap;
- gap: 28px;
-
- &-card {
- flex: 1;
- background: #E8FAF6;
- box-shadow: 0px 10px 10px 0px rgba(0, 0, 0, 0.06);
- border-radius: 10px;
- padding: 21px 20px;
-
- &-title {
- font-family: 'SourceHanSansCN-Medium';
- font-size: 14px;
- color: rgba(0, 0, 0, 0.8);
- }
-
- &-num {
- font-family: 'SF Compact Display Black';
- text-align: center;
- font-weight: 900;
- font-size: 50px;
- color: #049C9A;
- line-height: 60px;
- }
- }
-}
-
-.tip-warring {
- margin-top: 20px;
- color: rgba(255, 73, 85, 1);
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/taskList/components/AssessmentDialog.vue b/culture/src/views/deliveryAssessment/taskList/components/AssessmentDialog.vue
deleted file mode 100644
index f607517..0000000
--- a/culture/src/views/deliveryAssessment/taskList/components/AssessmentDialog.vue
+++ /dev/null
@@ -1,244 +0,0 @@
-<template>
- <el-dialog :visible.sync="dialogVisible" title="课题评定详情" width="70%" @close="handleClose">
- <el-form :model="form" inline label-position="top" :rules="rules" ref="formRef">
- <el-row :gutter="20">
- <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
- <el-form-item label="报告编号" prop="reportNo" required>
- <el-input v-model="form.reportNo" disabled placeholder="自动生成" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
- <el-form-item label="报告名称" prop="reportName">
- <el-input v-model="form.reportName" placeholder="请输入" />
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <div class="content-box">
- <el-row :gutter="16">
- <el-col :xs="24" :sm="24" :md="4" :lg="4" :xl="4">
- <div class="content-box-left">
- <div class="content-box-left-th">设立课题规则</div>
- <div class="content-box-left-body" :style="{ height: `calc(${$baseTableHeight()}px - 40px)` }">
- 1、根据可研报告、产品构思设计的工艺研究路线,一条工艺路线设立一个课题。如果一个课题中有多个化合物需要开发研究,则每个化合物作为一个分题;分题归集到该课题中,最终形成课题报告。不同课题报告中的分题不能重复使用。
- 2、在可行研究阶段,工艺开发升级,重新规划工艺研究路线,则以新规划的工艺路线方案来设定课题</div>
- </div>
- </el-col>
- <el-col style="margin-top: 5px;" :xs="24" :sm="24" :md="20" :lg="20" :xl="20">
- <Table :total="0" :height="null" :data="criteriaList" show-summary :summary-method="getSummaries"
- :span-method="arraySpanMethod">
- <el-table-column type="index" label="序号" width="80" />
- <el-table-column prop="criteria" label="创新型课题标准" />
- <el-table-column prop="fullScore" label="满分值" width="100" />
- <el-table-column label="评定分值" prop="score" width="200">
- <template #default="{ row }">
- <el-input-number v-model="row.score" :min="0" :max="row.fullScore" :step="1" />
- </template>
- </el-table-column>
- <el-table-column prop="rule" label="创新型课题报告评分规则">
- <template>
- <div>
- <div>1、各分项评满分,应满足以下四项要求:</div>
- <div>①分项内容:清晰、系统、完整,结构逻辑清晰,无缺项;</div>
- <div>②团队工作运行顺畅、计划时间高效。</div>
- <div>③工作结果完成度高。</div>
- <div>④课题文档报告完成度高。</div>
- <div>2、某分项工作完成,但出现以下三种错误中的1种,则减1分:</div>
- <div>①有缺项、漏项;</div>
- <div>②或不完整清晰;</div>
- <div>③或工作效率人为拖延。</div>
- <div>3、某分项工作基本完成,但出现三种错误中的2-3种,则减2分:</div>
- <div> ①有缺项、漏项;</div>
- <div>②或不完整清晰;</div>
- <div>③或工作效率人为拖延。</div>
- <div>4、不能完成某分项的全部工作,或课题不涉及该分项内容,则该分项评0分。</div>
- </div>
- </template>
- </el-table-column>
- </Table>
- </el-col>
- </el-row>
- </div>
- <div class="assessed">
- <div>评定时间:2025-2-20 11:08:00</div>
- <div>评定人:张三</div>
- </div>
- <template #footer>
- <span class="dialog-footer select-member-footer">
- <el-button type="primary" @click="handleSubmit">提交评定结果</el-button>
- </span>
- </template>
- </el-dialog>
-</template>
-
-<script>
-export default {
- name: 'AssessmentDialog',
- props: {
- modelValue: {
- type: Boolean,
- default: false
- },
- reportData: {
- type: Object,
- default: () => { }
- }
- },
- data() {
- return {
- dialogVisible: false,
- form: {
- reportNo: '',
- reportName: '',
- },
- rules: {
- reportName: [
- { required: true, message: '请输入报告名称', trigger: 'blur' }
- ],
- },
- criteriaList: [
- {
- criteria: '课题名称依准确性、报告内容完整性:研究目标是否完整、是否研究工作内容合理性、是否围绕目标展开开、是否具有逻辑性和条理性',
- fullScore: 3,
- score: 0,
- },
- {
- criteria: '文献资料调查:全面性、系统性编辑逻辑顺畅,表达规范',
- fullScore: 2,
- score: 0,
- },
- {
- criteria: '专业/技术路线与方法:合理性、可行性;实验设计科学、能完成研究目标、方法完整、完整、可靠;',
- fullScore: 3,
- score: 0,
- },
- {
- criteria: '实验验证工作可行性强,团队工作调度支持实验设备、材料等条件的准备良好,时间计划合理,能效按时完成',
- fullScore: 2,
- score: 0,
- },
- {
- criteria: '实验设计合理性:①对照设置,重复次数,样本量足够。②变量控制:自变量控制,因变量测量,干扰因素分析识别;确保结果的准确性③验证结果解释分析:符合科学原理、逻辑严密、不存在漏洞。具有实际应用价值,解决了实际问题或实现了研究目的。',
- fullScore: 3,
- score: 0,
- },
- {
- criteria: '课题报告完成度高,预期研究结果果是否具有技术价值和应用价值。风险识别:识别了潜在的技术风险、市场风险和管理风险。',
- fullScore: 2,
- score: 0,
- }
- ]
- }
- },
- watch: {
- modelValue: {
- handler(val) {
- this.dialogVisible = val;
- },
- immediate: true
- },
- reportData: {
- handler(val) {
- if (val) {
- this.form.reportNo = val.reportNo || '';
- this.form.reportName = val.reportName || '';
- }
- },
- immediate: true
- }
- },
- methods: {
- handleClose() {
- this.$emit('update:modelValue', false);
- },
- async handleSubmit() {
- try {
- await this.$refs.formRef.validate();
- const totalScore = this.criteriaList.reduce((sum, item) => sum + (item.score || 0), 0);
- const assessmentData = {
- ...this.form,
- totalScore,
- criteriaScores: this.criteriaList.map(item => ({
- criteria: item.criteria,
- score: item.score || 0
- }))
- };
- this.$emit('submit', assessmentData);
- this.handleClose();
- } catch (error) {
- // 表单验证失败
- }
- },
- getSummaries(param) {
- const { columns, data } = param;
- const sums = [];
- columns.forEach((column, index) => {
- if (index === 0) {
- sums[index] = '合计';
- return;
- }
- const values = data.map(item => Number(item[column.property]));
- if (!values.every(value => isNaN(value))) {
- sums[index] = values.reduce((prev, curr) => {
- const value = Number(curr);
- if (!isNaN(value)) {
- return prev + curr;
- } else {
- return prev;
- }
- }, 0);
- sums[index] += ' 分';
- } else {
- sums[index] = '';
- }
- });
- return sums;
- },
- arraySpanMethod({ row, column, rowIndex, columnIndex }) {
- if (columnIndex === 4 && rowIndex == 0) {
- return {
- rowspan: 6,
- colspan: 1
- }
- } else if (rowIndex !== 0 && columnIndex === 4) {
- return [0, 0]
- }
- }
- }
-}
-</script>
-
-<style lang="less" scoped>
-.content-box {
-
- &-left {
- margin-top: 5px;
- display: flex;
- flex-direction: column;
- border: 1px solid #EBEEF5;
- border-radius: 8px 8px 0px 0px;
- font-size: 12px;
-
- &-th {
- line-height: 40px;
- background: #FAFAFA !important;
- color: #909399;
- padding: 0 10px;
- font-weight: bold;
- }
-
- &-body {
- padding: 0 10px;
- line-height: 23px;
- }
- }
-}
-
-.assessed {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
- gap: 25px;
- margin-top: 20px;
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/taskList/index.vue b/culture/src/views/deliveryAssessment/taskList/index.vue
deleted file mode 100644
index 791ee4d..0000000
--- a/culture/src/views/deliveryAssessment/taskList/index.vue
+++ /dev/null
@@ -1,171 +0,0 @@
-<template>
- <div class="list">
- <TableCustom :queryForm="queryForm" :tableData="tableData" :total="total" @currentChange="handleCurrentChange"
- @sizeChange="handleSizeChange">
- <template #search>
- <el-form :model="form" label-width="140px" inline>
- <el-form-item label="项目组名称:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="课题类型:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="课题名称:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="提交人:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="状态:">
- <el-select v-model="form.name" placeholder="请选择" />
- </el-form-item>
- <el-form-item class="search-btn-box">
- <el-button>重置</el-button>
- <el-button type="primary">查询</el-button>
- </el-form-item>
- </el-form>
- </template>
- <template #setting>
- <div class="top-box-integral">
- <div style="background-color:rgba(232, 250, 246, 1)" v-for="item in 3" :key="item"
- class="top-box-integral-card">
- <div class="top-box-integral-card-title">{{ ['课题合计数量', '待评定', '已评定'][item - 1] }}</div>
- <div style="color:rgba(4, 156, 154, 1)" class="top-box-integral-card-num">99.9</div>
- </div>
- </div>
- <div class="tip-warring">
- <div>
- 【注意】每个课题交付评分标准:
- </div>
- <div>
- 1、课题由工程师/化验师设定,并清晰完整完成课题目标,评优秀3分;
- </div>
- <div>
- 2、课题由工程师/化验师设定,并清晰完整完成课题目标,评优秀3分;
- </div>
- <div>
- 3、课题由上级设定,工程师/化验师清晰完整完成课题目标,评正常2分;
- </div>
- <div>
- 4、课题由上级设定,工程师/化验师只能阐述课题内容,无法延伸工作思路,无开发思维的运行能力、创新能力,无法实现专题目标,评失误0分;
- </div>
- </div>
- </template>
- <template #table>
- <el-table-column prop="name" label="所属项目组" />
- <el-table-column prop="age" label="课题类型" />
- <el-table-column prop="age" label="报告编号" />
- <el-table-column prop="age" label="报告名称" />
- <el-table-column prop="age" label="提交人" />
- <el-table-column prop="age" label="评定结果" />
- <el-table-column prop="age" label="累积分值" />
- <el-table-column prop="age" label="评定时间" />
- <el-table-column prop="age" label="状态">
- <template #default="{ row }">
- <el-tag v-if="row.status == 1" type="info" color="#fff">已评定</el-tag>
- <el-tag v-else type="success">待评定</el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="age" label="操作">
- <template #default="{ row }">
- <el-button type="text">详情</el-button>
- <el-button type="text">评定</el-button>
- </template>
- </el-table-column>
- </template>
- </TableCustom>
-
- <AssessmentDialog :modelValue="assessmentVisible" :reportData="currentReport"
- @submit="handleAssessmentSubmit" />
- </div>
-</template>
-
-<script>
-import AssessmentDialog from './components/AssessmentDialog.vue'
-
-export default {
- name: 'TaskList',
- components: {
- AssessmentDialog
- },
- data() {
- return {
- form: {
- },
- tableData: [],
- queryForm: {
- pageSize: 10,
- pageNum: 1
- },
- total: 0,
- assessmentVisible: false,
- currentReport: {}
- }
- },
- methods: {
- handleCurrentChange(page) {
- this.queryForm.pageNum = page
- this.getList()
- },
- handleSizeChange(size) {
- this.queryForm.pageSize = size
- this.getList()
- },
- getList() {
-
- },
- handleDetail(row) {
- // 处理详情
- },
- handleAssessment(row) {
- this.currentReport = row;
- this.assessmentVisible = true;
- },
- handleAssessmentSubmit(data) {
- console.log('评定提交数据:', data);
- // 处理评定提交
- }
- }
-}
-</script>
-
-<style scoped lang="less">
-.list {
- height: 100%;
-}
-
-.top-box-integral {
- display: flex;
- justify-content: space-between;
- flex-wrap: wrap;
- gap: 28px;
-
- &-card {
- flex: 1;
- background: #E8FAF6;
- box-shadow: 0px 10px 10px 0px rgba(0, 0, 0, 0.06);
- border-radius: 10px;
- padding: 21px 20px;
-
- &-title {
- font-family: 'SourceHanSansCN-Medium';
- font-size: 14px;
- color: rgba(0, 0, 0, 0.8);
- }
-
- &-num {
- font-family: 'SF Compact Display Black';
- text-align: center;
- font-weight: 900;
- font-size: 50px;
- color: #049C9A;
- line-height: 60px;
- }
- }
-}
-
-.tip-warring {
- margin-top: 20px;
- color: rgba(255, 73, 85, 1);
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/testerWorkerEvaluate/add.vue b/culture/src/views/deliveryAssessment/testerWorkerEvaluate/add.vue
deleted file mode 100644
index 267550a..0000000
--- a/culture/src/views/deliveryAssessment/testerWorkerEvaluate/add.vue
+++ /dev/null
@@ -1,200 +0,0 @@
-<template>
- <Card>
- <template>
- <div class="header-title" style="margin-bottom: 18px;">
- <div class="header-title-left">
- <img src="@/assets/public/headercard.png" />
- <div>所属实验调度</div>
- </div>
- <el-button class="el-icon-plus" type="primary" @click="showScheduling = true"> 选择实验调度</el-button>
- </div>
- <Table :tableData="tableData" :total="total" :height="null">
- <template>
- <el-table-column prop="planCode" label="所属项目课题方案"></el-table-column>
- <el-table-column prop="planName" label="实验编号"></el-table-column>
- <el-table-column prop="planName" label="实验名称"></el-table-column>
- <el-table-column prop="stage" label="通知时间"></el-table-column>
- <el-table-column prop="stage" label="实验开始时间"></el-table-column>
- <el-table-column prop="stage" label="实验结束时间"></el-table-column>
- <el-table-column prop="stage" label="参加人员"></el-table-column>
- <el-table-column prop="creator" label="状态"></el-table-column>
- </template>
- </Table>
- <div class="header-title" style="margin-top: 60px;">
- <div class="header-title-left">
- <img src="@/assets/public/headercard.png" />
- <div>被评定实验员</div>
- </div>
- <el-button class="el-icon-plus" type="primary" @click="addMember"> 选择实验员</el-button>
- </div>
- <div class="member-list">
- <div class="member-list-card">
- <div class="member-item">
- <div class="member-title">实验员</div>
- <div class="member-name-box-2">
- <div v-for="i in [1, 2, 3, 4, 5, 6, 7, 8]" :key="i" class="member-name">张三</div>
- </div>
- <div class="member-edit" @click="addMember">修改</div>
- </div>
- </div>
- </div>
- <div class="header-title" style="margin-bottom: 18px;margin-top: 60px;">
- <div class="header-title-left">
- <img src="@/assets/public/headercard.png" />
- <div>工作标准评定</div>
- </div>
- </div>
- <EvaluateTable :type="2" />
- <div class="add-project-footer">
- <el-button type="primary">保存</el-button>
- <el-button>存草稿</el-button>
- </div>
- </template>
- <SelectMember ref="selectMember" />
- <ExperimentalScheduling :show="showScheduling" />
- </Card>
-</template>
-
-<script>
-import ExperimentalScheduling from "@/views/dataManagement/confirmation-sheet/components/experimental-scheduling";
-export default {
- name: 'AddTesterWorkerEvaluate',
- components: {
- ExperimentalScheduling,
- },
- data() {
- return {
- showScheduling: false,
- }
- },
- methods: {
- submitForm() {
- },
- addMember() {
- this.$refs.selectMember.open()
- },
- }
-}
-</script>
-
-<style scoped lang="less">
-.el-form--inline .el-form-item {
- margin-right: 83px;
-}
-
-.header-title {
- display: flex;
- align-items: center;
- flex-wrap: wrap;
- gap: 13px;
-
- .header-title-left {
- display: flex;
- align-items: center;
- gap: 13px;
-
- img {
- width: 12px;
- height: 19px;
- }
-
- div {
- flex-shrink: 0;
- font-weight: bold;
- font-size: 18px;
- color: #222222;
- line-height: 27px;
- font-family: 'Source Han Sans CN Bold Bold';
-
- &:before {
- content: '*';
- color: #F56C6C;
- margin-right: 4px;
- }
- }
- }
-}
-
-.member-list {
- margin-top: 18px;
- display: flex;
- flex-wrap: wrap;
- gap: 28px;
-
- .member-list-card {
- position: relative;
- width: 340px;
- height: 400px;
- border-radius: 8px;
- border: 1px solid #DCDFE6;
- background: linear-gradient(to bottom, rgba(255, 77, 79, 0.20) 0%, rgba(255, 242, 194, 0) 70%);
-
- .member-item {
- height: 100%;
- display: flex;
- flex-direction: column;
-
- .member-title {
- margin-top: 20px;
- width: 100%;
- font-family: 'Source Han Sans CN Bold Bold';
- font-weight: bold;
- font-size: 16px;
- color: rgba(0, 0, 0, 0.8);
- line-height: 16px;
- text-align: center;
- }
-
- .member-name-box-2 {
- padding: 0 20px;
- padding-top: 40px;
- display: grid;
- grid-template-columns: repeat(4, 1fr);
- align-items: flex-start;
- flex-wrap: wrap;
- gap: 20px;
- justify-content: center;
- }
-
- .member-name {
- width: 60px;
- height: 60px;
- background: #7D8B79;
- border-radius: 50%;
- text-align: center;
- line-height: 60px;
- font-weight: 500;
- font-size: 16px;
- color: #FFFFFF;
- }
-
- .member-edit {
- cursor: pointer;
- position: absolute;
- bottom: 10px;
- left: 50%;
- transform: translateX(-50%);
- font-weight: 400;
- font-size: 12px;
- color: #FF4D4F;
- line-height: 22px;
- width: 40px;
- background: #FFF1F0;
- border-radius: 4px;
- border: 1px solid #FFCCC7;
- text-align: center;
- }
- }
- }
-}
-
-.add-project-footer {
- display: flex;
- gap: 20px;
- margin-top: 43px;
-
- button {
- width: 220px;
- }
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/testerWorkerEvaluate/index.vue b/culture/src/views/deliveryAssessment/testerWorkerEvaluate/index.vue
deleted file mode 100644
index 493ab7f..0000000
--- a/culture/src/views/deliveryAssessment/testerWorkerEvaluate/index.vue
+++ /dev/null
@@ -1,217 +0,0 @@
-<template>
- <div class="list">
- <TableCustom :queryForm="queryForm" :tableData="tableData" :total="total" @currentChange="handleCurrentChange"
- @sizeChange="handleSizeChange">
- <template #search>
- <el-form :model="form" label-width="140px" inline>
- <el-form-item label="所属项目课题方案:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="实验编号:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="实验名称:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="评定时间:">
- <el-date-picker v-model="value1" type="daterange" range-separator="至" start-placeholder="开始日期"
- end-placeholder="结束日期">
- </el-date-picker>
- </el-form-item>
- <el-form-item class="search-btn-box">
- <el-button>重置</el-button>
- <el-button type="primary">查询</el-button>
- </el-form-item>
- </el-form>
- </template>
- <template #setting>
- <div class="tableTitle">
- <div class="flex a-center">
- <div class="title" :class="{ active: currentType === 'list' }"
- @click="handleTypeChange('list')">
- 实验员工作评定列表</div>
- <div class="drafts" :class="{ active: currentType === 'draft' }"
- @click="handleTypeChange('draft')">草稿箱</div>
- </div>
- <el-button @click="handleAdd" class="el-icon-plus" type="primary">
- 新增实验员工作评定</el-button>
- </div>
- </template>
- <template #table>
- <el-table-column prop="name" label="所属项目组" />
- <el-table-column prop="age" label="检测项名称" />
- <el-table-column prop="age" label="检测项编号" />
- <el-table-column prop="age" label="备注" />
- <el-table-column prop="age" label="创建人" />
- <el-table-column prop="age" label="创建时间" />
- <el-table-column prop="age" label="状态">
- <template #default="{ row }">
- <el-tag v-if="row.status == 1" type="info" color="#fff">已评定</el-tag>
- <el-tag v-else type="success">待评定</el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="age" label="操作">
- <template #default="{ row }">
- <el-button type="text" @click="assessmentVisible = true">详情</el-button>
- </template>
- </el-table-column>
- </template>
- </TableCustom>
- </div>
-</template>
-
-<script>
-
-export default {
- name: 'TesterWorkerEvaluate',
- data() {
- return {
- currentType: 'list', // 当前显示类型:list-列表,draft-草稿箱
- form: {
- },
- tableData: [],
- queryForm: {
- pageSize: 10,
- pageNum: 1
- },
- total: 0,
- }
- },
- methods: {
- handleAdd() {
- this.$router.push({
- path: '/deliveryAssessment/addTesterWorkerEvaluate'
- })
- },
- handleCurrentChange(page) {
- this.queryForm.pageNum = page
- this.getList()
- },
- handleSizeChange(size) {
- this.queryForm.pageSize = size
- this.getList()
- },
- getList() {
-
- },
- handleTypeChange(type) {
- this.currentType = type;
- this.getList();
- },
- }
-}
-</script>
-
-<style scoped lang="less">
-.list {
- height: 100%;
-}
-
-.top-box-integral {
- display: flex;
- justify-content: space-between;
- flex-wrap: wrap;
- gap: 28px;
-
- &-card {
- flex: 1;
- background: #E8FAF6;
- box-shadow: 0px 10px 10px 0px rgba(0, 0, 0, 0.06);
- border-radius: 10px;
- padding: 21px 20px;
-
- &-title {
- font-family: 'SourceHanSansCN-Medium';
- font-size: 14px;
- color: rgba(0, 0, 0, 0.8);
- }
-
- &-num {
- font-family: 'SF Compact Display Black';
- text-align: center;
- font-weight: 900;
- font-size: 50px;
- color: #049C9A;
- line-height: 60px;
- }
- }
-}
-
-.tip-warring {
- margin-top: 20px;
- color: rgba(255, 73, 85, 1);
-}
-
-.table-title {
- width: 220px;
- height: 50px;
- background: #FFFFFF;
- border-radius: 8px 8px 0px 0px;
- border: 1px solid #049C9A;
- display: flex;
- align-items: center;
- justify-content: center;
- font-family: SourceHanSansCN, SourceHanSansCN;
- font-weight: bold;
- font-size: 18px;
- color: #049C9A;
- line-height: 27px;
-}
-
-.expand-box {
- padding: 20px;
- background: linear-gradient(180deg, #049C9A 0%, #0ACBCA 100%);
- border-radius: 20px;
-
- &-title {
- font-weight: 500;
- font-size: 16px;
- color: #FFFFFF;
- line-height: 24px;
- margin-bottom: 20px;
- }
-}
-
-.flex {
- display: flex;
- align-items: center;
-}
-
-.tableTitle {
- display: flex;
- padding-bottom: 20px;
- justify-content: space-between;
- align-items: center;
-
- .title {
- background: #fafafc;
- border-radius: 8px 8px 0px 0px;
- border: 1px solid #dcdfe6;
- padding: 16px 29px;
- font-weight: bold;
- font-size: 18px;
- color: #606266;
- width: unset;
- cursor: pointer;
- }
-
- .drafts {
- padding: 16px 65px;
- background: #fafafc;
- border-radius: 8px 8px 0px 0px;
- border: 1px solid #dcdfe6;
- font-weight: 400;
- font-size: 18px;
- color: #606266;
- margin-left: 16px;
- cursor: pointer;
- }
-
- .active {
- color: #049c9a;
- background: #ffffff;
- border-radius: 8px 8px 0px 0px;
- border: 1px solid #049c9a;
- }
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/testingAndEvaluation/components/AssessmentDialog.vue b/culture/src/views/deliveryAssessment/testingAndEvaluation/components/AssessmentDialog.vue
deleted file mode 100644
index 33159bc..0000000
--- a/culture/src/views/deliveryAssessment/testingAndEvaluation/components/AssessmentDialog.vue
+++ /dev/null
@@ -1,208 +0,0 @@
-<template>
- <el-dialog :visible.sync="dialogVisible" title="检测项评定详情" width="70%" @close="handleClose">
- <el-form :model="form" inline label-position="top" :rules="rules" ref="formRef">
- <el-row :gutter="20">
- <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
- <el-form-item label="检测项编号" prop="reportNo" required>
- <el-input v-model="form.reportNo" disabled placeholder="自动生成" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
- <el-form-item label="检测项名称" prop="reportName">
- <el-input v-model="form.reportName" placeholder="请输入" />
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <div class="content-box">
- <el-row :gutter="16">
- <el-col style="margin-top: 5px;" :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
- <Table :total="0" :height="null" :data="criteriaList" show-summary :summary-method="getSummaries"
- :span-method="arraySpanMethod">
- <el-table-column type="index" label="序号" width="80" />
- <el-table-column prop="criteria" label="规程型课题评定标准" />
- <el-table-column prop="fullScore" label="满分值" width="100" />
- <el-table-column label="评定分值" prop="score" width="200">
- <template #default="{ row }">
- <el-input-number v-model="row.score" :min="0" :max="row.fullScore" :step="1" />
- </template>
- </el-table-column>
- <el-table-column prop="rule" label="创新型课题报告评分规则">
- <template>
- <div>
- <div>1、规程型课题评定总分的满分为5分。</div>
- <div>2、某分项工作完成,但出现以下三种错误中的1种,则减1分:</div>
- <div>①有缺项、漏项;</div>
- <div>②或不完整清晰;</div>
- <div>③或工作效率人为拖延。</div>
- <div>3、不能完成某分项的全部工作,或课题不涉及该分项内容,则该分项评0分。</div>
- </div>
- </template>
- </el-table-column>
- </Table>
- </el-col>
- </el-row>
- </div>
- <div class="assessed">
- <div>评定时间:2025-2-20 11:08:00</div>
- <div>评定人:张三</div>
- </div>
- </el-dialog>
-</template>
-
-<script>
-export default {
- name: 'AssessmentDialog',
- props: {
- modelValue: {
- type: Boolean,
- default: false
- },
- reportData: {
- type: Object,
- default: () => { }
- }
- },
- data() {
- return {
- dialogVisible: false,
- form: {
- reportNo: '',
- reportName: '',
- },
- rules: {
- reportName: [
- { required: true, message: '请输入报告名称', trigger: 'blur' }
- ],
- },
- criteriaList: [
- {
- criteria: '文献资料调查:全面性,系统性 编辑逻辑清晰,表达规范',
- fullScore: 1,
- score: 0,
- },
- {
- criteria: '专业/技术路线与方法:合理性、可行性;实验设计科学、能实现研究目标,方法先进、完整、可靠;',
- fullScore: 2,
- score: 0,
- },
- {
- criteria: '课题报告完成度高,预期研究结果果是否具有技术价值和应用价值。风险识别:识别了潜在的技术风险、市场风险和管理风险。',
- fullScore: 3,
- score: 0,
- },
- ]
- }
- },
- watch: {
- modelValue: {
- handler(val) {
- this.dialogVisible = val;
- },
- immediate: true
- },
- reportData: {
- handler(val) {
- if (val) {
- this.form.reportNo = val.reportNo || '';
- this.form.reportName = val.reportName || '';
- }
- },
- immediate: true
- }
- },
- methods: {
- handleClose() {
- this.$emit('update:modelValue', false);
- },
- async handleSubmit() {
- try {
- await this.$refs.formRef.validate();
- const totalScore = this.criteriaList.reduce((sum, item) => sum + (item.score || 0), 0);
- const assessmentData = {
- ...this.form,
- totalScore,
- criteriaScores: this.criteriaList.map(item => ({
- criteria: item.criteria,
- score: item.score || 0
- }))
- };
- this.$emit('submit', assessmentData);
- this.handleClose();
- } catch (error) {
- // 表单验证失败
- }
- },
- getSummaries(param) {
- const { columns, data } = param;
- const sums = [];
- columns.forEach((column, index) => {
- if (index === 0) {
- sums[index] = '合计';
- return;
- }
- const values = data.map(item => Number(item[column.property]));
- if (!values.every(value => isNaN(value))) {
- sums[index] = values.reduce((prev, curr) => {
- const value = Number(curr);
- if (!isNaN(value)) {
- return prev + curr;
- } else {
- return prev;
- }
- }, 0);
- sums[index] += ' 分';
- } else {
- sums[index] = '';
- }
- });
- return sums;
- },
- arraySpanMethod({ row, column, rowIndex, columnIndex }) {
- if (columnIndex === 4 && rowIndex == 0) {
- return {
- rowspan: 6,
- colspan: 1
- }
- } else if (rowIndex !== 0 && columnIndex === 4) {
- return [0, 0]
- }
- }
- }
-}
-</script>
-
-<style lang="less" scoped>
-.content-box {
-
- &-left {
- margin-top: 5px;
- display: flex;
- flex-direction: column;
- border: 1px solid #EBEEF5;
- border-radius: 8px 8px 0px 0px;
- font-size: 12px;
-
- &-th {
- line-height: 40px;
- background: #FAFAFA !important;
- color: #909399;
- padding: 0 10px;
- font-weight: bold;
- }
-
- &-body {
- padding: 0 10px;
- line-height: 23px;
- }
- }
-}
-
-.assessed {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
- gap: 25px;
- margin-top: 20px;
-}
-</style>
\ No newline at end of file
diff --git a/culture/src/views/deliveryAssessment/testingAndEvaluation/index.vue b/culture/src/views/deliveryAssessment/testingAndEvaluation/index.vue
deleted file mode 100644
index 4a30f38..0000000
--- a/culture/src/views/deliveryAssessment/testingAndEvaluation/index.vue
+++ /dev/null
@@ -1,212 +0,0 @@
-<template>
- <div class="list">
- <TableCustom :queryForm="queryForm" :tableData="tableData" :total="total" @currentChange="handleCurrentChange"
- @sizeChange="handleSizeChange">
- <template #search>
- <el-form :model="form" label-width="140px" inline>
- <el-form-item label="所属项目组:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="检测项名称:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="检测项编号:">
- <el-input v-model="form.name" placeholder="请输入" />
- </el-form-item>
- <el-form-item label="状态:">
- <el-select v-model="form.name" placeholder="请选择" />
- </el-form-item>
- <el-form-item class="search-btn-box">
- <el-button>重置</el-button>
- <el-button type="primary">查询</el-button>
- </el-form-item>
- </el-form>
- </template>
- <template #setting>
- <div class="table-title">
- 项目检查项、检验包
- </div>
- </template>
- <template #tableCustom>
- <Table :data="tableData" :total="0" @row-click="handleRowClick" row-key="id"
- :expand-row-keys="expandRowKeys">
- <el-table-column type="expand" width="1">
- <template #default="{ row }">
- <div class="expand-box">
- <div class="expand-box-title">报告列表</div>
- <Table :total="0" :height="null">
- <el-table-column prop="name" label="报告内容" />
- <el-table-column prop="name" label="制订人" />
- <el-table-column prop="name" label="制订日期" />
- <el-table-column prop="name" label="检测项编号" />
- <el-table-column prop="name" label="审批人" />
- <el-table-column prop="name" label="审批时间" />
- <el-table-column prop="age" label="状态">
- <template #default="{ row }">
- <el-tag v-if="row.status == 1" type="info" color="#fff">已通过</el-tag>
- <el-tag v-else type="success">未通过</el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="age" label="操作">
- <template #default="{ row }">
- <el-button type="text">详情</el-button>
- </template>
- </el-table-column>
- </Table>
- </div>
- </template>
- </el-table-column>
- <el-table-column prop="name" label="所属项目组" />
- <el-table-column prop="age" label="检测项名称" />
- <el-table-column prop="age" label="检测项编号" />
- <el-table-column prop="age" label="备注" />
- <el-table-column prop="age" label="创建人" />
- <el-table-column prop="age" label="创建时间" />
- <el-table-column prop="age" label="状态">
- <template #default="{ row }">
- <el-tag v-if="row.status == 1" type="info" color="#fff">已评定</el-tag>
- <el-tag v-else type="success">待评定</el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="age" label="操作">
- <template #default="{ row }">
- <el-button type="text" @click="assessmentVisible = true">详情</el-button>
- </template>
- </el-table-column>
- </Table>
- </template>
- </TableCustom>
-
- <AssessmentDialog :modelValue="assessmentVisible" :reportData="currentReport"
- @submit="handleAssessmentSubmit" />
- </div>
-</template>
-
-<script>
-import AssessmentDialog from './components/AssessmentDialog.vue'
-
-export default {
- name: 'TestingAndEvaluation',
- components: {
- AssessmentDialog
- },
- data() {
- return {
- form: {
- },
- tableData: [{ id: 1 }, { id: 2 }],
- queryForm: {
- pageSize: 10,
- pageNum: 1
- },
- total: 0,
- assessmentVisible: false,
- currentReport: {},
- expandRowKeys: []
- }
- },
- methods: {
- handleRowClick(row, column, event) {
- if (column.label === '操作') return
- if (this.expandRowKeys.includes(row.id)) {
- this.expandRowKeys = this.expandRowKeys.filter(key => key !== row.id);
- } else {
- this.expandRowKeys.push(row.id);
- }
- },
- handleCurrentChange(page) {
- this.queryForm.pageNum = page
- this.getList()
- },
- handleSizeChange(size) {
- this.queryForm.pageSize = size
- this.getList()
- },
- getList() {
-
- },
- handleDetail(row) {
- // 处理详情
- },
- handleAssessment(row) {
- this.currentReport = row;
- this.assessmentVisible = true;
- },
- handleAssessmentSubmit(data) {
- console.log('评定提交数据:', data);
- // 处理评定提交
- }
- }
-}
-</script>
-
-<style scoped lang="less">
-.list {
- height: 100%;
-}
-
-.top-box-integral {
- display: flex;
- justify-content: space-between;
- flex-wrap: wrap;
- gap: 28px;
-
- &-card {
- flex: 1;
- background: #E8FAF6;
- box-shadow: 0px 10px 10px 0px rgba(0, 0, 0, 0.06);
- border-radius: 10px;
- padding: 21px 20px;
-
- &-title {
- font-family: 'SourceHanSansCN-Medium';
- font-size: 14px;
- color: rgba(0, 0, 0, 0.8);
- }
-
- &-num {
- font-family: 'SF Compact Display Black';
- text-align: center;
- font-weight: 900;
- font-size: 50px;
- color: #049C9A;
- line-height: 60px;
- }
- }
-}
-
-.tip-warring {
- margin-top: 20px;
- color: rgba(255, 73, 85, 1);
-}
-
-.table-title {
- width: 220px;
- height: 50px;
- background: #FFFFFF;
- border-radius: 8px 8px 0px 0px;
- border: 1px solid #049C9A;
- display: flex;
- align-items: center;
- justify-content: center;
- font-family: SourceHanSansCN, SourceHanSansCN;
- font-weight: bold;
- font-size: 18px;
- color: #049C9A;
- line-height: 27px;
-}
-
-.expand-box {
- padding: 20px;
- background: linear-gradient(180deg, #049C9A 0%, #0ACBCA 100%);
- border-radius: 20px;
-
- &-title {
- font-weight: 500;
- font-size: 16px;
- color: #FFFFFF;
- line-height: 24px;
- margin-bottom: 20px;
- }
-}
-</style>
\ No newline at end of file
--
Gitblit v1.7.1