luojie 3 months ago
parent
commit
9ced0a6f54
29 changed files with 612 additions and 77 deletions
  1. +1
    -0
      package.json
  2. +9
    -0
      src/api/business/home/home.js
  3. +29
    -1
      src/api/business/study/studyFormPre.js
  4. BIN
      src/assets/images/home-icon1.jpg
  5. +4
    -1
      src/lang/en.js
  6. +2
    -0
      src/lang/en/business/form/form.js
  7. +9
    -0
      src/lang/en/business/home/home.js
  8. +31
    -31
      src/lang/en/business/resource/zcg.js
  9. +1
    -1
      src/lang/en/business/study/studyFormApply.js
  10. +2
    -2
      src/lang/en/business/study/studyFormFill.js
  11. +1
    -1
      src/lang/en/business/study/studyFormPlan.js
  12. +6
    -2
      src/lang/en/business/study/studyFormPre.js
  13. +19
    -19
      src/lang/en/business/study/studyMethod.js
  14. +3
    -0
      src/lang/zh.js
  15. +3
    -1
      src/lang/zh/business/form/form.js
  16. +9
    -0
      src/lang/zh/business/home/home.js
  17. +5
    -1
      src/lang/zh/business/study/studyFormPre.js
  18. +36
    -0
      src/utils/encryptUtil.js
  19. +3
    -3
      src/utils/index.js
  20. +1
    -1
      src/views/business/form/drug/comp/tbbdList.vue
  21. +21
    -2
      src/views/business/form/drug/comp/ytbdList.vue
  22. +1
    -1
      src/views/business/form/nonTrial/comp/tbbdList.vue
  23. +21
    -1
      src/views/business/form/nonTrial/comp/ytbdList.vue
  24. +1
    -2
      src/views/business/study/comp/tbbdList.vue
  25. +4
    -4
      src/views/business/study/comp/ytbd/Bj.vue
  26. +116
    -0
      src/views/business/study/comp/ytbd/Gb.vue
  27. +132
    -0
      src/views/business/study/comp/ytbd/Qrgb.vue
  28. +25
    -2
      src/views/business/study/comp/ytbdList.vue
  29. +117
    -1
      src/views/index.vue

+ 1
- 0
package.json View File

@ -28,6 +28,7 @@
"axios": "0.28.1", "axios": "0.28.1",
"clipboard": "2.0.8", "clipboard": "2.0.8",
"core-js": "3.37.1", "core-js": "3.37.1",
"crypto-js": "^4.2.0",
"echarts": "5.4.0", "echarts": "5.4.0",
"element-ui": "2.15.14", "element-ui": "2.15.14",
"file-saver": "2.0.5", "file-saver": "2.0.5",

+ 9
- 0
src/api/business/home/home.js View File

@ -0,0 +1,9 @@
import request from '@/utils/request'
export function home_count(query) {
return request({
url: '/system/business/home/count',
method: 'get',
params: query
})
}

+ 29
- 1
src/api/business/study/studyFormPre.js View File

@ -107,4 +107,32 @@ export function studyFormPre_updateBdnr(data) {
method: 'post', method: 'post',
data: data data: data
}) })
}
}
//申请关闭
export function studyFormPre_sqgb(data) {
return request({
url: '/system/business/studyFormPre/sqgb',
method: 'post',
data: data
})
}
//同意关闭
export function studyFormPre_tygb(data) {
return request({
url: '/system/business/studyFormPre/tygb',
method: 'post',
data: data
})
}
//拒绝关闭
export function studyFormPre_jjgb(data) {
return request({
url: '/system/business/studyFormPre/jjgb',
method: 'post',
data: data
})
}

BIN
src/assets/images/home-icon1.jpg View File

Before After
Width: 72  |  Height: 72  |  Size: 1.5 KiB

+ 4
- 1
src/lang/en.js View File

@ -1,3 +1,5 @@
// 工作台-首页
import home from './en/business/home/home'
//系统管理 //系统管理
// 菜单管理 // 菜单管理
import menu from './en/system/menu' import menu from './en/system/menu'
@ -90,7 +92,7 @@ export default {
signer: 'Signed By', signer: 'Signed By',
signerUser: 'Signed User', signerUser: 'Signed User',
signerPsw: 'Password', signerPsw: 'Password',
qmyy: 'Purpose',
qmyy: 'Meaning of Signature',
signTime: '签名时间', signTime: '签名时间',
remark: 'Comment', remark: 'Comment',
reason: 'Reason', reason: 'Reason',
@ -140,6 +142,7 @@ export default {
template template
}, },
business: { business: {
home: home,
resource: { resource: {
resource: resource, resource: resource,
zcg: zcg, zcg: zcg,

+ 2
- 0
src/lang/en/business/form/form.js View File

@ -18,6 +18,8 @@ export default {
statusYtj: 'Submitted', statusYtj: 'Submitted',
statusYtg: 'Approved', statusYtg: 'Approved',
statusWtg: 'Rejected', statusWtg: 'Rejected',
statusDgb: 'To be closed',
statusYgb: 'Closed',
audit: 'Approve', audit: 'Approve',
detail: 'Enter', detail: 'Enter',

+ 9
- 0
src/lang/en/business/home/home.js View File

@ -0,0 +1,9 @@
export default {
jrxzbd: 'Recent Record',
ytjbd: 'Submitted',
dtjbd: 'Saved',
bzxzsy: 'Weekly New Study',
ywcsy: 'Completed Study',
xttz: 'Notification'
}

+ 31
- 31
src/lang/en/business/resource/zcg.js View File

@ -1,32 +1,32 @@
export default { export default {
ysbh: 'Locker',
jyr: 'Key User',
zt: 'Status',
jyz: 'In Use',
wjy: 'Not in Use',
plgh: 'Batch Return',
zcg: 'Locker',
ys1jyr: 'Key 1 User',
ys2jyr: 'Key 2 User',
glyj: 'Contained Substance',
ysff: 'Issue Key',
gh: 'Return',
ysgh: 'Return Key',
ysghts:'请确认是否归还以下钥匙',
ghr1Id:'Key 1 Returner',
ghr1mm:'Key 1 Returner Password',
ghr2Id:'Key 2 Returner',
ghr2mm:'Key 2 Returner Password',
jsr:'接收人',
jsrmm:'接收人密码',
qmyy:'Purpose',
remark:'Comment',
lqr1Id:'Key 1 Recipient',
lqr1mm:'Key 1 Recipient Password',
lqr2Id:'Key 2 Recipient',
lqr2mm:'Key 2 Recipient Password',
ffr:'Issuer',
ffrmm:'Issuer Password',
qysff:'Key Distribution',
qysgh:'Return Key'
}
ysbh: 'Locker',
jyr: 'Key User',
zt: 'Status',
jyz: 'In Use',
wjy: 'Not in Use',
plgh: 'Batch Return',
zcg: 'Locker',
ys1jyr: 'Key 1 User',
ys2jyr: 'Key 2 User',
glyj: 'Contained Substance',
ysff: 'Issue Key',
gh: 'Return',
ysgh: 'Return Key',
ysghts: '请确认是否归还以下钥匙',
ghr1Id: 'Key 1 Returner',
ghr1mm: 'Key 1 Returner Password',
ghr2Id: 'Key 2 Returner',
ghr2mm: 'Key 2 Returner Password',
jsr: '接收人',
jsrmm: '接收人密码',
qmyy: 'Meaning of Signature',
remark: 'Comment',
lqr1Id: 'Key 1 Recipient',
lqr1mm: 'Key 1 Recipient Password',
lqr2Id: 'Key 2 Recipient',
lqr2mm: 'Key 2 Recipient Password',
ffr: 'Issuer',
ffrmm: 'Issuer Password',
qysff: 'Key Distribution',
qysgh: 'Return Key'
}

+ 1
- 1
src/lang/en/business/study/studyFormApply.js View File

@ -18,7 +18,7 @@ export default {
bdnr: '表单内容', bdnr: '表单内容',
qmxx: 'Signature information', qmxx: 'Signature information',
qmr: 'Signed By', qmr: 'Signed By',
qmyy: 'Purpose',
qmyy: 'Meaning of Signature',
qmsj: 'Date', qmsj: 'Date',
bzyy: 'Comment/Reason', bzyy: 'Comment/Reason',
jcgj: 'Track Record', jcgj: 'Track Record',

+ 2
- 2
src/lang/en/business/study/studyFormFill.js View File

@ -26,7 +26,7 @@ export default {
bdnr: '表单内容', bdnr: '表单内容',
qmxx: 'Signature information', qmxx: 'Signature information',
qmr: 'Signed By', qmr: 'Signed By',
qmyy: 'Purpose',
qmyy: 'Meaning of Signature',
qmsj: 'Date', qmsj: 'Date',
bzyy: 'Comment/Reason', bzyy: 'Comment/Reason',
jcgj: 'Track Record', jcgj: 'Track Record',
@ -71,5 +71,5 @@ export default {
smxz: 'Declaration of Collaboration', smxz: 'Declaration of Collaboration',
bcsm: 'Additional Remark', bcsm: 'Additional Remark',
fztgjj: '废止通过/拒绝', fztgjj: '废止通过/拒绝',
ysy: 'Reviewed',
ysy: 'Reviewed'
} }

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

@ -15,7 +15,7 @@ export default {
bdnr: '表单内容', bdnr: '表单内容',
qmxx: 'Signature information', qmxx: 'Signature information',
qmr: 'Signed By', qmr: 'Signed By',
qmyy: 'Purpose',
qmyy: 'Meaning of Signature',
qmsj: 'Date', qmsj: 'Date',
bzyy: 'Comment/Reason', bzyy: 'Comment/Reason',
jcgj: 'Track Record', jcgj: 'Track Record',

+ 6
- 2
src/lang/en/business/study/studyFormPre.js View File

@ -19,7 +19,7 @@ export default {
bdnr: '表单内容', bdnr: '表单内容',
qmxx: 'Signature information', qmxx: 'Signature information',
qmr: 'Signed By', qmr: 'Signed By',
qmyy: 'Purpose',
qmyy: 'Meaning of Signature',
qmsj: 'Date', qmsj: 'Date',
bzyy: 'Comment/Reason', bzyy: 'Comment/Reason',
jcgj: 'Track Record', jcgj: 'Track Record',
@ -35,5 +35,9 @@ export default {
fzyybd: 'Copy Existing Preset', fzyybd: 'Copy Existing Preset',
yes: 'Yes', yes: 'Yes',
no: 'No', no: 'No',
zztjyzbd: 'Submit Record Preset'
zztjyzbd: 'Submit Record Preset',
sqgb: 'Apply Close',
qrgb: 'Confirm Close',
gbtgjj:'Close Approve/Reject',
guanbi:'Close'
} }

+ 19
- 19
src/lang/en/business/study/studyMethod.js View File

@ -1,20 +1,20 @@
export default { export default {
ffmc: 'Name',
cjr: 'Creator',
cjsj: 'Creation Date',
scff: 'Upload',
scwj: 'Upload File',
wjm:'Allowed Format: .pdf',
zt: 'Status',
yuedu: 'Read',
daochu: 'Download',
mc: 'Name',
ff: 'Method',
qmhz: '签名汇总',
yidu: 'Read',
weidu: 'Unread',
qmr: 'Signed By',
qmsj: 'Date',
qmyy: 'Purpose',
remark: 'Comment',
}
ffmc: 'Name',
cjr: 'Creator',
cjsj: 'Creation Date',
scff: 'Upload',
scwj: 'Upload File',
wjm: 'Allowed Format: .pdf',
zt: 'Status',
yuedu: 'Read',
daochu: 'Download',
mc: 'Name',
ff: 'Method',
qmhz: '签名汇总',
yidu: 'Read',
weidu: 'Unread',
qmr: 'Signed By',
qmsj: 'Date',
qmyy: 'Meaning of Signature',
remark: 'Comment'
}

+ 3
- 0
src/lang/zh.js View File

@ -1,3 +1,5 @@
// 工作台-首页
import home from './zh/business/home/home'
//系统管理 //系统管理
// 菜单管理 // 菜单管理
import menu from './zh/system/menu' import menu from './zh/system/menu'
@ -135,6 +137,7 @@ export default {
template template
}, },
business: { business: {
home: home,
resource: { resource: {
resource: resource, resource: resource,
zcg: zcg, zcg: zcg,

+ 3
- 1
src/lang/zh/business/form/form.js View File

@ -18,7 +18,9 @@ export default {
statusYtj: '已提交', statusYtj: '已提交',
statusYtg: '已通过', statusYtg: '已通过',
statusWtg: '未通过', statusWtg: '未通过',
statusDgb: '待关闭',
statusYgb: '已关闭',
audit: '审核', audit: '审核',
detail: '表单详情', detail: '表单详情',
//填报表单 //填报表单

+ 9
- 0
src/lang/zh/business/home/home.js View File

@ -0,0 +1,9 @@
export default {
jrxzbd: '今日新增表单',
ytjbd: '已提交表单',
dtjbd: '待提交表单',
bzxzsy: '本周新增试验',
ywcsy: '已完成试验',
xttz: '系统通知'
}

+ 5
- 1
src/lang/zh/business/study/studyFormPre.js View File

@ -36,5 +36,9 @@ export default {
fzyybd: '复制已有表单', fzyybd: '复制已有表单',
yes: '是', yes: '是',
no: '否', no: '否',
zztjyzbd: '制作提交预制表单'
zztjyzbd: '制作提交预制表单',
sqgb: '申请关闭',
qrgb: '确认关闭',
gbtgjj:'关闭通过/拒绝',
guanbi:'关闭'
} }

+ 36
- 0
src/utils/encryptUtil.js View File

@ -0,0 +1,36 @@
const CRYPTOJSKEY = '7LrjnqHv2mS5Qr5s'
import CryptoJS from 'crypto-js'
export function encrypt(plaintText) {
var plaintText = plaintText
var options = {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
}
var key = CryptoJS.enc.Utf8.parse(CRYPTOJSKEY)
var encryptedData = CryptoJS.AES.encrypt(plaintText, key, options)
var encryptedBase64Str = encryptedData.toString().replace(/\//g, '_')
encryptedBase64Str = encryptedBase64Str.replace(/\+/g, '-')
return encryptedBase64Str
}
export function decrypt(encryptedText) {
// 还原 URL 安全字符
let encryptedBase64Str = encryptedText
.replace(/_/g, '/') // 还原 _
.replace(/-/g, '+') // 还原 -
// 补充末尾的 =(如果需要)
const mod4 = encryptedBase64Str.length % 4
if (mod4) {
encryptedBase64Str += '='.repeat(4 - mod4)
}
try {
const key = CryptoJS.enc.Utf8.parse(CRYPTOJSKEY)
const decrypt = CryptoJS.AES.decrypt(encryptedBase64Str, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})
return CryptoJS.enc.Utf8.stringify(decrypt).toString()
} catch (e) {
console.error('解密失败:', e)
return null
}
}

+ 3
- 3
src/utils/index.js View File

@ -1,5 +1,5 @@
import { parseTime } from './ruoyi' import { parseTime } from './ruoyi'
import { encrypt,decrypt } from '@/utils/encryptUtil'
/** /**
* 表格时间格式化 * 表格时间格式化
*/ */
@ -390,11 +390,11 @@ export function isNumberStr(str) {
// 编码 // 编码
export function caesarCipher(str) { export function caesarCipher(str) {
return btoa(btoa(str))
return btoa(encrypt(str))
} }
// 解码 // 解码
export function caesarDecipher(str) { export function caesarDecipher(str) {
return atob(atob(str));
return decrypt(atob(str));
} }

+ 1
- 1
src/views/business/form/drug/comp/tbbdList.vue View File

@ -321,7 +321,7 @@ export default {
studyId: this.searchForm.studyId, studyId: this.searchForm.studyId,
formId: null formId: null
})) }))
this.$tab.openPage("新增表单", '/drug/formFillBj/' + params)
this.$tab.openPage(this.$t('page.business.study.studyFormFill.xzbd'), '/drug/formFillBj/' + params)
}, },
edit(row) { edit(row) {
// this.showEdit = true // this.showEdit = true

+ 21
- 2
src/views/business/form/drug/comp/ytbdList.vue View File

@ -71,6 +71,8 @@
<span v-if="scope.row.bdzt === 1">{{ $t('page.business.form.statusTbz') }}</span> <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 === 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 === 5">{{ $t('page.business.form.statusYtg') }}</span>
<span v-if="scope.row.bdzt === 9">{{ $t('page.business.form.statusDgb') }}</span>
<span v-if="scope.row.bdzt === 11">{{ $t('page.business.form.statusYgb') }}</span>
</template> </template>
</el-table-column> </el-table-column>
@ -102,6 +104,12 @@
<el-button type="text" @click="audit(scope.row)" v-hasPermi="['business:drugFormPre:sh']" <el-button type="text" @click="audit(scope.row)" v-hasPermi="['business:drugFormPre:sh']"
v-if="scope.row.bdzt === 3">{{ $t('page.business.form.audit') }}</el-button> v-if="scope.row.bdzt === 3">{{ $t('page.business.form.audit') }}</el-button>
</template> </template>
<template v-if="scope.row.bdzt === 5&&id==scope.row.userId">
<el-button type="text" @click="gb(scope.row)">{{ $t('page.business.study.studyFormPre.guanbi') }}</el-button>
</template>
<template v-if="scope.row.bdzt === 9&&id==scope.row.sjshryId">
<el-button type="text" @click="qrgb(scope.row)">{{ $t('page.business.study.studyFormPre.qrgb') }}</el-button>
</template>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -116,6 +124,10 @@
<Xq v-show="showDetail" key="Xq" ref="Xq" @close="xqClose" /> <Xq v-show="showDetail" key="Xq" ref="Xq" @close="xqClose" />
<!-- 审核 --> <!-- 审核 -->
<Sh v-show="showAudit" key="Sh" ref="Sh" @close="shClose" /> <Sh v-show="showAudit" key="Sh" ref="Sh" @close="shClose" />
<!-- 关闭 -->
<Gb key="Gb" ref="Gb" @callback="search" />
<!-- 确认关闭 -->
<Qrgb key="Qrgb" ref="Qrgb" @callback="search" />
<el-dialog :title="$t('page.business.study.studyFormPre.xjbd')" :visible.sync="open" width="500px" append-to-body <el-dialog :title="$t('page.business.study.studyFormPre.xjbd')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false"> :close-on-click-modal="false">
<el-form ref="form" label-width="120px"> <el-form ref="form" label-width="120px">
@ -183,6 +195,8 @@ import TemplateTable from '@/views/business/comps/template/TemplateTable';
import Bj from "@/views/business/study/comp/ytbd/Bj"; import Bj from "@/views/business/study/comp/ytbd/Bj";
import Xq from "@/views/business/study/comp/ytbd/Xq"; import Xq from "@/views/business/study/comp/ytbd/Xq";
import Sh from "@/views/business/study/comp/ytbd/Sh"; import Sh from "@/views/business/study/comp/ytbd/Sh";
import Gb from "@/views/business/study/comp/ytbd/Gb";
import Qrgb from "@/views/business/study/comp/ytbd/Qrgb";
import SelectDeptUser from '@/views/business/comps/select/SelectDeptUser'; import SelectDeptUser from '@/views/business/comps/select/SelectDeptUser';
import Sign from './sign.vue' import Sign from './sign.vue'
import moment from "moment"; import moment from "moment";
@ -218,7 +232,7 @@ export default {
deep: true deep: true
} }
}, },
components: { Bj, Xq, Sh, SelectDeptUser, TemplateTable, Sign },
components: { Qrgb,Gb,Bj, Xq, Sh, SelectDeptUser, TemplateTable, Sign },
data() { data() {
return { return {
formCount: 0, formCount: 0,
@ -409,7 +423,12 @@ export default {
this.$emit('showDetail', this.showAudit) this.$emit('showDetail', this.showAudit)
this.$refs.Sh.show(row) this.$refs.Sh.show(row)
}, },
gb(row) {
this.$refs.Gb.show(row)
},
qrgb(row) {
this.$refs.Qrgb.show(row)
},
sdsy() { sdsy() {
this.$modal.loading() this.$modal.loading()
drug_checkSd({ drug_checkSd({

+ 1
- 1
src/views/business/form/nonTrial/comp/tbbdList.vue View File

@ -322,7 +322,7 @@ export default {
studyId: this.searchForm.studyId, studyId: this.searchForm.studyId,
formId: null formId: null
})) }))
this.$tab.openPage("新增表单", '/nonTrial/formFillBj/' + params)
this.$tab.openPage(this.$t('page.business.study.studyFormFill.xzbd'), '/nonTrial/formFillBj/' + params)
}, },
edit(row) { edit(row) {
// this.showEdit = true // this.showEdit = true

+ 21
- 1
src/views/business/form/nonTrial/comp/ytbdList.vue View File

@ -72,6 +72,8 @@
<span v-if="scope.row.bdzt === 1">{{ $t('page.business.form.statusTbz') }}</span> <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 === 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 === 5">{{ $t('page.business.form.statusYtg') }}</span>
<span v-if="scope.row.bdzt === 9">{{ $t('page.business.form.statusDgb') }}</span>
<span v-if="scope.row.bdzt === 11">{{ $t('page.business.form.statusYgb') }}</span>
</template> </template>
</el-table-column> </el-table-column>
@ -103,6 +105,12 @@
<el-button type="text" @click="audit(scope.row)" v-hasPermi="['business:nonTrialFormPre:sh']" <el-button type="text" @click="audit(scope.row)" v-hasPermi="['business:nonTrialFormPre:sh']"
v-if="scope.row.bdzt === 3">{{ $t('page.business.form.audit') }}</el-button> v-if="scope.row.bdzt === 3">{{ $t('page.business.form.audit') }}</el-button>
</template> </template>
<template v-if="scope.row.bdzt === 5&&id==scope.row.userId">
<el-button type="text" @click="gb(scope.row)">{{ $t('page.business.study.studyFormPre.guanbi') }}</el-button>
</template>
<template v-if="scope.row.bdzt === 9&&id==scope.row.sjshryId">
<el-button type="text" @click="qrgb(scope.row)">{{ $t('page.business.study.studyFormPre.qrgb') }}</el-button>
</template>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -117,6 +125,10 @@
<Xq v-show="showDetail" key="Xq" ref="Xq" @close="xqClose" /> <Xq v-show="showDetail" key="Xq" ref="Xq" @close="xqClose" />
<!-- 审核 --> <!-- 审核 -->
<Sh v-show="showAudit" key="Sh" ref="Sh" @close="shClose" /> <Sh v-show="showAudit" key="Sh" ref="Sh" @close="shClose" />
<!-- 关闭 -->
<Gb key="Gb" ref="Gb" @callback="search" />
<!-- 确认关闭 -->
<Qrgb key="Qrgb" ref="Qrgb" @callback="search" />
<el-dialog :title="$t('page.business.study.studyFormPre.xjbd')" :visible.sync="open" width="500px" append-to-body <el-dialog :title="$t('page.business.study.studyFormPre.xjbd')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false"> :close-on-click-modal="false">
<el-form ref="form" label-width="120px"> <el-form ref="form" label-width="120px">
@ -184,6 +196,8 @@ import TemplateTable from '@/views/business/comps/template/TemplateTable';
import Bj from "@/views/business/study/comp/ytbd/Bj"; import Bj from "@/views/business/study/comp/ytbd/Bj";
import Xq from "@/views/business/study/comp/ytbd/Xq"; import Xq from "@/views/business/study/comp/ytbd/Xq";
import Sh from "@/views/business/study/comp/ytbd/Sh"; import Sh from "@/views/business/study/comp/ytbd/Sh";
import Gb from "@/views/business/study/comp/ytbd/Gb";
import Qrgb from "@/views/business/study/comp/ytbd/Qrgb";
import SelectDeptUser from '@/views/business/comps/select/SelectDeptUser'; import SelectDeptUser from '@/views/business/comps/select/SelectDeptUser';
import Sign from './sign.vue' import Sign from './sign.vue'
import moment from "moment"; import moment from "moment";
@ -219,7 +233,7 @@ export default {
deep: true deep: true
} }
}, },
components: { Bj, Xq, Sh, SelectDeptUser, TemplateTable, Sign },
components: { Qrgb,Gb,Bj, Xq, Sh, SelectDeptUser, TemplateTable, Sign },
data() { data() {
return { return {
formCount: 0, formCount: 0,
@ -410,6 +424,12 @@ export default {
this.$emit('showDetail', this.showAudit) this.$emit('showDetail', this.showAudit)
this.$refs.Sh.show(row) this.$refs.Sh.show(row)
}, },
gb(row) {
this.$refs.Gb.show(row)
},
qrgb(row) {
this.$refs.Qrgb.show(row)
},
sdsy() { sdsy() {
this.$modal.loading() this.$modal.loading()
nonTrial_checkSd({ nonTrial_checkSd({

+ 1
- 2
src/views/business/study/comp/tbbdList.vue View File

@ -329,7 +329,7 @@ export default {
studyId: this.searchForm.studyId, studyId: this.searchForm.studyId,
id:null id:null
})) }))
this.$tab.openPage("新增表单", '/study/formFillBj/'+params)
this.$tab.openPage(this.$t('page.business.study.studyFormFill.xzbd'), '/study/formFillBj/'+params)
}, },
edit(row) { edit(row) {
// this.showEdit = true // this.showEdit = true
@ -340,7 +340,6 @@ export default {
studyId: this.searchForm.studyId, studyId: this.searchForm.studyId,
formId:row.id formId:row.id
})) }))
debugger
this.$tab.openPage(row.bdmc, '/study/formFillBj/' +params) this.$tab.openPage(row.bdmc, '/study/formFillBj/' +params)
}, },
bjClose() { bjClose() {

+ 4
- 4
src/views/business/study/comp/ytbd/Bj.vue View File

@ -138,7 +138,7 @@
</template> </template>
<script> <script>
import { studyFormPre_bc, studyFormPre_tj, studyFormPre_info,studyFormPre_updateBdnr } from "@/api/business/study/studyFormPre"
import { studyFormPre_bc, studyFormPre_tj, studyFormPre_info, studyFormPre_updateBdnr } from "@/api/business/study/studyFormPre"
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import SelectTemplate from "@/views/business/comps/select/SelectTemplate"; import SelectTemplate from "@/views/business/comps/select/SelectTemplate";
import SelectStudyUser from '@/views/business/comps/select/SelectStudyUser'; import SelectStudyUser from '@/views/business/comps/select/SelectStudyUser';
@ -202,8 +202,8 @@ export default {
{ {
id: this.form.id, id: this.form.id,
bdnr: JSON.stringify(this.$refs.templateTable.getFilledFormData()), bdnr: JSON.stringify(this.$refs.templateTable.getFilledFormData()),
zdxgjl: JSON.stringify(data.resourceList),
filedValue: JSON.stringify(data.newRecord)
// zdxgjl: JSON.stringify(data.resourceList),
// filedValue: JSON.stringify(data.newRecord)
} }
).then(response => { ).then(response => {
}) })
@ -263,7 +263,7 @@ export default {
this.showIndex = 2 this.showIndex = 2
this.$modal.loading() this.$modal.loading()
studyFormPre_info({ id: row.id }).then(response => { studyFormPre_info({ id: row.id }).then(response => {
this.form = response.data
this.form = _.merge({}, response.data, { permitForSecectUser: row.permitForSecectUser })
this.form.qmyy = this.$t('page.business.study.studyFormPre.zztjyzbd') this.form.qmyy = this.$t('page.business.study.studyFormPre.zztjyzbd')
this.templateData = deepClone(this.form) this.templateData = deepClone(this.form)
this.$modal.closeLoading() this.$modal.closeLoading()

+ 116
- 0
src/views/business/study/comp/ytbd/Gb.vue View File

@ -0,0 +1,116 @@
<template>
<div>
<el-dialog :title="$t('page.business.study.studyFormPre.sqgb')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<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('form.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 { studyFormPre_sqgb } from "@/api/business/study/studyFormPre"
import { mapGetters } from 'vuex'
export default {
name: "Sqgb",
components: {},
data() {
return {
isBatch: false,
ids: [],
selectList: [],
open: false,
form: {},
rules: {
qmrmm: [{
required: true,
message: ' ',
trigger: 'blur'
}],
remark: [{
required: true,
message: ' ',
trigger: 'blur'
}],
}
}
},
computed: {
...mapGetters([
'nickName','name'
]),
},
created() {
},
methods: {
cancel() {
this.open = false
},
reset() {
this.form = {
id: null,
qmyy: this.$t('page.business.study.studyFormPre.sqgb'),
remark: null,
qmrmm: null
}
this.resetForm("form")
},
show(row) {
this.reset()
this.form.id = row.id
this.open = true
},
save() {
this.$refs["form"].validate(valid => {
if (valid) {
studyFormPre_sqgb(this.form).then(response => {
this.open = false
this.$emit('callback')
}).finally(() => {
this.$modal.closeLoading()
})
}
})
}
}
}
</script>

+ 132
- 0
src/views/business/study/comp/ytbd/Qrgb.vue View File

@ -0,0 +1,132 @@
<template>
<div>
<el-dialog :title="$t('page.business.study.studyFormPre.qrgb')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<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('form.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" style="text-align: center !important;">
<el-button type="danger" @click="reject">{{ $t('page.business.study.studyFormPre.reject') }}</el-button>
<el-button type="primary" @click="approve">{{ $t('page.business.study.studyFormPre.approve') }}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { studyFormPre_tygb,studyFormPre_jjgb } from "@/api/business/study/studyFormPre"
import { mapGetters } from 'vuex'
export default {
name: "Qrfz",
components: {},
data() {
return {
isBatch: false,
ids: [],
selectList: [],
open: false,
form: {},
rules: {
qmrmm: [{
required: true,
message: ' ',
trigger: 'blur'
}],
remark: [{
required: true,
message: ' ',
trigger: 'blur'
}],
}
}
},
computed: {
...mapGetters([
'nickName','name'
]),
},
created() {
},
methods: {
cancel() {
this.open = false
},
reset() {
this.form = {
id: null,
qmyy: this.$t('page.business.study.studyFormPre.gbtgjj'),
remark: null,
qmrmm: null
}
this.resetForm("form")
},
show(row) {
this.reset()
this.form.id = row.id
this.open = true
},
reject() {
this.$refs["form"].validate(valid => {
if (valid) {
this.$modal.loading()
studyFormPre_jjgb(this.form).then(response => {
this.open = false
this.$emit('callback')
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
}
})
},
approve() {
this.$refs["form"].validate(valid => {
if (valid) {
this.$modal.loading()
studyFormPre_tygb(this.form).then(response => {
this.open = false
this.$emit('callback')
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
}
})
}
}
}
</script>

+ 25
- 2
src/views/business/study/comp/ytbdList.vue View File

@ -69,6 +69,8 @@
<span v-if="scope.row.bdzt === 3">{{ $t('page.business.form.statusYtj') }}</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 === 5">{{ $t('page.business.form.statusYtg') }}</span>
<span v-if="scope.row.bdzt === 7">{{ $t('page.business.form.statusWtg') }}</span> <span v-if="scope.row.bdzt === 7">{{ $t('page.business.form.statusWtg') }}</span>
<span v-if="scope.row.bdzt === 9">{{ $t('page.business.form.statusDgb') }}</span>
<span v-if="scope.row.bdzt === 11">{{ $t('page.business.form.statusYgb') }}</span>
</template> </template>
</el-table-column> </el-table-column>
@ -100,6 +102,14 @@
<el-button type="text" @click="audit(scope.row)" v-hasPermi="['business:studyFormPre:sh']" <el-button type="text" @click="audit(scope.row)" v-hasPermi="['business:studyFormPre:sh']"
v-if="scope.row.bdzt === 3 && isMatchSubject">{{ $t('page.business.form.audit') }}</el-button> v-if="scope.row.bdzt === 3 && isMatchSubject">{{ $t('page.business.form.audit') }}</el-button>
</template> </template>
<template v-if="scope.row.bdzt === 5 && id == scope.row.userId">
<el-button type="text" @click="gb(scope.row)">{{ $t('page.business.study.studyFormPre.guanbi')
}}</el-button>
</template>
<template v-if="scope.row.bdzt === 9 && id == scope.row.sjshryId">
<el-button type="text" @click="qrgb(scope.row)">{{ $t('page.business.study.studyFormPre.qrgb')
}}</el-button>
</template>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -114,6 +124,11 @@
<Xq v-show="showDetail" key="Xq" ref="Xq" @close="xqClose" /> <Xq v-show="showDetail" key="Xq" ref="Xq" @close="xqClose" />
<!-- 审核 --> <!-- 审核 -->
<Sh v-show="showAudit" key="Sh" ref="Sh" @close="shClose" /> <Sh v-show="showAudit" key="Sh" ref="Sh" @close="shClose" />
<!-- 关闭 -->
<Gb key="Gb" ref="Gb" @callback="search" />
<!-- 确认关闭 -->
<Qrgb key="Qrgb" ref="Qrgb" @callback="search" />
<el-dialog :title="$t('page.business.study.studyFormPre.xjbd')" :visible.sync="open" width="500px" append-to-body <el-dialog :title="$t('page.business.study.studyFormPre.xjbd')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false"> :close-on-click-modal="false">
<el-form ref="form" label-width="120px"> <el-form ref="form" label-width="120px">
@ -178,6 +193,8 @@ import TemplateTable from '@/views/business/comps/template/TemplateTable';
import Bj from "./ytbd/Bj"; import Bj from "./ytbd/Bj";
import Xq from "./ytbd/Xq"; import Xq from "./ytbd/Xq";
import Sh from "./ytbd/Sh"; import Sh from "./ytbd/Sh";
import Gb from "./ytbd/Gb";
import Qrgb from "./ytbd/Qrgb";
import SelectDeptUser from '@/views/business/comps/select/SelectDeptUser'; import SelectDeptUser from '@/views/business/comps/select/SelectDeptUser';
import moment from "moment"; import moment from "moment";
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
@ -211,7 +228,7 @@ export default {
deep: true deep: true
} }
}, },
components: { Bj, Xq, Sh, SelectDeptUser, TemplateTable },
components: { Gb, Qrgb, Bj, Xq, Sh, SelectDeptUser, TemplateTable },
data() { data() {
return { return {
isMatchSubject: false, isMatchSubject: false,
@ -378,7 +395,7 @@ export default {
edit(row) { edit(row) {
this.showEdit = true this.showEdit = true
this.$emit('showDetail', this.showEdit) this.$emit('showDetail', this.showEdit)
this.$refs.Bj.edit(row)
this.$refs.Bj.edit(_.merge({}, row, { permitForSecectUser: 'business:studyFormPre:sh' }))
}, },
bjClose() { bjClose() {
this.showEdit = false this.showEdit = false
@ -400,6 +417,12 @@ export default {
this.$emit('showDetail', this.showDetail) this.$emit('showDetail', this.showDetail)
this.$refs.Xq.show(row, false) this.$refs.Xq.show(row, false)
}, },
gb(row) {
this.$refs.Gb.show(row)
},
qrgb(row) {
this.$refs.Qrgb.show(row)
},
audit(row) { audit(row) {
this.showAudit = true this.showAudit = true
this.$emit('showDetail', this.showAudit) this.$emit('showDetail', this.showAudit)

+ 117
- 1
src/views/index.vue View File

@ -1,21 +1,137 @@
<template> <template>
<div class="app-container home"> <div class="app-container home">
<h1>{{ $t('system.title') }}</h1>
<el-card class="box-card home-top">
<div class="count-box">
<div class="count-item">
<div class="count-left">
<img src="@/assets/images/home-icon1.jpg" />
</div>
<div class="count-right">
<div class="count-count">{{count.formTodayCount}}</div>
<div class="count-tip">{{$t('page.business.home.jrxzbd')}}</div>
</div>
</div>
<div class="count-item">
<div class="count-left">
<img src="@/assets/images/home-icon1.jpg" />
</div>
<div class="count-right">
<div class="count-count">{{count.formYtjCount}}</div>
<div class="count-tip">{{$t('page.business.home.ytjbd')}}</div>
</div>
</div>
<div class="count-item">
<div class="count-left">
<img src="@/assets/images/home-icon1.jpg" />
</div>
<div class="count-right">
<div class="count-count">{{count.formTbzCount}}</div>
<div class="count-tip">{{$t('page.business.home.dtjbd')}}</div>
</div>
</div>
<div class="count-item">
<div class="count-left">
<img src="@/assets/images/home-icon1.jpg" />
</div>
<div class="count-right">
<div class="count-count">{{count.studyFinishCount}}</div>
<div class="count-tip">{{$t('page.business.home.bzxzsy')}}</div>
</div>
</div>
<div class="count-item">
<div class="count-left">
<img src="@/assets/images/home-icon1.jpg" />
</div>
<div class="count-right">
<div class="count-count">{{count.studyWeekCount}}</div>
<div class="count-tip">{{$t('page.business.home.ywcsy')}}</div>
</div>
</div>
</div>
</el-card>
<el-card class="box-card home-content">
</el-card>
</div> </div>
</template> </template>
<script> <script>
import { home_count} from "@/api/business/home/home";
export default { export default {
name: "Index", name: "Index",
data() { data() {
return { return {
count:{
formTodayCount:'',
formYtjCount:'',
formTbzCount:'',
studyFinishCount:'',
studyWeekCount:'',
},
} }
}, },
created(){
this.getCount()
},
methods: { methods: {
getCount(){
this.count = {
formTodayCount:'',
formYtjCount:'',
formTbzCount:'',
studyFinishCount:'',
studyWeekCount:'',
}
this.$modal.loading()
home_count().then(response => {
this.count = response.data
})
.finally(() => {
this.$modal.closeLoading()
})
}
} }
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.home{
.home-top{
margin-bottom: 20px;
.count-box{
display: flex;
flex-direction: row;
align-items: center;
.count-item{
flex-shrink: 0;
width: 20%;
display: flex;
flex-direction: row;
align-items: center;
.count-left{
flex-shrink: 0;
img{
width: 60px;
}
}
.count-right{
flex-grow: 1;
margin-left: 20px;
.count-count{
font-size: 20px;
font-weight: bold;
}
.count-tip{
margin-top: 10px;
}
}
}
}
}
.home-content{
min-height: 400px;
}
}
</style> </style>

Loading…
Cancel
Save