|
|
- <template>
- <div class="study-syxx">
- <div class="syxx-top" v-show="!showDetail" style="margin-bottom: 10px;">
- <div class="syxx-operate">
- <div class="operate-img"></div>
- <div class="operate-left">{{ $t('page.business.study.studyFormPlan.syxx') }}</div>
- </div>
- <el-form ref="form" label-width="90px">
- <el-row>
- <el-col :span="6">
- <el-form-item :label="$t('page.business.study.studyFormPlan.symc')">
- {{ studyInfo.name }}
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item :label="$t('page.business.study.studyFormPlan.sybh')">
- {{ studyInfo.sn }}
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item :label="$t('page.business.study.studyFormPlan.syfzr')">
- {{ studyInfo.leaderName }}
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item :label="$t('page.business.study.studyFormPlan.cjsj')">
- {{ studyInfo.createTime }}
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="24">
- <el-form-item :label="$t('page.business.study.studyFormPlan.syjj')">
- {{ studyInfo.remark }}
- </el-form-item>
- </el-col>
- <el-col>
- <el-button type="primary" @click="sdsy" v-hasPermi="['business:study:sd']" v-if="(studyInfo.leader==id || checkRole(['TFM'])) && studyInfo.status!=5">{{ $t('page.business.study.studyFormPlan.sdsy') }}</el-button>
- </el-col>
- </el-row>
- </el-form>
- <div class="syxx-operate" style="margin-top: 10px;">
- <div class="operate-img"></div>
- <div class="operate-left">{{ $t('page.business.study.studyFormPlan.syxkxx') }}</div>
- </div>
- <div style="display: flex;">
- <div style="margin-right: 30px;" v-for="(item, index) in subjectList" :key="index">
- {{ item.deptName }}({{ item.leaderName }})
- </div>
- </div>
- </div>
- <div class="syxx-content">
- <jhbdList :study="studyInfo" @showDetail="showDetailCallback" />
- </div>
-
- <Sign ref="syxxSignRef" @callback="doSign" />
- </div>
- </template>
-
- <script>
- import { checkPermi, checkRole } from "@/utils/permission";
- import Sign from './sign.vue'
- import jhbdList from './jhbdList.vue'
- import { study_info,study_checkSd,study_sd } from "@/api/business/study/study"
- import { studySubject_listByStudyId } from '@/api/business/study/studySubject'
- import { mapGetters } from 'vuex'
- export default {
- name: 'StudyTbbd',
- props: {
- study: {
- type: Object,
- default: () => {
- return {}
- }
- }
- },
- watch: {
- study: {
- immediate: true,
- deep:true,
- handler(v) {
- this.studyId = v.id
- this.getStudyInfo()
- }
- },
- },
- components: { jhbdList,Sign },
- computed: {
- ...mapGetters([
- 'id'
- ]),
- },
- data() {
- return {
- showDetail: false,
- studyId: '',
- studyInfo:{},
- subjectList: []
- }
- },
- created() {
- },
- methods: {
- checkPermi,
- checkRole,
- getstudySubject() {
- studySubject_listByStudyId({ studyId: this.studyId }).then(response => {
- this.subjectList = response.data;
- }).finally(() => {
- this.$modal.closeLoading()
- })
- },
- getStudyInfo() {
- this.$modal.loading()
- study_info({ id: this.studyId }).then(response => {
- this.studyInfo = response.data
- this.getstudySubject()
- }).finally(() => {
- this.$modal.closeLoading()
- })
- },
- sdsy() {
- this.$modal.loading()
- study_checkSd({
- study:{id:this.studyId},
- }).then(() => {
- this.$refs.syxxSignRef.show(this.$t('page.business.study.study.sdsy'),'锁定试验')
- }).finally(() => {
- this.$modal.closeLoading()
- })
- },
- doSign(val){
- this.doSd(val)
- },
- doSd(sign){
- this.$modal.loading()
- study_sd({
- study:{id:this.studyId},
- sign:sign
- }).then(() => {
- this.$refs.syxxSignRef.cancel()
- this.getStudyInfo()
- }).finally(() => {
- this.$modal.closeLoading()
- })
- },
- showDetailCallback(val) {
- this.showDetail = val
- this.$emit('showDetail', val)
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .study-syxx {
-
- .syxx-top {
- background: #fff;
- padding: 20px;
- width: 100%;
-
- .syxx-operate {
- margin: 0px 0 10px 0;
- display: flex;
- flex-direction: row;
- align-items: center;
- color: #409eff;
-
- .operate-img {
- flex-shrink: 0;
- height: 15px;
- background: #409eff;
- width: 3px;
- }
-
- .operate-left {
- flex-shrink: 0;
- font-weight: bold;
- padding-left: 10px;
- }
-
- .operate-right {
- flex-grow: 1;
- text-align: right;
-
- .operate-icon {
- cursor: pointer;
- }
- }
- }
- }
-
- .syxx-content {
-
- }
- }
- </style>
|