Browse Source

feat:[试验信息][计划表单]

master
15881625488@163.com 1 week ago
parent
commit
77b8c8eab7
10 changed files with 1418 additions and 46 deletions
  1. +92
    -0
      src/api/business/study/studyFormPlan.js
  2. +45
    -4
      src/lang/en/business/study/studyFormPlan.js
  3. +43
    -2
      src/lang/zh/business/study/studyFormPlan.js
  4. +234
    -0
      src/views/business/study/comp/jhbd/Bj.vue
  5. +268
    -0
      src/views/business/study/comp/jhbd/Fh.vue
  6. +126
    -0
      src/views/business/study/comp/jhbd/Ghgsr.vue
  7. +215
    -0
      src/views/business/study/comp/jhbd/Sy.vue
  8. +260
    -0
      src/views/business/study/comp/jhbd/Xq.vue
  9. +132
    -36
      src/views/business/study/comp/jhbdList.vue
  10. +3
    -4
      src/views/business/study/comp/syxx.vue

+ 92
- 0
src/api/business/study/studyFormPlan.js View File

@ -8,3 +8,95 @@ export function studyFormPlan_list(query) {
params: query
})
}
//稽查轨迹
export function studyFormPlan_jcgj(query) {
return request({
url: '/system/business/studyFormPlan/jcgjList',
method: 'get',
params: query
})
}
//签名信息
export function studyFormPlan_qmxx(query) {
return request({
url: '/system/business/studyFormPlan/qmxxList',
method: 'get',
params: query
})
}
//详情
export function studyFormPlan_info(query) {
return request({
url: '/system/business/studyFormPlan/info',
method: 'get',
params: query
})
}
//更换归属人
export function studyFormPlan_ghgsr(data) {
return request({
url: '/system/business/studyFormPlan/ghgsr',
method: 'post',
data: data
})
}
//保存
export function studyFormPlan_bc(data) {
return request({
url: '/system/business/studyFormPlan/bc',
method: 'post',
data: data
})
}
//提交
export function studyFormPlan_tj(data) {
return request({
url: '/system/business/studyFormPlan/tj',
method: 'post',
data: data
})
}
//复核通过
export function studyFormPlan_fhtg(data) {
return request({
url: '/system/business/studyFormPlan/fhtg',
method: 'post',
data: data
})
}
//复核拒绝
export function studyFormPlan_fhjj(data) {
return request({
url: '/system/business/studyFormPlan/fhjj',
method: 'post',
data: data
})
}
//通过
export function studyFormPlan_tg(data) {
return request({
url: '/system/business/studyFormPlan/tg',
method: 'post',
data: data
})
}
//审阅
export function studyFormPlan_sy(data) {
return request({
url: '/system/business/studyFormPlan/sy',
method: 'post',
data: data
})
}

+ 45
- 4
src/lang/en/business/study/studyFormPlan.js View File

@ -1,12 +1,53 @@
export default {
jcsz: '基础设置',
bdtb: '表单填报',
xzbd: '新增表单',
fh: '复核',
ghgsr: '更换归属人',
sy: '审阅',
gc: '观察',
bdsm: '表单说明',
zc: '暂存',
next: '下一步',
save: '保存',
submit: '提交',
bdnr: '表单内容',
qmxx: '签名信息',
qmr: '签名人',
qmyy: '签名意义',
qmsj: '签名时间',
bzyy: '备注原因',
jcgj: '稽查轨迹',
cjjl: '创建记录',
yes: '是',
no: '否',
tjjl: '提交记录',
dcqbjcgj: '导出(全部稽查轨迹)',
dclcjcgj: '导出(流程稽查轨迹)',
dcbjjcgj: '导出(编辑稽查轨迹)',
dcxgjcgj: '导出(修改稽查轨迹)',
dcbhsjgj: '导出(不含数据轨迹)',
rybg: '人员变更',
tbz: '填报中',
ytj: '已提交',
ywcfh: '已完成(经复核)',
ywc: '已完成',
reject: '拒绝',
reason: '原因',
approve: '通过',
shenyue: '审阅',
fhjj: '复核拒绝',
fhtg: '复核通过',
tongguo: '通过',
syxx: '试验信息',
symc: '试验名称',
sybh: '试验编号',
syfzr: '试验负责人',
sdsy: '锁定试验',
cjsj: '创建时间',
sdsy: '锁定试验',
syjj: '试验简介',
xz:'新增配置计划表',
syxkxx:'试验学科信息'
xz: '新增配置计划表',
syxkxx: '试验学科信息'
}

+ 43
- 2
src/lang/zh/business/study/studyFormPlan.js View File

@ -1,4 +1,45 @@
export default {
jcsz: '基础设置',
bdtb: '表单填报',
xzbd: '新增表单',
fh: '复核',
ghgsr: '更换归属人',
sy: '审阅',
gc: '观察',
bdsm: '表单说明',
zc: '暂存',
next: '下一步',
save: '保存',
submit: '提交',
bdnr: '表单内容',
qmxx: '签名信息',
qmr: '签名人',
qmyy: '签名意义',
qmsj: '签名时间',
bzyy: '备注原因',
jcgj: '稽查轨迹',
cjjl: '创建记录',
yes: '是',
no: '否',
tjjl: '提交记录',
dcqbjcgj: '导出(全部稽查轨迹)',
dclcjcgj: '导出(流程稽查轨迹)',
dcbjjcgj: '导出(编辑稽查轨迹)',
dcxgjcgj: '导出(修改稽查轨迹)',
dcbhsjgj: '导出(不含数据轨迹)',
rybg: '人员变更',
tbz: '填报中',
ytj: '已提交',
ywcfh: '已完成(经复核)',
ywc: '已完成',
reject: '拒绝',
reason: '原因',
approve: '通过',
shenyue: '审阅',
fhjj: '复核拒绝',
fhtg: '复核通过',
tongguo: '通过',
syxx: '试验信息',
symc: '试验名称',
sybh: '试验编号',
@ -6,6 +47,6 @@ export default {
cjsj: '创建时间',
sdsy: '锁定试验',
syjj: '试验简介',
xz:'新增配置计划表',
syxkxx:'试验学科信息'
xz: '新增配置计划表',
syxkxx: '试验学科信息'
}

+ 234
- 0
src/views/business/study/comp/jhbd/Bj.vue View File

@ -0,0 +1,234 @@
G<template>
<div>
<div class="edit-container">
<div class="edit-top">
<div class="left-top">
<img src="@/assets/images/back.png" @click="cancel()" />
<div class="left-title"></div>
</div>
<div class="center-top">
<div>
<div :class="showIndex == 1 ? 'el-step__icon is-text is-finish' : 'el-step__icon is-text is-info'">
<div class="el-step__icon-inner">1</div>
</div>
{{ $t('page.business.study.studyFormPlan.jcsz') }}
</div>
<div class="line"></div>
<div>
<div :class="showIndex == 2 ? 'el-step__icon is-text is-finish' : 'el-step__icon is-text is-info'">
<div class="el-step__icon-inner">2</div>
</div>
{{ $t('page.business.study.studyFormPlan.bdtb') }}
</div>
</div>
<div class="right-top">
<el-button @click="cancel()">{{ $t('form.cancel') }}</el-button>
<template v-if="showIndex == 1">
<el-button @click="save">{{ $t('page.business.study.studyFormPlan.zc') }}</el-button>
<el-button type="primary" @click="next">{{ $t('page.business.study.studyFormPlan.next') }}</el-button>
</template>
<template v-else>
<el-button @click="saveNext">{{ $t('page.business.study.studyFormPlan.save') }}</el-button>
<el-button type="primary" @click="openSubmit = true">{{ $t('page.business.study.studyFormPlan.submit')
}}</el-button>
</template>
</div>
</div>
<div class="edit-content">
<div class="content" style="width:60%" v-show="showIndex == 1">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item :label="$t('page.business.form.xtmbmc')" prop="templateId">
<SelectTemplate v-model="form.templateId" :name="form.templateMc" @change="selectTemplateChange" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('page.business.form.bdmc')" prop="bdmc">
<el-input type="text" v-model="form.bdmc" maxlength="50" :placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('page.business.study.studyFormPlan.bdsm')" prop="bdsm">
<el-input type="textarea" v-model="form.bdsm" :rows="5" maxlength="500"
:placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="content" v-show="showIndex == 2">
<TemplateTable ref="templateTable" :sn="form.templateSn" fillType="prePlan" />
</div>
</div>
</div>
<el-dialog :title="$t('page.business.study.studyFormPlan.tjjl')" :visible.sync="openSubmit" width="500px"
append-to-body :close-on-click-modal="false">
<el-form ref="formSubmit" :model="form" :rules="rulesApprove" label-width="120px">
todo
</el-form>
<!-- <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="tj">{{ $t('form.confirm') }}</el-button>
<el-button @click="openSubmit = false">{{ $t('form.cancel') }}</el-button>
</div> -->
</el-dialog>
</div>
</template>
<script>
import { studyFormPlan_bc, studyFormPlan_tj, studyFormPlan_info } from "@/api/business/study/studyFormPlan"
import { mapGetters } from 'vuex'
import SelectTemplate from "@/views/business/comps/select/SelectTemplate";
import SelectDeptUser from '@/views/business/comps/select/SelectDeptUser';
import TemplateTable from '@/views/business/comps/template/TemplateTable';
export default {
name: "Bj",
components: { SelectTemplate, SelectDeptUser, TemplateTable },
data() {
return {
open: false,
showIndex: 1,
form: {},
openSubmit: false,
rulesApprove: {
qmrmm: [{
required: true,
message: ' ',
trigger: 'blur'
}],
fzrsh: [{
required: true,
message: ' ',
trigger: 'blur'
}],
shryId: [{
required: true,
message: ' ',
trigger: 'blur'
}]
},
rules: {
bdmc: [{
required: true,
message: ' ',
trigger: 'blur'
}],
templateId: [{
required: true,
message: ' ',
trigger: 'blur'
}],
}
}
},
computed: {
...mapGetters([
'nickName'
]),
},
created() {
},
methods: {
next() {
this.$refs["form"].validate(valid => {
if (valid) {
this.showIndex = 2
}
})
},
selectTemplateChange(val) {
this.form.bdnr = val.content
this.form.templateMc = val.name
},
cancel() {
this.$emit('close')
},
reset() {
this.form = {
id: null,
studyId: null,
bdbh: null,
bdmc: null,
bdsm: null,
templateId: null,
templateMc: null,
bdnr: null,
fzrsh: null,
shryId: null,
shryMc: null,
}
this.resetForm("form")
},
selectDeptUserChange(val) {
this.form.shryMc = val.name
},
edit(row) {
this.reset()
this.showIndex = 1
if (row && row.id) {
this.$modal.loading()
studyFormPlan_info({ id: row.id }).then(response => {
this.form = response.data
this.form.qmyy = '制作提交预制表单'
this.open = true
this.$modal.closeLoading()
})
} else {
this.form = _.merge({}, this.form, row)
this.open = true
}
},
save() {
this.$refs["form"].validate(valid => {
if (valid) {
this.$modal.loading()
studyFormPlan_bc(this.form).then(response => {
this.$emit('close')
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
}
})
},
async saveNext() {
let content = await this.$refs.templateTable.getFormData()
this.form.bdnr = JSON.stringify(content)
this.$modal.loading()
studyFormPlan_bc(this.form).then(response => {
this.$emit('close')
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
},
tj() {
this.$refs["formSubmit"].validate(valid => {
if (valid) {
this.dotj()
}
})
},
async dotj() {
let content = await this.$refs.templateTable.getFormData()
this.form.bdnr = JSON.stringify(content)
this.$modal.loading()
studyFormPlan_tj(this.form).then(response => {
this.$emit('close')
this.openSubmit = false
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
}
}
}
</script>

+ 268
- 0
src/views/business/study/comp/jhbd/Fh.vue View File

@ -0,0 +1,268 @@
G<template>
<div>
<div class="edit-container">
<div class="edit-top">
<div class="left-top">
<img src="@/assets/images/back.png" @click="cancel()" />
<div class="left-title"></div>
</div>
<div class="center-top">
</div>
<div class="right-top">
<el-button @click="cancel()">{{ $t('form.cancel') }}</el-button>
<el-button type="danger" @click="showApprove('复核拒绝')">{{ $t('page.business.study.studyFormPlan.fhjj')
}}</el-button>
<el-button type="primary" @click="showApprove('复核通过')">{{ $t('page.business.study.studyFormPlan.fhtg')
}}</el-button>
<el-button type="primary" @click="showApprove('通过')">{{ $t('page.business.study.studyFormPlan.tongguo')
}}</el-button>
</div>
</div>
<div class="edit-content">
<div class="content-left">
<TemplateTable ref="templateTable" :sn="form.templateSn" fillType="prePlan" />
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyFormPlan.qmxx') }}</div>
</div>
<div class="pal">
<el-table :data="qmxxList" v-loading="loadingQmxx">
<el-table-column :label="$t('page.business.study.studyFormPlan.qmr')" align="center" prop="qmrMc"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormPlan.qmyy')" align="center" prop="qmyy"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormPlan.qmsj')" align="center" prop="createTime"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormPlan.bzyy')" align="center" prop="remark"
:show-overflow-tooltip="true" />
</el-table>
</div>
<div class="pal">
<pagination v-show="totalQmxx > 0" :total="totalQmxx" :page.sync="queryParamsQmxx.pageNum"
:limit.sync="queryParamsQmxx.pageSize" @pagination="getQmxxList" />
</div>
</div>
<div class="content-right">
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyFormPlan.jcgj') }}</div>
</div>
<JcgjList ref="jcgjList" @handleQuery="getJjcgjList" />
<pagination v-show="jcgjTotal > 0" small layout="prev, pager, next" :total="jcgjTotal"
@pagination="getJjcgjList" />
</div>
</div>
</div>
<el-dialog :title="$t(openTitle)" :visible.sync="openApprove" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="formApprove" :model="formApprove" :rules="rulesApprove" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-input type="text" :value="formApprove.qmyy" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row v-if="formApprove.qmyy == '复核拒绝'">
<el-col :span="24">
<el-form-item :label="$t('page.business.study.studyFormPlan.reason')" prop="reason">
<el-input type="textarea" v-model="formApprove.reason" :rows="5" maxlength="500"
:placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row v-else>
<el-col :span="24">
<el-form-item :label="$t('form.remark')">
<el-input type="textarea" v-model="formApprove.remark" :rows="5" maxlength="500"
:placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.signer')">
<el-input type="text" v-model="nickName" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.password')" prop="qmrmm">
<el-input type="password" v-model="formApprove.qmrmm" maxlength="20"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="approve">{{ $t('form.confirm') }}</el-button>
<el-button @click="openApprove = false">{{ $t('form.cancel') }}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { studyFormPlan_fhtg, studyFormPlan_fhjj, studyFormPlan_tg, studyFormPlan_info, studyFormPlan_jcgj, studyFormPlan_qmxx } from "@/api/business/study/studyFormPlan"
import { mapGetters } from 'vuex'
import JcgjList from "@/views/business/comps/common/JcgjList";
import TemplateTable from '@/views/business/comps/template/TemplateTable';
export default {
name: "Fh",
components: { TemplateTable, JcgjList },
data() {
return {
form: {},
qmxxList: [],
totalQmxx: 0,
loadingQmxx: true,
queryParamsQmxx: {
formId: null,
pageNum: 1,
pageSize: 10
},
jcgjList: [],
jcgjTotal: 0,
queryParamsJcgj: {
pageNum: 1,
formId: null,
pageSize: 10,
},
openTitle: '',
openApprove: false,
formApprove: {},
rulesApprove: {
qmrmm: [{
required: true,
message: ' ',
trigger: 'blur'
}],
reason: [{
required: true,
message: ' ',
trigger: 'blur'
}],
}
}
},
computed: {
...mapGetters([
'nickName'
]),
},
created() {
},
methods: {
getJjcgjList(val) {
this.$modal.loading()
studyFormPlan_jcgj(_.merge({}, this.queryParamsJcgj, val)).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
},
getQmxxList() {
this.loadingQmxx = true
studyFormPlan_qmxx(this.queryParamsQmxx).then(response => {
this.qmxxList = response.rows
this.totalQmxx = response.total
this.loadingQmxx = false
})
},
cancel() {
this.$emit('close')
},
reset() {
this.form = {}
this.resetForm("form")
},
show(row) {
this.reset()
this.$modal.loading()
this.queryParamsJcgj.formId = row.id
this.queryParamsQmxx.formId = row.id
studyFormPlan_info({ id: row.id }).then(response => {
this.form = response.data
this.getQmxxList()
this.getJjcgjList()
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
},
showApprove(qmyy) {
this.openApprove = true
this.resetApprove()
this.formApprove.id = this.form.id
this.formApprove.qmyy = qmyy
if (qmyy == '复核通过') {
this.openTitle = 'page.business.study.studyFormPlan.fhtg'
} else if (qmyy == '复核拒绝') {
this.openTitle = 'page.business.study.studyFormPlan.fhjj'
} else if (qmyy == '通过') {
this.openTitle = 'page.business.study.studyFormPlan.tongguo'
}
},
resetApprove() {
this.resetForm("formApprove")
this.formApprove = {
id: null,
qmyy: '',
bdnr: '',
remark: '',
reason: '',
qmrmm: '',
}
},
approve() {
this.$refs["formApprove"].validate(valid => {
if (valid) {
this.doapprove()
}
})
},
async doapprove() {
let content = await this.$refs.templateTable.getFormData()
this.formApprove.bdnr = JSON.stringify(content)
this.$modal.loading()
if (this.formApprove.qmyy == '复核通过') {
studyFormPlan_fhtg(this.formApprove).then(response => {
this.openApprove = false
this.$modal.closeLoading()
this.$emit('close')
}).finally(() => {
this.$modal.closeLoading()
})
} else if (this.formApprove.qmyy == '复核拒绝') {
this.formApprove.remark=this.formApprove.reason
studyFormPlan_fhjj(this.formApprove).then(response => {
this.openApprove = false
this.$modal.closeLoading()
this.$emit('close')
}).finally(() => {
this.$modal.closeLoading()
})
} else {
studyFormPlan_tg(this.formApprove).then(response => {
this.openApprove = false
this.$modal.closeLoading()
this.$emit('close')
}).finally(() => {
this.$modal.closeLoading()
})
}
}
}
}
</script>

+ 126
- 0
src/views/business/study/comp/jhbd/Ghgsr.vue View File

@ -0,0 +1,126 @@
G<template>
<div>
<el-dialog :title="$t('page.business.study.studyFormPlan.rybg')" :visible.sync="open" width="500px"
append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-input type="text" :value="form.qmyy" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('page.business.study.studyFormPlan.reason')" prop="remark">
<el-input type="textarea" v-model="form.remark" :rows="5" maxlength="500"
:placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.signer')">
<el-input type="text" v-model="nickName" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.password')" prop="qmrmm">
<el-input type="password" v-model="form.qmrmm" maxlength="20"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="save">{{ $t('form.confirm') }}</el-button>
<el-button @click="cancel">{{ $t('form.cancel') }}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { studyFormPlan_ghgsr } from "@/api/business/study/studyFormPlan"
import { mapGetters } from 'vuex'
export default {
name: "Ghgsr",
components: {},
data() {
return {
isBatch: false,
ids: [],
selectList: [],
open: false,
form: {},
rules: {
qmrmm: [{
required: true,
message: ' ',
trigger: 'blur'
}],
remark: [{
required: true,
message: ' ',
trigger: 'blur'
}],
qmyy: [{
required: true,
message: ' ',
trigger: 'blur'
}],
}
}
},
computed: {
...mapGetters([
'nickName'
]),
},
created() {
},
methods: {
cancel() {
this.open = false
},
reset() {
this.form = {
id: null,
qmyy: '更换归属人',
userId: null,
UserMc: null,
remark: null,
qmrmm: null
}
this.resetForm("form")
},
show(row) {
this.reset()
this.form.id = row.id
this.form.userId = row.userId
this.form.userMc = row.userMc
this.open = true
},
save() {
this.$refs["form"].validate(valid => {
if (valid) {
this.$modal.loading()
studyFormPlan_ghgsr(this.form).then(response => {
this.open = false
this.$emit('callback')
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
}
})
}
}
}
</script>

+ 215
- 0
src/views/business/study/comp/jhbd/Sy.vue View File

@ -0,0 +1,215 @@
G<template>
<div>
<div class="edit-container">
<div class="edit-top">
<div class="left-top">
<img src="@/assets/images/back.png" @click="cancel()" />
<div class="left-title"></div>
</div>
<div class="center-top">
</div>
<div class="right-top">
<el-button @click="cancel()">{{ $t('form.cancel') }}</el-button>
<el-button type="primary" @click="showApprove">{{ $t('page.business.study.studyFormPlan.shenyue')
}}</el-button>
</div>
</div>
<div class="edit-content">
<div class="content-left">
<TemplateTable ref="templateTable" :sn="form.templateSn" fillType="prePlan" />
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyFormPlan.qmxx') }}</div>
</div>
<div class="pal">
<el-table :data="qmxxList" v-loading="loadingQmxx">
<el-table-column :label="$t('page.business.study.studyFormPlan.qmr')" align="center" prop="qmrMc"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormPlan.qmyy')" align="center" prop="qmyy"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormPlan.qmsj')" align="center" prop="createTime"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormPlan.bzyy')" align="center" prop="remark"
:show-overflow-tooltip="true" />
</el-table>
</div>
<div class="pal">
<pagination v-show="totalQmxx > 0" :total="totalQmxx" :page.sync="queryParamsQmxx.pageNum"
:limit.sync="queryParamsQmxx.pageSize" @pagination="getQmxxList" />
</div>
</div>
<div class="content-right">
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyFormPlan.jcgj') }}</div>
</div>
<JcgjList ref="jcgjList" @handleQuery="getJjcgjList" />
<pagination v-show="jcgjTotal > 0" small layout="prev, pager, next" :total="jcgjTotal"
@pagination="getJjcgjList" />
</div>
</div>
</div>
<el-dialog :title="$t('page.business.study.studyFormPlan.shenyue')" :visible.sync="openApprove" width="500px"
append-to-body :close-on-click-modal="false">
<el-form ref="formApprove" :model="formApprove" :rules="rulesApprove" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-input type="text" :value="formApprove.qmyy" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.remark')" prop="remark">
<el-input type="textarea" v-model="formApprove.remark" :rows="5" maxlength="500"
:placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.signer')">
<el-input type="text" v-model="nickName" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.password')" prop="qmrmm">
<el-input type="password" v-model="formApprove.qmrmm" maxlength="20"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="approve">{{ $t('form.confirm') }}</el-button>
<el-button @click="openApprove = false">{{ $t('form.cancel') }}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { studyFormPlan_sy, studyFormPlan_info, studyFormPlan_jcgj, studyFormPlan_qmxx } from "@/api/business/study/studyFormPlan"
import { mapGetters } from 'vuex'
import JcgjList from "@/views/business/comps/common/JcgjList";
import TemplateTable from '@/views/business/comps/template/TemplateTable';
export default {
name: "Sy",
components: { TemplateTable, JcgjList },
data() {
return {
form: {},
qmxxList: [],
totalQmxx: 0,
loadingQmxx: true,
queryParamsQmxx: {
formId: null,
pageNum: 1,
pageSize: 10
},
jcgjList: [],
jcgjTotal: 0,
queryParamsJcgj: {
pageNum: 1,
formId: null,
pageSize: 10,
},
openApprove: false,
formApprove: {},
rulesApprove: {
qmrmm: [{
required: true,
message: ' ',
trigger: 'blur'
}]
}
}
},
computed: {
...mapGetters([
'nickName'
]),
},
created() {
},
methods: {
getJjcgjList(val) {
this.$modal.loading()
studyFormPlan_jcgj(_.merge({}, this.queryParamsJcgj, val)).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
},
getQmxxList() {
this.loadingQmxx = true
studyFormPlan_qmxx(this.queryParamsQmxx).then(response => {
this.qmxxList = response.rows
this.totalQmxx = response.total
this.loadingQmxx = false
})
},
cancel() {
this.$emit('close')
},
reset() {
this.form = {}
this.resetForm("form")
},
show(row) {
this.reset()
this.$modal.loading()
this.queryParamsJcgj.formId = row.id
this.queryParamsQmxx.formId = row.id
studyFormPlan_info({ id: row.id }).then(response => {
this.form = response.data
this.getQmxxList()
this.getJjcgjList()
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
},
showApprove() {
this.resetApprove()
this.formApprove.id = this.form.id
this.openApprove = true
},
resetApprove() {
this.formApprove = {
id: null,
qmyy: '已审阅',
remark: '',
qmrmm: '',
}
this.resetForm("formApprove")
},
approve() {
this.$refs["formApprove"].validate(valid => {
if (valid) {
this.$modal.loading()
studyFormPlan_sy(this.formApprove).then(response => {
this.openApprove = false
this.$modal.closeLoading()
this.$emit('close')
}).finally(() => {
this.$modal.closeLoading()
})
}
})
}
}
}
</script>

+ 260
- 0
src/views/business/study/comp/jhbd/Xq.vue View File

@ -0,0 +1,260 @@
G<template>
<div>
<div class="edit-container">
<div class="edit-top">
<div class="left-top">
<img src="@/assets/images/back.png" @click="cancel()" />
<div class="left-title"></div>
</div>
<div class="center-top">
</div>
<div class="right-top">
<el-button @click="cancel()">{{ $t('form.close') }}</el-button>
<el-button type="primary" v-if="form.bdzt === 5 && form.tbzt === 1" @click="openApprove = true">{{
$t('page.business.study.studyFormPlan.tb') }}</el-button>
</div>
</div>
<div class="edit-content ">
<div class="content">
<div>
<el-button type="primary" @click="dcqbjcgj">{{ $t('page.business.study.studyFormPlan.dcqbjcgj') }}
</el-button>
<el-button type="primary" @click="dclcjcgj">{{ $t('page.business.study.studyFormPlan.dclcjcgj') }}
</el-button>
<el-button type="primary" @click="dcbjjcgj">{{ $t('page.business.study.studyFormPlan.dcbjjcgj') }}
</el-button>
<el-button type="primary" @click="dcxgjcgj">{{ $t('page.business.study.studyFormPlan.dcxgjcgj') }}
</el-button>
<el-button type="primary" @click="dcbhsjgj">{{ $t('page.business.study.studyFormPlan.dcbhsjgj') }}
</el-button>
</div>
<TemplateTable ref="templateTable" :sn="form.templateSn" fillType="prePlan" />
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyFormPlan.qmxx') }}</div>
</div>
<div class="pal">
<el-table :data="qmxxList" v-loading="loadingQmxx">
<el-table-column :label="$t('page.business.study.studyFormPlan.qmr')" align="center" prop="qmrMc"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormPlan.qmyy')" align="center" prop="qmyy"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormPlan.qmsj')" align="center" prop="createTime"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormPlan.bzyy')" align="center" prop="remark"
:show-overflow-tooltip="true" />
</el-table>
</div>
<div class="pal">
<pagination v-show="totalQmxx > 0" :total="totalQmxx" :page.sync="queryParamsQmxx.pageNum"
:limit.sync="queryParamsQmxx.pageSize" @pagination="getQmxxList" />
</div>
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyFormPlan.jcgj') }}</div>
</div>
<JcgjList ref="jcgjList" @handleQuery="getJjcgjList" />
<pagination v-show="jcgjTotal > 0" small layout="prev, pager, next" :total="jcgjTotal"
@pagination="getJjcgjList" />
</div>
</div>
</div>
<!-- 填报 -->
<el-dialog :title="$t('page.business.study.studyFormPlan.cjjl')" :visible.sync="openApprove" width="500px"
append-to-body :close-on-click-modal="false">
<el-form ref="formApprove" :model="formApprove" :rules="rulesApprove" label-width="120px">
<el-alert :title="$t('page.business.study.studyFormPlan.ts')" :closable="false" type="success">
</el-alert>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-input type="text" :value="formApprove.qmyy" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.remark')" prop="remark">
<el-input type="textarea" v-model="formApprove.remark" :rows="5" maxlength="500"
:placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.signer')">
<el-input type="text" v-model="nickName" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.password')" prop="qmrmm">
<el-input type="password" v-model="formApprove.qmrmm" maxlength="20"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="approve">{{ $t('form.confirm') }}</el-button>
<el-button @click="openApprove = false">{{ $t('form.cancel') }}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { studyFormPlan_tb, studyFormPlan_info, studyFormPlan_jcgj, studyFormPlan_qmxx } from "@/api/business/study/studyFormPlan"
import { mapGetters } from 'vuex'
import JcgjList from "@/views/business/comps/common/JcgjList";
import TemplateTable from '@/views/business/comps/template/TemplateTable';
export default {
name: "Xq",
components: { JcgjList, TemplateTable },
data() {
return {
openApprove: false,
formApprove: {
id: null,
qmyy: '创建记录',
remark: '',
qmrmm: '',
},
rulesApprove: {
qmrmm: [{
required: true,
message: ' ',
trigger: 'blur'
}]
},
qmxxList: [],
totalQmxx: 0,
loadingQmxx: true,
queryParamsQmxx: {
formId: null,
pageNum: 1,
pageSize: 10
},
open: false,
showIndex: 1,
form: {},
rules: {
bdmc: [{
required: true,
message: ' ',
trigger: 'blur'
}],
templateId: [{
required: true,
message: ' ',
trigger: 'blur'
}]
},
jcgjTotal: 0,
jcgjList: [],
queryParamsJcgj: {
pageNum: 1,
formId: null,
pageSize: 10,
}
}
},
computed: {
...mapGetters([
'nickName'
]),
},
created() {
},
methods: {
dcqbjcgj() {
alert('todo')
},
dclcjcgj() {
alert('todo')
},
dcbjjcgj() {
alert('todo')
},
dcxgjcgj() {
alert('todo')
},
dcbhsjgj() {
alert('todo')
},
getJjcgjList(val) {
this.$modal.loading()
studyFormPlan_jcgj(_.merge({}, this.queryParamsJcgj, val)).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
},
getQmxxList() {
this.loadingQmxx = true
studyFormPlan_qmxx(this.queryParamsQmxx).then(response => {
this.qmxxList = response.rows
this.totalQmxx = response.total
this.loadingQmxx = false
})
},
cancel() {
this.$emit('close')
},
reset() {
this.form = {
id: null,
studyId: null,
bdbh: null,
bdmc: null,
bdsm: null,
templateId: null,
templateMc: null,
bdnr: null
}
this.resetForm("form")
},
show(row) {
this.reset()
this.$modal.loading()
this.formApprove.id = row.id
this.queryParamsJcgj.formId = row.id
this.queryParamsQmxx.formId = row.id
studyFormPlan_info({ id: row.id }).then(response => {
this.form = response.data
this.getQmxxList()
this.getJjcgjList()
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
},
approve() {
this.$refs["formApprove"].validate(valid => {
if (valid) {
this.$modal.loading()
studyFormPlan_tb(this.formApprove).then(response => {
this.$emit('close')
this.openApprove = false
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
}
})
}
}
}
</script>

+ 132
- 36
src/views/business/study/comp/jhbdList.vue View File

@ -1,24 +1,24 @@
<template>
<div>
<div class="jhbd-list" v-show="!showDetail">
<div class="jhbd-search">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="80px">
<div class="tbbd-list">
<div v-show="!showDetail && !showEdit && !showAudit && !showFh">
<div class="tbbd-search">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="100px">
<el-row>
<el-col :span="5">
<el-form-item :label="$t('page.business.form.bdmc')" prop="name">
<el-input v-model="searchForm.bdmc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 160px" @keyup.enter.native="search" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item :label="$t('page.business.form.bdbh')" prop="sn">
<el-input v-model="searchForm.bdbh" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 160px" @keyup.enter.native="search" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item :label="$t('page.business.form.gsr')" prop="userId">
<SelectDeptUser v-model="searchForm.userId" :name="searchForm.userMc" key="userId"
<SelectDeptUser v-model="searchForm.userId" style="width: 160px" :name="searchForm.userMc" key="userId"
@change="userChange" />
</el-form-item>
</el-col>
@ -30,7 +30,7 @@
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-col :span="4">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search">{{ $t('form.search') }}</el-button>
<el-button icon="el-icon-refresh" @click="reset">{{ $t('form.reset') }}</el-button>
@ -39,12 +39,11 @@
</el-row>
</el-form>
</div>
<div class="jhbd-content">
<div class="tbbd-content">
<el-row class="add-box">
<el-col>
<el-button type="primary" icon="el-icon-plus" @click="showAdd()"
v-hasPermi="['business:studyFormPlan:xz']">{{
$t('page.business.form.xzjhbd') }}</el-button>
<el-button type="primary" icon="el-icon-plus" @click="add()" v-hasPermi="['business:studyFormPlan:xz']">{{
$t('page.business.study.studyFormPlan.xzbd') }}</el-button>
</el-col>
</el-row>
@ -54,16 +53,37 @@
<el-table-column :label="$t('page.business.form.xtmbmc')" prop="templateMc" />
<el-table-column :label="$t('page.business.form.cjsj')" align="center" prop="createTime" width="140" />
<el-table-column :label="$t('page.business.form.gsr')" align="center" prop="userMc" width="100" />
<el-table-column :label="$t('page.business.form.status')" prop="status" width="100">
<el-table-column :label="$t('page.business.form.status')" prop="status" align="center" width="100">
<template slot-scope="scope">
<span v-if="scope.row.bdzt === 1">{{ $t('page.business.form.statusTbz') }}</span>
<span v-if="scope.row.bdzt === 3">{{ $t('page.business.form.statusYtj') }}</span>
<span v-if="scope.row.bdzt === 5">{{ $t('page.business.form.statusYtg') }}</span>
<span v-if="scope.row.bdzt === 1">{{ $t('page.business.study.studyFormPlan.tbz') }}</span>
<span v-if="scope.row.bdzt === 3">{{ $t('page.business.study.studyFormPlan.ytj') }}</span>
<span v-if="scope.row.bdzt === 7">{{ $t('page.business.study.studyFormPlan.ywc') }}</span>
<span v-if="scope.row.bdzt === 5">{{ $t('page.business.study.studyFormPlan.ywcfh') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('form.operate')" fixed="right" align="center" width="200">
<el-table-column :label="$t('form.operate')" align="left" fixed="right" width="200">
<template slot-scope="scope">
<!-- 表单状态1填报中3已提交5已完成经复核;7已完成 -->
<!-- 详情 -->
<el-button type="text" @click="detail(scope.row)" v-hasPermi="['business:studyFormPlan:xq']">{{
$t('form.detail') }}</el-button>
<!-- 编辑 -->
<el-button type="text" v-if="scope.row.bdzt === 1 || scope.row.bdzt === 5 || scope.row.bdzt === 7"
@click="edit(scope.row)" v-hasPermi="['business:studyFormPlan:bj']">{{
$t('form.edit') }}</el-button>
<!-- 复核 -->
<el-button type="text" v-if="scope.row.bdzt === 3" @click="fh(scope.row)"
v-hasPermi="['business:studyFormPlan:fh']">{{
$t('page.business.study.studyFormPlan.fh') }}</el-button>
<!-- 更换归属人 -->
<el-button type="text"
v-if="scope.row.bdzt === 1 || scope.row.bdzt === 3 || scope.row.bdzt === 5 || scope.row.bdzt === 7"
@click="ghgsr(scope.row)" v-hasPermi="['business:studyFormPlan:ghgsr']">{{
$t('page.business.study.studyFormPlan.ghgsr') }}</el-button>
<!-- 审阅 -->
<el-button type="text" v-if="scope.row.bdzt === 5 || scope.row.bdzt === 7" @click="sy(scope.row)"
v-hasPermi="['business:studyFormPlan:sy']">{{
$t('page.business.study.studyFormPlan.sy') }}</el-button>
</template>
</el-table-column>
</el-table>
@ -72,20 +92,34 @@
@pagination="getList" />
</div>
</div>
<!-- 编辑 -->
<Bj v-show="showEdit" key="Bj" ref="Bj" @close="bjClose" />
<!-- 详情 -->
<Xq v-show="showDetail" key="Xq" ref="Xq" @close="xqClose" />
<!-- 审阅 -->
<Sy v-show="showAudit" key="Sy" ref="Sy" @close="syClose" />
<!-- 复核 -->
<Fh v-show="showFh" key="Fh" ref="Fh" @close="fhClose" />
<!-- 更换归属人 -->
<Ghgsr key="Ghgsr" ref="Ghgsr" @callback="search" />
<SelectDeptUserDialog ref="selectDeptUserDialog" @change="ghgsrChange" />
</div>
</template>
<script>
import {
studyFormPlan_list
} from '@/api/business/study/studyFormPlan'
import { studyFormPlan_list } from '@/api/business/study/studyFormPlan'
import Bj from "./jhbd/Bj";
import Xq from "./jhbd/Xq";
import Sy from "./jhbd/Sy";
import Fh from "./jhbd/Fh";
import Ghgsr from "./jhbd/Ghgsr";
import SelectDeptUser from '@/views/business/comps/select/SelectDeptUser';
import moment from "moment";
import SelectDeptUserDialog from '@/views/business/comps/select/SelectDeptUserDialog';
import { mapGetters } from 'vuex'
import moment from "moment";
export default {
name: 'JhbdList',
components: { SelectDeptUser },
name: 'YtbdList',
props: {
study: {
type: Object,
@ -103,14 +137,20 @@ export default {
study: {
handler(newVal) {
this.searchForm.studyId = newVal.studyId
this.leader = newVal.leader
this.search()
},
immediate: true,
deep: true
}
},
components: { Ghgsr, Fh, Bj, Xq, Sy, SelectDeptUser, SelectDeptUserDialog },
data() {
return {
leader: null,
showFh: false,
showAudit: false,
showEdit: false,
showDetail: false,
daterange: [],
searchForm: {
@ -121,17 +161,25 @@ export default {
bdmc: '',
userId: '',
userMc: '',
startDate: '',
endDate: '',
cjsjjs: '',
cjsjks: '',
},
loading: false,
total: 0,
list: [],
currentRow: null
}
},
created() { },
methods: {
userChange(val) {
ghgsr(row) {
this.currentRow = row
this.$refs.selectDeptUserDialog.show(null, null)
},
ghgsrChange(val) {
this.$refs.Ghgsr.show({ id: this.currentRow.id, userId: val.id, userMc: val.name })
},
userChange(val) {
this.searchForm.userId = val.id
this.searchForm.userMc = val.name
this.search()
@ -146,11 +194,11 @@ export default {
},
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.searchForm.startDate = this.daterange[0]
this.searchForm.endDate = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
this.searchForm.cjsjks = this.daterange[0]
this.searchForm.cjsjjs = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
} else {
this.searchForm.startDate = ''
this.searchForm.endDate = ''
this.searchForm.cjsjks = ''
this.searchForm.cjsjjs = ''
}
this.loading = true
studyFormPlan_list(this.searchForm).then(response => {
@ -158,23 +206,71 @@ export default {
this.total = response.total
this.loading = false
})
}
},
add() {
this.showEdit = true
this.$emit('showDetail', this.showEdit)
this.$refs.Bj.edit({ studyId: this.searchForm.studyId, studySubjectId: this.searchForm.studySubjectId })
},
edit(row) {
this.showEdit = true
this.$emit('showDetail', this.showEdit)
this.$refs.Bj.edit(row)
},
bjClose() {
this.showEdit = false
this.$emit('showDetail', this.showEdit)
this.search()
},
xqClose() {
this.showDetail = false
this.$emit('showDetail', this.showDetail)
this.search()
},
syClose() {
this.showAudit = false
this.$emit('showDetail', this.showAudit)
this.search()
},
fhClose() {
this.showFh = false
this.$emit('showDetail', this.showFh)
this.search()
},
detail(row) {
this.showDetail = true
this.$emit('showDetail', this.showDetail)
this.$refs.Xq.show(row)
},
sy(row) {
this.showAudit = true
this.$emit('showDetail', this.showAudit)
this.$refs.Sy.show(row)
},
fh(row) {
this.showFh = true
this.$emit('showDetail', this.showFh)
this.$refs.Fh.show(row)
},
}
}
</script>
<style lang="scss" scoped>
.jhbd-list {
.jhbd-search {
.tbbd-list {
.tbbd-search {
background: #fff;
margin-bottom: 10px;
padding: 10px;
.right-btn {
text-align: right
}
}
.jhbd-content {
.tbbd-content {
background: #fff;
padding: 10px;
.add-box {
margin-bottom: 10px;

+ 3
- 4
src/views/business/study/comp/syxx.vue View File

@ -1,6 +1,6 @@
<template>
<div class="study-syxx">
<div class="syxx-top" v-show="!showDetail">
<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>
@ -118,6 +118,7 @@ export default {
</script>
<style lang="scss" scoped>
.study-syxx {
.syxx-top {
background: #fff;
padding: 20px;
@ -155,9 +156,7 @@ export default {
}
.syxx-content {
background: #fff;
padding: 20px;
margin-top: 10px;
}
}
</style>

Loading…
Cancel
Save