| | |
| | | ], |
| | | }, |
| | | { |
| | | path: "/strainOperationAssessment", |
| | | component: Layouts, |
| | | meta: { |
| | | title: "菌种库操作评定", |
| | | }, |
| | | children: [ |
| | | { |
| | | path: "list", |
| | | meta: { |
| | | title: "评定列表", |
| | | }, |
| | | component: () => |
| | | import("../views/strainOperationAssessment/index.vue"), |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | path: "/deliveryAssessment", |
| | | component: Layouts, |
| | | meta: { |
New file |
| | |
| | | <template> |
| | | <el-dialog :title="dialogTitle" :visible.sync="visible" width="80%" @open="open" po :close-on-click-modal="false" |
| | | @close="handleClose"> |
| | | <div class="approval-dialog"> |
| | | <!-- 左侧审批内容 --> |
| | | <div class="approval-content"> |
| | | <template> |
| | | <el-form ref="form" :model="form" :rules="rules" inline label-position="top"> |
| | | <div style="display: flex;"> |
| | | <div> |
| | | <div class="header-title" style="width: 100%;"> |
| | | <div class="header-title-left"> |
| | | <div>报告编号</div> |
| | | </div> |
| | | </div> |
| | | <el-form-item prop="reportCode"> |
| | | <el-input disabled v-model="form.reportCode" style="width: 100%;" |
| | | placeholder="请输入报告编号" /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="margin-left: 100px;"> |
| | | <div class="header-title" style="width: 100%;"> |
| | | <div class="header-title-left"> |
| | | <div>报告名称</div> |
| | | </div> |
| | | </div> |
| | | <el-form-item prop="reportName"> |
| | | <el-input disabled v-model="form.reportName" style="width: 100%;" |
| | | placeholder="请输入报告名称" /> |
| | | </el-form-item> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="table"> |
| | | <el-table :data="assessmentTable" border style="width: 100%" :show-summary="true" |
| | | :span-method="tableSpanMethod" :summary-method="getTableSummary"> |
| | | <el-table-column prop="category" label="菌种实验员专业能力考核项" width="180"></el-table-column> |
| | | <el-table-column prop="score" label="该项评分" width="120"> |
| | | <template slot-scope="scope"> |
| | | <el-radio-group :disabled="obj.viewDetail" |
| | | v-if="scope.row.category !== '5.实验失败'" v-model="scope.row.selectedScore"> |
| | | <el-radio :label="0">0分</el-radio> |
| | | <el-radio :label="1">1分</el-radio> |
| | | <el-radio :label="2">2分</el-radio> |
| | | </el-radio-group> |
| | | <el-radio-group :disabled="obj.viewDetail" v-else |
| | | v-model="scope.row.selectedScore"> |
| | | <el-radio :label="0">否0分</el-radio> |
| | | <el-radio :label="-3">是-3分</el-radio> |
| | | </el-radio-group> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="criteria" label="该项评分参考标准"></el-table-column> |
| | | <el-table-column prop="desc" label="评分规则说明"> |
| | | <template slot-scope="scope"> |
| | | <p> 【0分】 实验操作失误或实验方案设计无效导致实验失败、数据不可用。</p> |
| | | <p> 【1分】存在操作有误及实验过程出现问题,没有严格按照操作规程运行;如实验准备不充分,取样遗漏等。</p> |
| | | <p> 【2分】完整按照操作规程及实验室管理制度运行,无任何问题。</p> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="rule" label="考评规则"> |
| | | <template slot-scope="scope"> |
| | | 菌种工程师以分题内容考核菌种实验员。 |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | |
| | | |
| | | |
| | | </el-form> |
| | | </template> |
| | | <!-- <SelectMember ref="selectMember" /> --> |
| | | |
| | | </div> |
| | | </div> |
| | | <div class="evaluate-footer-time" v-if="obj.viewDetail"> |
| | | <span>评定时间:{{ detailData.evaluateTime }}</span> |
| | | <span class="ml-30">评定人:{{ detailData.evaluateName }}</span> |
| | | </div> |
| | | <div slot="footer" class="dialog-footer" v-if="!obj.viewDetail"> |
| | | <el-button type="primary" @click="handleApprove">提交评定结果</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import ApprovalProcess from '@/components/approvalProcess' |
| | | import AiEditor from '@/components/AiEditor' |
| | | import { viewEvaluate } from '../../service' |
| | | |
| | | |
| | | |
| | | export default { |
| | | name: "ApprovalDialog", |
| | | components: { |
| | | ApprovalProcess, |
| | | AiEditor |
| | | }, |
| | | props: { |
| | | visible: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | type: { |
| | | type: String, |
| | | default: "approve", // approve-审批,view-查看 |
| | | }, |
| | | obj: { |
| | | type: Object, |
| | | default: () => { |
| | | return { |
| | | isDetail: false |
| | | } |
| | | }, |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | form: { |
| | | reportCode: "", |
| | | reportName: "", |
| | | reportText: "", |
| | | teamName: "", |
| | | createBy: "", |
| | | createTime: "", |
| | | status: "", |
| | | approvalComment: "", |
| | | approver: "", |
| | | approveTime: "", |
| | | processData: [], |
| | | updateBy: "", |
| | | auditRemark: "", |
| | | auditPersonName: "", |
| | | auditTime: "" |
| | | }, |
| | | detailData: {}, |
| | | assessmentTable: [ |
| | | { |
| | | category: '1.该分题的菌种专业知识', |
| | | selectedScore: 0, |
| | | criteria: '1.1 能讲生物学基础,掌握各类微生物形态特性、生化特性及鉴定方法。1.2 菌种选育技术,了解掌握自然选育、诱变选育、基因工程育种。', |
| | | desc: '', |
| | | rule: '' |
| | | }, |
| | | { |
| | | category: '2.操作能力', |
| | | selectedScore: 0, |
| | | criteria: '1.菌种分离无菌操作规范 2.菌种培养无菌操作规范 3.菌种保存无菌操作规范 4.菌种鉴定无菌操作规范', |
| | | desc: '', |
| | | rule: '' |
| | | }, |
| | | { |
| | | category: '3.仪器设备使用', |
| | | selectedScore: 0, |
| | | criteria: '能正确使用实验仪器,如移液器、恒温箱等,操作规范。', |
| | | desc: '', |
| | | rule: '' |
| | | }, |
| | | { |
| | | category: '4.实验数据记录与分析', |
| | | selectedScore: 0, |
| | | criteria: '实验数据记录及时、准确、完整,能简单分析数据。', |
| | | desc: '', |
| | | rule: '' |
| | | }, |
| | | { |
| | | category: '5.实验失败', |
| | | selectedScore: 0, |
| | | criteria: '无论何种原因,本次实验失败。', |
| | | desc: '', |
| | | rule: '' |
| | | } |
| | | ], |
| | | tableData: [], |
| | | rules: {}, |
| | | status: "2", |
| | | remark: "", |
| | | }; |
| | | }, |
| | | computed: { |
| | | dialogTitle() { |
| | | return this.type === "approve" ? "菌种工程师操作评定" : "菌种工程师操作评定详情"; |
| | | }, |
| | | totalScore() { |
| | | return this.assessmentTable.reduce((sum, item) => sum + (item.selectedScore || 0), 0); |
| | | } |
| | | }, |
| | | methods: { |
| | | open() { |
| | | if (this.obj.viewDetail) { |
| | | viewEvaluate({ id: this.obj.id }).then(res => { |
| | | this.form.reportCode = res.reportCode || ''; |
| | | this.form.reportName = res.reportName || ''; |
| | | this.form.id = res.id || ''; |
| | | this.assessmentTable = this.assessmentTable.map((item, index) => { |
| | | item.selectedScore = Number(res.evaluate.split(',')[index]) || 0; |
| | | return item; |
| | | }) |
| | | this.detailData = res |
| | | |
| | | }) |
| | | } else { |
| | | this.form.reportCode = this.obj.reportCode || ''; |
| | | this.form.reportName = this.obj.reportName || ''; |
| | | this.form.id = this.obj.id || ''; |
| | | } |
| | | |
| | | }, |
| | | handleClose() { |
| | | this.$emit("close"); |
| | | this.form = { |
| | | reportCode: "", |
| | | reportName: "", |
| | | reportText: "", |
| | | teamName: "", |
| | | createBy: "", |
| | | } |
| | | this.assessmentTable = [ |
| | | { |
| | | category: '1.该分题的菌种专业知识', |
| | | selectedScore: 0, |
| | | criteria: '1.1 能讲生物学基础,掌握各类微生物形态特性、生化特性及鉴定方法。1.2 菌种选育技术,了解掌握自然选育、诱变选育、基因工程育种。', |
| | | desc: '', |
| | | rule: '' |
| | | }, |
| | | { |
| | | category: '2.操作能力', |
| | | selectedScore: 0, |
| | | criteria: '1.菌种分离无菌操作规范 2.菌种培养无菌操作规范 3.菌种保存无菌操作规范 4.菌种鉴定无菌操作规范', |
| | | desc: '', |
| | | rule: '' |
| | | }, |
| | | { |
| | | category: '3.仪器设备使用', |
| | | selectedScore: 0, |
| | | criteria: '能正确使用实验仪器,如移液器、恒温箱等,操作规范。', |
| | | desc: '', |
| | | rule: '' |
| | | }, |
| | | { |
| | | category: '4.实验数据记录与分析', |
| | | selectedScore: 0, |
| | | criteria: '实验数据记录及时、准确、完整,能简单分析数据。', |
| | | desc: '', |
| | | rule: '' |
| | | }, |
| | | { |
| | | category: '5.实验失败', |
| | | selectedScore: 0, |
| | | criteria: '无论何种原因,本次实验失败。', |
| | | desc: '', |
| | | rule: '' |
| | | } |
| | | ] |
| | | |
| | | |
| | | this.form.approvalComment = ""; |
| | | }, |
| | | tableSpanMethod({ row, column, rowIndex, columnIndex }) { |
| | | // 评分规则说明(desc)和考评规则(rule)列合并所有行 |
| | | // desc列索引为3,rule列索引为4(从0开始) |
| | | if (columnIndex === 3 || columnIndex === 4) { |
| | | if (rowIndex === 0) { |
| | | return [this.assessmentTable.length, 1]; // 合并所有行 |
| | | } else { |
| | | return [0, 0]; // 其他行隐藏 |
| | | } |
| | | } |
| | | return [1, 1]; |
| | | }, |
| | | getTableSummary(param) { |
| | | const { columns } = param; |
| | | const sums = []; |
| | | columns.forEach((column, index) => { |
| | | if (index === 0) { |
| | | sums[index] = '合计'; |
| | | } else if (index === 1) { |
| | | sums[index] = this.totalScore + '分'; |
| | | } else { |
| | | sums[index] = ''; |
| | | } |
| | | }); |
| | | return sums; |
| | | }, |
| | | handleApprove() { |
| | | this.$emit("approve", { |
| | | ...this.form, |
| | | evaluateTotal: this.totalScore, |
| | | evaluate: this.assessmentTable.map(item => item.selectedScore).join(',') |
| | | }); |
| | | }, |
| | | |
| | | handleCurrentChange(page) { |
| | | this.form.pageNum = page |
| | | this.getList() |
| | | }, |
| | | handleSizeChange(size) { |
| | | this.form.pageSize = size |
| | | this.getList() |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped lang="less"> |
| | | .ml-30 { |
| | | margin-left: 30px; |
| | | } |
| | | |
| | | .evaluate-footer-time { |
| | | margin-top: 20px; |
| | | font-size: 14px; |
| | | color: #333; |
| | | line-height: 27px; |
| | | // font-family: "Source Han Sans CN Bold Bold"; |
| | | } |
| | | |
| | | ::v-deep .el-dialog__header { |
| | | border-bottom: 1px solid #e4e7ed; |
| | | } |
| | | |
| | | .approval-dialog { |
| | | |
| | | .approval-content { |
| | | background: #ffffff; |
| | | border-radius: 10px; |
| | | } |
| | | |
| | | .approval-flow { |
| | | padding: 40px 20px; |
| | | // width: 405px; |
| | | flex: 2; |
| | | background: #ffffff; |
| | | border-radius: 10px; |
| | | |
| | | .flow-title { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | margin-bottom: 20px; |
| | | color: #303133; |
| | | } |
| | | |
| | | .flow-content { |
| | | height: calc(100% - 40px); |
| | | overflow-y: auto; |
| | | |
| | | .el-form--inline .el-form-item { |
| | | margin-right: 83px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .approval-content-card { |
| | | box-shadow: none !important; |
| | | } |
| | | |
| | | .header-title { |
| | | // display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | margin-bottom: 20px; |
| | | gap: 13px; |
| | | |
| | | .header-title-left { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 13px; |
| | | margin-top: 38px; |
| | | |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | span { |
| | | flex-shrink: 0; |
| | | font-weight: bold; |
| | | font-size: 18px; |
| | | color: #222222; |
| | | line-height: 27px; |
| | | font-family: "Source Han Sans CN Bold Bold"; |
| | | } |
| | | } |
| | | |
| | | .header-title-left :first-child { |
| | | margin-top: 0; |
| | | } |
| | | } |
| | | |
| | | .header-title:first-child { |
| | | .header-title-left { |
| | | margin-top: 0; |
| | | } |
| | | } |
| | | |
| | | .item-title { |
| | | padding-left: 25px; |
| | | |
| | | span { |
| | | flex-shrink: 0; |
| | | font-weight: bold; |
| | | font-size: 14px; |
| | | color: #222222; |
| | | line-height: 27px; |
| | | font-family: "Source Han Sans CN Bold Bold"; |
| | | margin: 18px 0; |
| | | |
| | | &:before { |
| | | content: "*"; |
| | | color: #f56c6c; |
| | | margin-right: 4px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .approval-dialog-approve { |
| | | align-content: center; |
| | | |
| | | .status { |
| | | margin-right: 40px; |
| | | max-width: 60%; |
| | | } |
| | | |
| | | // align-items: center; |
| | | .status-title { |
| | | color: #222222; |
| | | font-family: "SourceHanSansCN-Medium"; |
| | | line-height: 14px; |
| | | margin-bottom: 16px; |
| | | } |
| | | |
| | | .status-content { |
| | | display: flex; |
| | | align-items: center; |
| | | width: 100%; |
| | | gap: 16px; |
| | | background: #ffffff; |
| | | border-radius: 10px; |
| | | border: 1px solid rgba(4, 156, 154, 0.5); |
| | | |
| | | .resolve { |
| | | border-radius: 10px; |
| | | flex: 1; |
| | | font-size: 16px; |
| | | // padding: 5px 55px; |
| | | font-weight: 400; |
| | | color: #333333; |
| | | cursor: pointer; |
| | | line-height: 32px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center |
| | | } |
| | | |
| | | .reject { |
| | | flex: 1; |
| | | border-radius: 10px; |
| | | font-size: 16px; |
| | | line-height: 32px; |
| | | // padding: 5px 55px; |
| | | font-weight: 400; |
| | | color: #333333; |
| | | cursor: pointer; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center |
| | | } |
| | | |
| | | .activeStatus { |
| | | background: #ebfefd; |
| | | color: #049c9a; |
| | | box-shadow: 0px 0px 6px 0px rgba(10, 109, 108, 0.25); |
| | | border-radius: 10px; |
| | | } |
| | | } |
| | | |
| | | .remark-title { |
| | | color: #222222; |
| | | font-family: "SourceHanSansCN-Medium"; |
| | | line-height: 14px; |
| | | margin-bottom: 16px; |
| | | } |
| | | } |
| | | |
| | | .dialog-footer { |
| | | align-items: center; |
| | | display: flex; |
| | | justify-content: center; |
| | | gap: 20px; |
| | | |
| | | button { |
| | | width: 150px; |
| | | } |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div class="list"> |
| | | <el-card class="header-box"> |
| | | <div class="box-title"> |
| | | <img src="@/assets/public/notice.png" class="header-icon"> <span>设立课题规则</span> |
| | | </div> |
| | | <div class="header-content"> |
| | | <p>1、根据可研报告、产品构思设计的工艺研究路线,一条工艺路线设立一个课题。如果一个课题中有多个化合物需要开发研究,则每个化合物作为一个分题;分题归集到该课题中,最终形成课题报告。不同课题报告中的分题不能重复使用。 |
| | | </p> |
| | | <p>2、在可行研究阶段,工艺开发升级,重新规划工艺研究路线,则以新规划的工艺路线方案来设定课题。</p> |
| | | </div> |
| | | </el-card> |
| | | <TableCustom :tableData="tableData" :queryForm="queryForm" :height="null" :total="total" |
| | | @currentChange="handleCurrentChange" @sizeChange="handleSizeChange"> |
| | | <template #search> |
| | | <el-form :model="form" label-width="auto" inline> |
| | | <el-form-item label="所属项目组:"> |
| | | <el-input v-model="form.teamName" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="报告名称:"> |
| | | <el-input v-model="form.reportName" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="评定时间"> |
| | | <el-date-picker v-model="form.time" type="daterange" range-separator="至" |
| | | start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label=""> |
| | | <el-button type="default" style="margin-right: 10px;" @click="resetForm">重置</el-button> |
| | | <el-button type="primary" @click="getLists">查询</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | | <template #setting> |
| | | <div class="table-setting-box"> |
| | | <div class="table-setting"> |
| | | <div class="table-tit" :class="!isDraft && 'table-title'" @click="handleTabChange(false)"> |
| | | 评定列表 |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <template #table> |
| | | <el-table-column prop="teamName" label="所属项目组" /> |
| | | <el-table-column prop="evaluateName" label="评定人" /> |
| | | <el-table-column prop="evaluateTime" label="评定时间" /> |
| | | <el-table-column label="操作"> |
| | | <template #default="{ row }"> |
| | | <el-button type="text" v-if="row.status != 1" @click="viewEvaluate(row)">详情</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </TableCustom> |
| | | |
| | | <Evaluate :visible="showEvaluate" :obj="obj" @close="showEvaluate = false" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import Evaluate from './components/evaluate' |
| | | import { getList } from './service' |
| | | import moment from 'moment' |
| | | |
| | | export default { |
| | | name: 'ProjectList', |
| | | components: { |
| | | Evaluate |
| | | }, |
| | | data() { |
| | | return { |
| | | form: { |
| | | teamName: '', |
| | | reportName: '', |
| | | time: [], |
| | | }, |
| | | tableData: [], |
| | | showEvaluate: false, |
| | | queryForm: { |
| | | pageSize: 10, |
| | | pageNum: 1, |
| | | }, |
| | | total: 0, |
| | | isDraft: false, |
| | | obj: {}, |
| | | experimentList: [] |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.getLists() |
| | | }, |
| | | methods: { |
| | | viewEvaluate(row) { |
| | | this.obj = row |
| | | this.obj.viewDetail = true |
| | | this.showEvaluate = true |
| | | }, |
| | | handleCurrentChange(page) { |
| | | this.queryForm.pageNum = page |
| | | this.getLists() |
| | | }, |
| | | handleSizeChange(size) { |
| | | this.queryForm.pageSize = size |
| | | this.getLists() |
| | | }, |
| | | getLists() { |
| | | const params = { |
| | | pageNum: this.queryForm.pageNum, |
| | | pageSize: this.queryForm.pageSize, |
| | | teamName: this.form.teamName, |
| | | reportName: this.form.reportName, |
| | | time: this.form.time.length?moment(this.form.time[0]).format('YYYY-MM-DD 00:00:00') + ' - ' + moment(this.form.time[1]).format('YYYY-MM-DD 23:59:59'):'', |
| | | } |
| | | getList(params).then(res => { |
| | | if (res.code === 200) { |
| | | this.total = res.data.total |
| | | this.tableData = res.data.records |
| | | } |
| | | }) |
| | | }, |
| | | resetForm() { |
| | | this.form = { |
| | | teamName: '', |
| | | reportName: '', |
| | | time: [], |
| | | } |
| | | this.getLists() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="less"> |
| | | .table-setting-box { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | |
| | | .el-icon-plus { |
| | | margin-bottom: 20px; |
| | | } |
| | | |
| | | .header-content { |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 400; |
| | | font-size: 14px; |
| | | color: rgba(0, 0, 0, 0.88); |
| | | margin-left: 30px; |
| | | } |
| | | |
| | | .box-title { |
| | | font-family: SourceHanSansCN, SourceHanSansCN; |
| | | font-weight: bold; |
| | | font-size: 18px; |
| | | color: #222222; |
| | | line-height: 27px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .header-icon { |
| | | width: 20px; |
| | | height: 20px; |
| | | margin-right: 10px; |
| | | |
| | | } |
| | | |
| | | .header-box { |
| | | border-radius: 16px; |
| | | margin-bottom: 30px; |
| | | } |
| | | |
| | | .table-setting { |
| | | display: flex; |
| | | gap: 14px; |
| | | } |
| | | |
| | | .table-tit { |
| | | background: #FAFAFC; |
| | | border-radius: 8px 8px 0px 0px; |
| | | border: 1px solid #DCDFE6; |
| | | width: 166px; |
| | | height: 50px; |
| | | border-radius: 8px 8px 0px 0px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | // margin-bottom: 21px; |
| | | font-family: SourceHanSansCN, SourceHanSansCN; |
| | | font-weight: bold; |
| | | font-size: 18px; |
| | | color: rgba(96, 98, 102, 1); |
| | | line-height: 27px; |
| | | } |
| | | |
| | | .list { |
| | | height: 100%; |
| | | } |
| | | |
| | | .table-title { |
| | | width: 166px; |
| | | height: 50px; |
| | | background: #FFFFFF; |
| | | border-radius: 8px 8px 0px 0px; |
| | | border: 1px solid #049C9A; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | // margin-bottom: 21px; |
| | | font-family: SourceHanSansCN, SourceHanSansCN; |
| | | font-weight: bold; |
| | | font-size: 18px; |
| | | color: #049C9A; |
| | | line-height: 27px; |
| | | } |
| | | </style> |
New file |
| | |
| | | import axios from '@/utils/request'; |
| | | |
| | | // 列表 |
| | | export const getList = (data) => { |
| | | console.log('qweqwe',data); |
| | | return axios.post('/api/t-strain-report/pageList', { ...data }) |
| | | } |
| | | |
| | | |
| | | //查看评定详情 |
| | | export const viewEvaluate = (data) => { |
| | | return axios.get('/open/t-strain-report/getDetailById', {params: {id: data.id}}) |
| | | } |
| | | |
| | | |
| | |
| | | </el-form-item> |
| | | <el-form-item label=""> |
| | | <el-button type="default" style="margin-right: 10px;" @click="resetForm">重置</el-button> |
| | | <el-button type="primary">查询</el-button> |
| | | <el-button type="primary" @click="getLists">查询</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | |
| | | import Approval from './components/approval' |
| | | import Evaluate from './components/evaluate' |
| | | import { getList, approve, evaluate, deleteReport, revokeAudit } from './service' |
| | | import moment from 'moment' |
| | | |
| | | export default { |
| | | name: 'ProjectList', |
| | |
| | | pageSize: this.queryForm.pageSize, |
| | | teamName: this.form.teamName, |
| | | reportName: this.form.reportName, |
| | | startTime: this.form.date && this.form.date[0] ? this.form.date[0] : '', |
| | | endTime: this.form.date && this.form.date[1] ? this.form.date[1] : '', |
| | | time: this.form.time.length?moment(this.form.date[0]).format('YYYY-MM-DD 00:00:00') + ' - ' + moment(this.form.date[1]).format('YYYY-MM-DD 23:59:59'):'', |
| | | status: this.form.status, |
| | | isDraft: this.isDraft ? 1 : 0, |
| | | reportType: 1 |
| | |
| | | </el-form-item> |
| | | <el-form-item label=""> |
| | | <el-button type="default" style="margin-right: 10px;" @click="resetForm">重置</el-button> |
| | | <el-button type="primary">查询</el-button> |
| | | <el-button type="primary" @click="getLists">查询</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | |
| | | <el-button type="text" v-if="row.status == 2 && [1, 2].includes(roleType)" |
| | | @click="handleEvaluate(row)">评定</el-button> |
| | | <el-button type="text" v-if="row.status != 1" @click="viewDetail(row)">详情</el-button> |
| | | <el-button type="text" v-if="roleType == 3 && row.status == 4 || isDraft" |
| | | <el-button type="text" v-if="roleType == 3 && row.status == 4 || isDraft" |
| | | @click="handleDetail(row)">编辑</el-button> |
| | | <el-button type="text" v-if="roleType == 3 && isDraft" @click="handleDelete(row)">删除</el-button> |
| | | <el-button type="text" v-if="row.status == 1 && roleType == 3" |
| | |
| | | import Evaluate from './components/evaluate' |
| | | import ChoiceMethod from './components/choiceMethod' |
| | | import { getList, approve, evaluate, deleteReport, revokeAudit } from './service' |
| | | import moment from 'moment' |
| | | |
| | | export default { |
| | | name: 'ProjectList', |
| | |
| | | pageSize: this.queryForm.pageSize, |
| | | teamName: this.form.teamName, |
| | | reportName: this.form.reportName, |
| | | startTime: this.form.date && this.form.date[0] ? this.form.date[0] : '', |
| | | endTime: this.form.date && this.form.date[1] ? this.form.date[1] : '', |
| | | time: this.form.date.length ? moment(this.form.date[0]).format('YYYY-MM-DD 00:00:00') + ' - ' + moment(this.form.date[1]).format('YYYY-MM-DD 23:59:59') : '', |
| | | status: this.form.status, |
| | | isDraft: this.isDraft ? 1 : 0, |
| | | reportType: 3 |
| | |
| | | </el-form-item> |
| | | <el-form-item label=""> |
| | | <el-button type="default" style="margin-right: 10px;" @click="resetForm">重置</el-button> |
| | | <el-button type="primary">查询</el-button> |
| | | <el-button type="primary" @click="getLists">查询</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | |
| | | import Evaluate from './components/evaluate' |
| | | import ChoiceMethod from './components/choiceMethod' |
| | | import { getList, approve, evaluate, deleteReport, revokeAudit } from './service' |
| | | |
| | | import moment from 'moment' |
| | | export default { |
| | | name: 'ProjectList', |
| | | components: { |
| | |
| | | pageSize: this.queryForm.pageSize, |
| | | teamName: this.form.teamName, |
| | | reportName: this.form.reportName, |
| | | startTime: this.form.date && this.form.date[0] ? this.form.date[0] : '', |
| | | endTime: this.form.date && this.form.date[1] ? this.form.date[1] : '', |
| | | time: this.form.date.length?moment(this.form.date[0]).format('YYYY-MM-DD 00:00:00') + ' - ' + moment(this.form.date[1]).format('YYYY-MM-DD 23:59:59'):'', |
| | | status: this.form.status, |
| | | isDraft: this.isDraft ? 1 : 0, |
| | | reportType: 2 |
| | |
| | | </el-form-item> |
| | | <el-form-item label=""> |
| | | <el-button type="default" style="margin-right: 10px;" @click="resetForm">重置</el-button> |
| | | <el-button type="primary">查询</el-button> |
| | | <el-button type="primary" @click="getLists">查询</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | |
| | | import Evaluate from './components/evaluate' |
| | | import ChoiceMethod from './components/choiceMethod' |
| | | import { getList, approve, evaluate, deleteReport, revokeAudit } from './service' |
| | | import moment from 'moment' |
| | | |
| | | export default { |
| | | name: 'ProjectList', |
| | |
| | | pageSize: this.queryForm.pageSize, |
| | | teamName: this.form.teamName, |
| | | reportName: this.form.reportName, |
| | | startTime: this.form.date && this.form.date[0] ? this.form.date[0] : '', |
| | | endTime: this.form.date && this.form.date[1] ? this.form.date[1] : '', |
| | | time: this.form.date.length?moment(this.form.date[0]).format('YYYY-MM-DD 00:00:00') + ' - ' + moment(this.form.date[1]).format('YYYY-MM-DD 23:59:59'):'', |
| | | status: this.form.status, |
| | | isDraft: this.isDraft ? 1 : 0, |
| | | reportType: 3 |
| | |
| | | }, |
| | | mounted() { }, |
| | | methods: { |
| | | getTypeList() { |
| | | typeList().then((res) => { |
| | | this.deptTypeList = res.data.data |
| | | }) |
| | | }, |
| | | // getTypeList() { |
| | | // typeList().then((res) => { |
| | | // this.deptTypeList = res.data.data |
| | | // }) |
| | | // }, |
| | | getRoleList() { |
| | | roleList().then((res) => { |
| | | this.roleList = res |
| | |
| | | |
| | | // 添加 |
| | | export const add = (data) => { |
| | | return axios.post('/system/user/add', { ...data }) |
| | | return axios.post('/api/system/user/add', { ...data }) |
| | | } |
| | | |
| | | // 编辑 |
| | | export const edit = (data) => { |
| | | return axios.post('/system/user/edit', { ...data }) |
| | | return axios.post('/api/system/user/edit', { ...data }) |
| | | } |
| | | |
| | | // 删除 |
| | |
| | | return axios.delete(`/system/user/deleteById/${id}`) |
| | | } |
| | | |
| | | // 部门 |
| | | export const deptList = (data) => { |
| | | return axios.post(`/t-dept/listAll`) |
| | | } |
| | | |
| | | export const roleList = () => { |
| | | return axios.post(`/system/role/listNotPage`) |
| | |
| | | } |
| | | |
| | | export const updatePwd = (data) => { |
| | | return axios.post(`/system/user/resetPwd`, { ...data }) |
| | | return axios.post(`/api/system/user/resetPwd`, { ...data }) |
| | | } |
| | | export const typeList = () => { |
| | | return axios.get(`/t-business-dept/list/type?type=1`,) |
| | | } |
| | | // export const typeList = () => { |
| | | // return axios.get(`/t-business-dept/list/type?type=1`,) |
| | | // } |