Browse Source

Merge branch 'master' of http://182.151.8.209:9010

lkf
luojie 3 months ago
parent
commit
aad07c8db7
26 changed files with 1028 additions and 200 deletions
  1. +2
    -1
      package.json
  2. +8
    -1
      src/api/business/gyzj/gyzj.js
  3. +7
    -0
      src/api/business/home/home.js
  4. +8
    -0
      src/api/business/mjy/mjy.js
  5. +9
    -0
      src/api/business/study/studyFormFill.js
  6. +1
    -0
      src/lang/en/system/dept.js
  7. +14
    -10
      src/lang/en/template/commonTemplate.js
  8. +1
    -0
      src/lang/zh/system/dept.js
  9. +14
    -10
      src/lang/zh/template/commonTemplate.js
  10. +3
    -1
      src/views/business/comps/template/TemplateTable.vue
  11. +312
    -0
      src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/ZQDYJMD.vue
  12. +86
    -0
      src/views/business/comps/template/formConfig/SWYPFXFFXYPZBBTableConfig.js
  13. +1
    -1
      src/views/business/comps/template/mixins/templateMixin.js
  14. +138
    -96
      src/views/business/resource/gsp/comps/gsp/Xq.vue
  15. +252
    -0
      src/views/business/resource/gsp/comps/gsp/XqExport.vue
  16. +3
    -3
      src/views/business/resource/gyzj/comps/gyzj/Shbj.vue
  17. +2
    -2
      src/views/business/resource/gyzj/comps/gyzj/Shxgkc.vue
  18. +9
    -3
      src/views/business/resource/gyzj/comps/gyzj/Xq.vue
  19. +3
    -3
      src/views/business/resource/mjy/comps/mjy/Shbj.vue
  20. +2
    -2
      src/views/business/resource/mjy/comps/mjy/Shxgkc.vue
  21. +9
    -2
      src/views/business/resource/mjy/comps/mjy/Xq.vue
  22. +6
    -6
      src/views/business/study/comp/jhbd/Xq.vue
  23. +6
    -6
      src/views/business/study/comp/sqbd/Xq.vue
  24. +66
    -51
      src/views/business/study/comp/tbbd/Xq.vue
  25. +60
    -2
      src/views/index.vue
  26. +6
    -0
      src/views/system/dept/index.vue

+ 2
- 1
package.json View File

@ -37,7 +37,7 @@
"js-beautify": "1.13.0", "js-beautify": "1.13.0",
"js-cookie": "3.0.1", "js-cookie": "3.0.1",
"jsencrypt": "3.0.0-rc.1", "jsencrypt": "3.0.0-rc.1",
"jspdf": "^4.0.0",
"jspdf": "^2.5.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"moment": "^2.30.1", "moment": "^2.30.1",
"nprogress": "0.2.0", "nprogress": "0.2.0",
@ -49,6 +49,7 @@
"vue": "2.6.12", "vue": "2.6.12",
"vue-count-to": "1.0.13", "vue-count-to": "1.0.13",
"vue-cropper": "0.5.5", "vue-cropper": "0.5.5",
"vue-html2pdf": "^1.8.0",
"vue-i18n": "7.3.2", "vue-i18n": "7.3.2",
"vue-pdf": "^4.3.0", "vue-pdf": "^4.3.0",
"vue-router": "3.4.9", "vue-router": "3.4.9",

+ 8
- 1
src/api/business/gyzj/gyzj.js View File

@ -16,7 +16,14 @@ export function studyList(query) {
params: query params: query
}) })
} }
//导出
export function exportDetail(query) {
return request({
url: '/system/business/gyzj/exportDetail',
method: 'get',
params: query
})
}
// 稽查轨迹列表 // 稽查轨迹列表
export function jcgjList(query) { export function jcgjList(query) {
return request({ return request({

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

@ -7,3 +7,10 @@ export function home_count(query) {
params: query params: query
}) })
} }
export function home_noticeList(query) {
return request({
url: '/system/business/home/noticeList',
method: 'get',
params: query
})
}

+ 8
- 0
src/api/business/mjy/mjy.js View File

@ -17,6 +17,14 @@ export function studyList(query) {
params: query params: query
}) })
} }
//导出
export function exportDetail(query) {
return request({
url: '/system/business/mjy/exportDetail',
method: 'get',
params: query
})
}
// 稽查轨迹列表 // 稽查轨迹列表
export function jcgjList(query) { export function jcgjList(query) {

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

@ -16,6 +16,15 @@ export function studyFormFill_jcgj(query) {
params: query params: query
}) })
} }
//导出
export function studyFormFill_exportDetail(query) {
return request({
url: '/system/business/studyFormFill/exportDetail',
method: 'get',
params: query
})
}
//签名信息 //签名信息
export function studyFormFill_qmxx(query) { export function studyFormFill_qmxx(query) {
return request({ return request({

+ 1
- 0
src/lang/en/system/dept.js View File

@ -1,6 +1,7 @@
export default { export default {
name: 'Name', name: 'Name',
type: 'Department', type: 'Department',
abbr: 'Abbreviation',
parent: 'Parent', parent: 'Parent',
add: 'Create', add: 'Create',
edit: 'Edit', edit: 'Edit',

+ 14
- 10
src/lang/en/template/commonTemplate.js View File

@ -1,7 +1,7 @@
export default { export default {
// 页面标题 // 页面标题
pageTitle: 'Biological Sample Analysis Solution Preparation Table', pageTitle: 'Biological Sample Analysis Solution Preparation Table',
// 标签 // 标签
baseInfo: 'Test Basic Information', baseInfo: 'Test Basic Information',
reagentInfo: 'Test Reagent Information', reagentInfo: 'Test Reagent Information',
@ -9,7 +9,7 @@ export default {
storageCondition: 'Storage Conditions', storageCondition: 'Storage Conditions',
operationSteps: 'Operation Steps', operationSteps: 'Operation Steps',
remark: 'Remarks', remark: 'Remarks',
// 字段标签 // 字段标签
storageConditionLabel: 'Storage Conditions', storageConditionLabel: 'Storage Conditions',
testName: 'Test Name', testName: 'Test Name',
@ -30,16 +30,20 @@ export default {
targetActVolume: 'Target Solution Actual Volume', targetActVolume: 'Target Solution Actual Volume',
effectivePeriod: 'Effective Period', effectivePeriod: 'Effective Period',
expireDate: 'Expiry Date', expireDate: 'Expiry Date',
clpbh: 'Analysis Batch Number',
rqcz: 'Container Material',
clsj: 'Work Time',
xzjz: 'Select substrate',
// 占位符 // 占位符
remarkPlaceholder: 'Please enter remarks', remarkPlaceholder: 'Please enter remarks',
// 按钮 // 按钮
saveBtn: 'Save', saveBtn: 'Save',
// 错误提示 // 错误提示
addStepError: 'Please add steps', addStepError: 'Please add steps',
// 试剂信息列 // 试剂信息列
reagentName: 'Reagent Name', reagentName: 'Reagent Name',
reagentCode: 'Code', reagentCode: 'Code',
@ -47,13 +51,13 @@ export default {
concentration: 'Concentration/Content/Purity', concentration: 'Concentration/Content/Purity',
source: 'Source', source: 'Source',
reagentExpireDate: 'Expiry Date', reagentExpireDate: 'Expiry Date',
// 仪器使用信息列 // 仪器使用信息列
instrumentName: 'Instrument Name', instrumentName: 'Instrument Name',
instrumentModel: 'Instrument Model', instrumentModel: 'Instrument Model',
instrumentCode: 'Instrument Number', instrumentCode: 'Instrument Number',
nextTestDate: 'Next Test/Calibration/Verification Date', nextTestDate: 'Next Test/Calibration/Verification Date',
// 试验物质配制计划列 // 试验物质配制计划列
administrationDoseOrGroup: 'Administration Dose or Group', administrationDoseOrGroup: 'Administration Dose or Group',
preparationConcentration: 'Preparation Concentration', preparationConcentration: 'Preparation Concentration',
@ -61,6 +65,6 @@ export default {
other: 'Other', other: 'Other',
otherInfo: 'Other Information', otherInfo: 'Other Information',
unit: 'unit', unit: 'unit',
pleaseFillIn:"Please fill in",
pleaseSelect:"Please select"
pleaseFillIn: 'Please fill in',
pleaseSelect: 'Please select'
} }

+ 1
- 0
src/lang/zh/system/dept.js View File

@ -1,6 +1,7 @@
export default { export default {
name: '名称', name: '名称',
type: '组织类型', type: '组织类型',
abbr: '缩写',
parent: '上级部门', parent: '上级部门',
add: '添加', add: '添加',
edit: '编辑', edit: '编辑',

+ 14
- 10
src/lang/zh/template/commonTemplate.js View File

@ -1,7 +1,7 @@
export default { export default {
// 页面标题 // 页面标题
pageTitle: '生物样品分析溶液配制表', pageTitle: '生物样品分析溶液配制表',
// 标签 // 标签
baseInfo: '试验基本信息', baseInfo: '试验基本信息',
reagentInfo: '试验试剂信息', reagentInfo: '试验试剂信息',
@ -9,7 +9,7 @@ export default {
storageCondition: '存储条件', storageCondition: '存储条件',
operationSteps: '操作步骤', operationSteps: '操作步骤',
remark: '备注', remark: '备注',
// 字段标签 // 字段标签
storageConditionLabel: '存储条件', storageConditionLabel: '存储条件',
testName: '试验名称', testName: '试验名称',
@ -30,16 +30,20 @@ export default {
targetActVolume: '目标溶液实际体积', targetActVolume: '目标溶液实际体积',
effectivePeriod: '有效周期', effectivePeriod: '有效周期',
expireDate: '失效日', expireDate: '失效日',
clpbh: '处理批编号',
rqcz: '容器材质',
clsj: '处理时间',
xzjz: '选择基质',
// 占位符 // 占位符
remarkPlaceholder: '请输入备注', remarkPlaceholder: '请输入备注',
// 按钮 // 按钮
saveBtn: '保存', saveBtn: '保存',
// 错误提示 // 错误提示
addStepError: '请添加步骤', addStepError: '请添加步骤',
// 试剂信息列 // 试剂信息列
reagentName: '试剂名称', reagentName: '试剂名称',
reagentCode: '编号', reagentCode: '编号',
@ -47,13 +51,13 @@ export default {
concentration: '浓度/含量/纯度', concentration: '浓度/含量/纯度',
source: '来源', source: '来源',
reagentExpireDate: '失效日', reagentExpireDate: '失效日',
// 仪器使用信息列 // 仪器使用信息列
instrumentName: '仪器名称', instrumentName: '仪器名称',
instrumentModel: '仪器型号', instrumentModel: '仪器型号',
instrumentCode: '仪器编号', instrumentCode: '仪器编号',
nextTestDate: '下次测试/校准/检定日期', nextTestDate: '下次测试/校准/检定日期',
// 试验物质配制计划列 // 试验物质配制计划列
administrationDoseOrGroup: '给药剂量或组别', administrationDoseOrGroup: '给药剂量或组别',
preparationConcentration: '配制浓度', preparationConcentration: '配制浓度',
@ -61,6 +65,6 @@ export default {
other: '其他', other: '其他',
otherInfo: '其他信息', otherInfo: '其他信息',
unit: '单位', unit: '单位',
pleaseFillIn:"请输入",
pleaseSelect:"请选择"
pleaseFillIn: '请输入',
pleaseSelect: '请选择'
} }

+ 3
- 1
src/views/business/comps/template/TemplateTable.vue View File

@ -15,6 +15,7 @@ import SWYPFXRYPZB from "./comps/sp/SWYPFXRYPZB.vue";
import SWYPFXCBYPZB from "./comps/sp/SWYPFXCBYPZB.vue"; import SWYPFXCBYPZB from "./comps/sp/SWYPFXCBYPZB.vue";
import SWYPBQGZYZBB from "./comps/sp/SWYPBQGZYZBB.vue"; import SWYPBQGZYZBB from "./comps/sp/SWYPBQGZYZBB.vue";
import SWYPNBGZYZBB from "./comps/sp/SWYPNBGZYZBB.vue"; import SWYPNBGZYZBB from "./comps/sp/SWYPNBGZYZBB.vue";
import ZQDYJMD from "./comps/sp/SWYPFXFFXYPZBB/ZQDYJMD.vue";
import Demo from "./comps/sp/Demo.vue"; import Demo from "./comps/sp/Demo.vue";
// //
import SYWZPZJHB from "./comps/gy/SYWZPZJHB.vue"; import SYWZPZJHB from "./comps/gy/SYWZPZJHB.vue";
@ -24,7 +25,7 @@ export default {
name: "TemplateTable", name: "TemplateTable",
components: { components: {
MJYLQSQD, SYWZPZJHB, MJYLQSQD, SYWZPZJHB,
SP001, SWYPFXRYPZB, Demo, SWYPFXCBYPZB, SWYPBQGZYZBB, SWYPNBGZYZBB
SP001, SWYPFXRYPZB, Demo, SWYPFXCBYPZB, SWYPBQGZYZBB, SWYPNBGZYZBB,ZQDYJMD
}, },
props: { props: {
sn: { sn: {
@ -53,6 +54,7 @@ export default {
'SP002': 'SWYPFXCBYPZB', 'SP002': 'SWYPFXCBYPZB',
'SP003': 'SWYPBQGZYZBB', 'SP003': 'SWYPBQGZYZBB',
'SP004': 'SWYPNBGZYZBB', 'SP004': 'SWYPNBGZYZBB',
'SP008': 'ZQDYJMD',
'SYWZPZJHB': 'SYWZPZJHB', 'SYWZPZJHB': 'SYWZPZJHB',
'MJYLQSQD': 'MJYLQSQD', 'MJYLQSQD': 'MJYLQSQD',
} }

+ 312
- 0
src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/ZQDYJMD.vue View File

@ -0,0 +1,312 @@
<!-- 生物样品分析方法学样品制备表-准确度与精密度 -->
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.templateMc ||
'生物样品分析方法学样品制备表-准确度与精密度' }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPcakge fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo" ref="baseInfoRef"
:formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns"
:dataSource="resource" />
<TableList label="template.common.instrumentInfo" :columns="yqsColumns"
:dataSource="resource" />
<BaseInfoFormPcakge fieldItemLabel="template.common.storageCondition" label="template.common.storageCondition" ref="storageConditionRef"
:formConfig="storageFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" />
<div class="template-form-item">
<BaseInfoFormPcakge fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef" :formConfig="stepFormConfig" @blur="onHandleBlur"
:formData="formData" />
<CustomTable
@blur="onHandleTableBlur"
:ref="`tableRef`"
:columns="tableStepColumns"
:formData="formData.tableData"
:prefixKey = "`table`"
fieldItemLabel = "这个是什么"
>
<template slot="operation" slot-scope="{ row, rowIndex}">
<TableOpertaion
:fillType="fillType"
:row="row"
:rowIndex="rowIndex"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"
></TableOpertaion>
</template>
</CustomTable>
</div>
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPcakge fieldItemLabel="template.common.remark" label="template.common.remark" ref="remarkRef" :formConfig="remarkConig"
:formData="formData" />
</div>
</div>
</div>
<!-- <button @click = "onSave">保存</button> -->
</div>
</template>
<script>
import BaseInfoFormPcakge from "@/components/Template/BaseInfoFormPcakge";
import LineLabel from "@/components/Template/LineLabel";
import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step";
import templateMixin from "../../../mixins/templateMixin";
import CustomTable from '@/components/Template/CustomTable.vue';
import { getLatestSn } from '@/api/template';
import {getSWYPFXFFXYPZBBTableConfig} from "../../../formConfig/SWYPFXFFXYPZBBTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
export default {
name: "SWYPFXRYPZB",
components: { BaseInfoFormPcakge, LineLabel, TableList, Step, CustomTable,TableOpertaion },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
storageFormConfig() {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
otherCode: "storageConditionOther",
},
}
}
];
},
remarkConig() {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
baseInfoFormConfig() {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "input",
fillType: "actFill",
maxlength: 50
},
//
clpbg: {
label: 'template.common.clpbh',
type: "input",
fillType: "actFill",
maxlength: 50
},
}
},
{
type: "conditionItem",
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: "select",
multiple: true,
fillType: "preFill",
options: this.getDictOptions('business_pztj'),
otherCode: "preOther",
},
act: {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
multiple: true,
options: this.getDictOptions('business_pztj')
}
}
},
{
type: "cellItem",
label: 'template.common.rqcz',
config: {
rqcz: {
type: "input",
fillType: "actFill",
maxlength: 50
},
}
},
{
type: "cellItem",
label: 'template.common.clsj',
config: {
startDate: {
label: 'template.common.startTime',
type: "input",
},
endDate: {
label: 'template.common.endTime',
type: "input",
},
}
}
]
},
stepFormConfig() {
return [
{
type: "step",
config: {
jz: {
label: 'template.common.xzjz',
type: "input",
fillType: "preFill",
subType: "clickable",
subKey: "subSolution",
subFillType: "actFill",
maxlength: 20,
},
}
}
]
},
tableStepColumns() {
return getSWYPFXFFXYPZBBTableConfig(this);
},
},
data() {
return {
resource: [],
resourceData1: [],
sysjColumns: [
{ label: 'template.common.reagentName', prop: "mc" },//
{ label: 'template.common.reagentCode', prop: "bh" },//
{ label: 'template.common.reagentNo', prop: "ph" },//
{ label: 'template.common.concentration', prop: "nd" },//
{ label: 'template.common.source', prop: "source" },//
{ label: 'template.common.reagentExpireDate', prop: "sxrq" },//
],
yqsColumns: [
{ label: 'template.common.instrumentName', prop: "instrumentName" },
{ label: 'template.common.instrumentModel', prop: "instrumentModel" },
{ label: 'template.common.instrumentCode', prop: "instrumentCode" },
{ label: 'template.common.nextTestDate', prop: "nextTestDate" },
],
formData: {}
};
},
mounted() {
},
watch: {
formData: {
immediate: true,
handler(v) {
if(!v.targetCodeSn && this.fillType === "actFill"){
this.getCode();
}
}
}
},
methods: {
//
async getCode(){
const result = await getLatestSn({
count: 1,
})
if(result.code == 200){
this.$refs.stepFormPackageRef.updateFormData("targetCodeSn",result.data)
}
},
//
getFilledFormData(){
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "stepRef", "remarkRef"])
},
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "stepRef", "remarkRef"]);
//resource
let tmpResource = []
debugger
//
tmpResource.push({
mc: content.targetName,
bh: content.targetCode+content.targetCodeSn,
ph: '',
nd: content.targetActConcentration + content.targetActConcentrationUnit,
source: 'ELN配制',
sxrq: content.expireDate,
ndz: content.targetActConcentration,
nddw: content.targetActConcentrationUnit,
kc: content.targetActVolume,
kcdw: content.targetActVolumeUnit,
syl: null,
syldw:content.targetActVolumeUnit,
yxzq:content.effectivePeriod,
yxzqdw:content.effectivePeriodUnit,
})
//使
this.resource=tmpResource
return content;
},
async onSave() {
const formData = await this.getFilledFormData();
console.log(formData, "formData")
},
//
deleteRow(rowIndex) {
const tableRef = this.$refs['tableRef'];
if (tableRef) {
tableRef.deleteRow(rowIndex);
}
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
</style>

+ 86
- 0
src/views/business/comps/template/formConfig/SWYPFXFFXYPZBBTableConfig.js View File

@ -0,0 +1,86 @@
// 生物样品分析方法学样品制备表-表格配置
export const getSWYPFXFFXYPZBBTableConfig = ($this) => {
return [
{
label: '编号',
prop: 'bh',
bodyType: 'select',
bodyOptions: $this.getDictOptions('business_jmdyzqdyp'),
subType: 'span',
subKey: 'bhCode',
bodyFillType: 'preFill',
width: 280
},
{
label: '预设溶液',
prop: 'ysry',
bodyType: 'input',
bodyFillType: 'preFill',
width: 280
},
{
label: '实际溶液',
prop: 'sjry',
bodyType: 'input',
bodyFillType: 'actFill',
width: 280
},
{
label: '预计溶液吸取量',
prop: 'yjryxql',
width: 280,
headerSelectKey: 'yjryxqlUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10
},
{
label: '实际溶液吸取量',
prop: 'sjryxql',
width: 280,
headerSelectKey: 'sjryxqlUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
compareTo: 'yjryxql'
},
{
label: '预计基质吸取量',
prop: 'yjjzxql',
width: 280,
headerSelectKey: 'yjjzxqlUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10
},
{
label: '实际基质吸取量',
prop: 'sjjzxql',
width: 280,
headerSelectKey: 'sjjzxqlUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
compareTo: 'yjjzxql'
},
{
label: '化合物终浓度',
prop: 'hhwznd',
width: 280,
headerSelectKey: 'hhwzndUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_nddw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10
}
]
}

+ 1
- 1
src/views/business/comps/template/mixins/templateMixin.js View File

@ -1,6 +1,6 @@
import moment from "moment"; import moment from "moment";
export default { export default {
dicts: ['business_pztj', 'business_cctj', 'business_nddw', 'business_tjdw', 'business_yxqdw', 'business_rqcz'],
dicts: ['business_pztj', 'business_cctj', 'business_nddw', 'business_tjdw', 'business_yxqdw', 'business_rqcz', 'business_jmdyzqdyp'],
props: { props: {
templateData: { templateData: {
type: Object, type: Object,

+ 138
- 96
src/views/business/resource/gsp/comps/gsp/Xq.vue View File

@ -9,116 +9,120 @@
</div> </div>
<div class="right-top"> <div class="right-top">
<el-button @click="cancel()">{{ $t('form.cancel') }}</el-button> <el-button @click="cancel()">{{ $t('form.cancel') }}</el-button>
<el-button @click="exportExcel()">{{ $t('form.export') }}</el-button>
<el-button @click="exportPDF()">{{ $t('form.export') }}</el-button>
</div> </div>
</div> </div>
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ $t('page.business.resource.gsp.gspxq')
<div ref="content">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ $t('page.business.resource.gsp.gspxq')
}}<img src="@/assets/images/detail-title.png" /></div> }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content-left">
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> 基本信息</div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.mc') }}</div>
<el-input type="text" :value="form.mc" maxlength="50" disabled />
<div class="detail-content">
<div class="content-left">
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> 基本信息</div>
</div> </div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.bh') }}</div>
<el-input type="text" :value="form.bh" maxlength="50" disabled />
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.mc') }}</div>
<el-input type="text" :value="form.mc" maxlength="50" disabled />
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.bh') }}</div>
<el-input type="text" :value="form.bh" maxlength="50" disabled />
</div>
</div> </div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.ph') }}</div>
<el-input type="text" :value="form.ph" maxlength="50" disabled />
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.ph') }}</div>
<el-input type="text" :value="form.ph" maxlength="50" disabled />
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.gg') }}</div>
<el-input type="text" :value="form.gg" maxlength="50" disabled> <template slot="append">{{
form.ggdw }}</template> </el-input>
</div>
</div> </div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.gg') }}</div>
<el-input type="text" :value="form.gg" maxlength="50" disabled> <template slot="append">{{
form.ggdw }}</template> </el-input>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.jsrq') }}</div>
<el-input type="text" :value="form.jsrq" maxlength="50" disabled />
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.kcl') }}</div>
<el-input type="text" :value="form.kc" maxlength="50" disabled> <template slot="append">{{
form.kcdw }}</template> </el-input>
</div>
</div> </div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.jsrq') }}</div>
<el-input type="text" :value="form.jsrq" maxlength="50" disabled />
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.yxq') }}</div>
<el-input type="text" :value="form.yxq" maxlength="50" disabled />
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.zjzt') }}</div>
<el-select v-model="form.zjzt" disabled style="width: 100%;">
<el-option key="1" :label="$t('page.business.resource.resource.zjzt.rk')" :value="1" />
<el-option key="3" :label="$t('page.business.resource.resource.zjzt.yff')" :value="3" />
<el-option key="5" :label="$t('page.business.resource.resource.zjzt.ysd')" :value="5" />
<el-option key="7" :label="$t('page.business.resource.resource.zjzt.dgd')" :value="7" />
<el-option key="9" :label="$t('page.business.resource.resource.zjzt.gd')" :value="9" />
<el-option key="11" :label="$t('page.business.resource.resource.zjzt.djd')" :value="11" />
</el-select>
</div>
</div> </div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.kcl') }}</div>
<el-input type="text" :value="form.kc" maxlength="50" disabled > <template slot="append">{{
form.kcdw }}</template> </el-input>
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.resource.gsp.tz') }}</div>
</div> </div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.yxq') }}</div>
<el-input type="text" :value="form.yxq" maxlength="50" disabled />
<div class="pal">
<el-table :data="tzList" v-loading="loadingTz">
<el-table-column :label="$t('page.business.resource.mjy.syr')" align="center" prop="qmrMc"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.lqghr')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.lqrMc }}{{ scope.row.ghrMc }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.ffjsr')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.ffrMc }}{{ scope.row.jsrMc }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.czlx')" align="center" prop="qmyy"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.czl')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.czl }}{{ scope.row.czldw }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.bzyy')" align="center" prop="remark"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.ccsj')" align="center" prop="createTime"
width="150px" />
</el-table>
</div> </div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.zjzt') }}</div>
<el-select v-model="form.zjzt" disabled style="width: 100%;">
<el-option key="1" :label="$t('page.business.resource.resource.zjzt.rk')" :value="1" />
<el-option key="3" :label="$t('page.business.resource.resource.zjzt.yff')" :value="3" />
<el-option key="5" :label="$t('page.business.resource.resource.zjzt.ysd')" :value="5" />
<el-option key="7" :label="$t('page.business.resource.resource.zjzt.dgd')" :value="7" />
<el-option key="9" :label="$t('page.business.resource.resource.zjzt.gd')" :value="9" />
<el-option key="11" :label="$t('page.business.resource.resource.zjzt.djd')" :value="11" />
</el-select>
<div class="pal">
<pagination v-show="totalTz > 0" :total="totalTz" :page.sync="queryParamstZ.pageNum"
:limit.sync="queryParamstZ.pageSize" @pagination="getTzList" />
</div> </div>
</div> </div>
<div class="content-right">
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.resource.gsp.jcgj') }}</div>
</div>
<jcgjList ref="jcgjList" @handleQuery="jcgjListHandleQuery" />
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.resource.gsp.tz') }}</div>
</div>
<div class="pal">
<el-table :data="tzList" v-loading="loadingTz">
<el-table-column :label="$t('page.business.resource.mjy.syr')" align="center" prop="qmrMc"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.lqghr')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.lqrMc }}{{ scope.row.ghrMc }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.ffjsr')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.ffrMc }}{{ scope.row.jsrMc }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.czlx')" align="center" prop="qmyy"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.czl')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.czl }}{{ scope.row.czldw }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.bzyy')" align="center" prop="remark"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.ccsj')" align="center" prop="createTime"
width="150px" />
</el-table>
</div>
<div class="pal">
<pagination v-show="totalTz > 0" :total="totalTz" :page.sync="queryParamstZ.pageNum"
:limit.sync="queryParamstZ.pageSize" @pagination="getTzList" />
<pagination v-show="jcgjTotal > 0" small layout="prev, pager, next" :total="jcgjTotal"
@pagination="getJjcgjList" />
</div> </div>
</div> </div>
<div class="content-right">
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.resource.mjy.jcgj') }}</div>
</div>
<jcgjList ref="jcgjList" @handleQuery="jcgjListHandleQuery" />
<XqExport ref="XqExport" key="XqExport" />
<pagination v-show="jcgjTotal > 0" small layout="prev, pager, next" :total="jcgjTotal"
@pagination="getJjcgjList" />
</div>
</div> </div>
</div> </div>
</div> </div>
@ -127,10 +131,12 @@
<script> <script>
import { info, tzList, jcgjList } from "@/api/business/gsp/gsp" import { info, tzList, jcgjList } from "@/api/business/gsp/gsp"
import JcgjList from "@/views/business/comps/common/JcgjList"; import JcgjList from "@/views/business/comps/common/JcgjList";
import html2canvas from 'html2canvas';
import jsPDF from 'jspdf'
import XqExport from "./XqExport"
export default { export default {
name: "Xq", name: "Xq",
components: { JcgjList },
components: { JcgjList, XqExport },
data() { data() {
return { return {
form: {}, form: {},
@ -155,6 +161,40 @@ export default {
created() { created() {
}, },
methods: { methods: {
exportPDF() {
console.log(this.$refs.XqExport)
this.$refs.XqExport.exportPDF()
// const element = this.$refs.content
// const canvas = await html2canvas(element, {
// scale: 2, //
// useCORS: true, //
// backgroundColor: '#ffffff'
// })
// const imgData = canvas.toDataURL('image/png')
// const pdf = new jsPDF('p', 'mm', 'a4') // A4
// const imgWidth = 210 // A4
// const pageHeight = 295 // A4
// const imgHeight = (canvas.height * imgWidth) / canvas.width
// let heightLeft = imgHeight
// let position = 0
// //
// pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight)
// heightLeft -= pageHeight
// //
// while (heightLeft > 0) {
// position = heightLeft - imgHeight
// pdf.addPage()
// pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight)
// heightLeft -= pageHeight
// }
// pdf.save('document.pdf')
},
exportExcel() { exportExcel() {
alert('todo') alert('todo')
}, },
@ -197,6 +237,8 @@ export default {
this.getTzList() this.getTzList()
this.open = true this.open = true
}) })
this.$refs.XqExport.show(row)
} }
} }
} }

+ 252
- 0
src/views/business/resource/gsp/comps/gsp/XqExport.vue View File

@ -0,0 +1,252 @@
<template>
<!-- 详情 -->
<div>
<div class="detail-container">
<div ref="content">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ $t('page.business.resource.gsp.gspxq')
}}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div style="width: 100%;">
<!-- 基本信息 -->
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> 基本信息</div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.mc') }}</div>
<el-input type="text" :value="form.mc" maxlength="50" disabled />
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.bh') }}</div>
<el-input type="text" :value="form.bh" maxlength="50" disabled />
</div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.ph') }}</div>
<el-input type="text" :value="form.ph" maxlength="50" disabled />
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.gg') }}</div>
<el-input type="text" :value="form.gg" maxlength="50" disabled> <template slot="append">{{
form.ggdw }}</template> </el-input>
</div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.jsrq') }}</div>
<el-input type="text" :value="form.jsrq" maxlength="50" disabled />
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.kcl') }}</div>
<el-input type="text" :value="form.kc" maxlength="50" disabled> <template slot="append">{{
form.kcdw }}</template> </el-input>
</div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.yxq') }}</div>
<el-input type="text" :value="form.yxq" maxlength="50" disabled />
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.zjzt') }}</div>
<el-select v-model="form.zjzt" disabled style="width: 100%;">
<el-option key="1" :label="$t('page.business.resource.resource.zjzt.rk')" :value="1" />
<el-option key="3" :label="$t('page.business.resource.resource.zjzt.yff')" :value="3" />
<el-option key="5" :label="$t('page.business.resource.resource.zjzt.ysd')" :value="5" />
<el-option key="7" :label="$t('page.business.resource.resource.zjzt.dgd')" :value="7" />
<el-option key="9" :label="$t('page.business.resource.resource.zjzt.gd')" :value="9" />
<el-option key="11" :label="$t('page.business.resource.resource.zjzt.djd')" :value="11" />
</el-select>
</div>
</div>
<!-- 台账 -->
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.resource.gsp.tz') }}</div>
</div>
<div class="pal">
<el-table :data="tzList" v-loading="loadingTz">
<el-table-column :label="$t('page.business.resource.mjy.syr')" align="center" prop="qmrMc"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.lqghr')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.lqrMc }}{{ scope.row.ghrMc }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.ffjsr')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.ffrMc }}{{ scope.row.jsrMc }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.czlx')" align="center" prop="qmyy"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.czl')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.czl }}{{ scope.row.czldw }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.bzyy')" align="center" prop="remark"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.ccsj')" align="center" prop="createTime"
width="150px" />
</el-table>
</div>
<!-- 稽查轨迹 -->
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.resource.gsp.jcgj') }}</div>
</div>
<div>
<div v-for="(item, index) in jcgjList" :key="index">
<div>
<span>{{ $i18n.locale === 'zh_CN' ? item.jcmc : item.jcmcEn }},</span>
<span class="jcglList-jcnr">
<template v-if="$i18n.locale === 'zh_CN'">
<span v-for="(pitem, pindex) in item.jcnrList" :key="pindex">
{{ pitem.name }}{{ pitem.value }},
</span>
</template>
<template v-else>
<span v-for="(pitem, pindex) in item.jcnrListEn" :key="pindex">
{{ pitem.name }}{{ pitem.value }},
</span>
</template>
<span v-if="item.remark && item.remark !== ''">
{{ $t('form.remark') }}{{ item.remark }},
</span>
<span v-if="item.qmrId && item.qmrId > 0">
{{ $t('form.qmyy') }}{{ $i18n.locale === 'zh_CN' ? item.jcmc : item.jcmcEn }},
</span>
<span v-if="item.qmrId && item.qmrId > 0">
<!-- {{$t('form.signer')}}{{ $i18n.locale === 'zh_CN'?item.qmrMc:item.qmrMcEn }} -->
{{ $t('form.signer') }}{{ item.qmrMc }},
</span>
<span>{{ $t('form.signTime') }}{{ item.createTime }}</span>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { info, tzList, jcgjList } from "@/api/business/gsp/gsp"
import JcgjList from "@/views/business/comps/common/JcgjList";
import html2canvas from 'html2canvas';
import jsPDF from 'jspdf'
export default {
name: "XqExport",
components: { JcgjList },
data() {
return {
form: {},
tzList: [],
totalTz: 0,
loadingTz: true,
open: false,
queryParamstZ: {
mjyId: null,
pageNum: 1,
pageSize: 9999999
},
jcgjTotal: 0,
jcgjList: [],
queryJcgjParams: {
pageNum: 1,
mjyId: null,
pageSize: 9999999,
}
}
},
created() {
},
methods: {
async exportPDF() {
this.$modal.loading()
const element = this.$refs.content
const canvas = await html2canvas(element, {
scale: 2, //
useCORS: true, //
backgroundColor: '#ffffff'
})
const imgData = canvas.toDataURL('image/png')
const pdf = new jsPDF('p', 'mm', 'a4') // A4
const imgWidth = 210 // A4
const pageHeight = 295 // A4
const imgHeight = (canvas.height * imgWidth) / canvas.width
let heightLeft = imgHeight
let position = 0
//
pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight)
heightLeft -= pageHeight
//
while (heightLeft > 0) {
position = heightLeft - imgHeight
pdf.addPage()
pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight)
heightLeft -= pageHeight
}
pdf.save('document.pdf')
this.$modal.closeLoading()
},
exportExcel() {
alert('todo')
},
jcgjListHandleQuery(val) {
this.$modal.loading()
jcgjList(_.merge({}, this.queryJcgjParams, val)).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$modal.closeLoading()
})
},
getJjcgjList() {
jcgjList(this.queryJcgjParams).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$modal.closeLoading()
})
},
cancel() {
this.open = false
this.$emit('callback')
},
getTzList() {
this.loadingTz = true
tzList(this.queryParamstZ).then(response => {
this.tzList = response.rows
this.totalTz = response.total
this.loadingTz = false
this.getJjcgjList()
})
},
show(row) {
this.$modal.loading()
this.queryParamstZ.gspId = row.id
this.queryJcgjParams.gspId = row.id
info({ id: row.id }).then(response => {
this.form = response.data
this.getTzList()
this.open = true
})
}
}
}
</script>

+ 3
- 3
src/views/business/resource/gyzj/comps/gyzj/Shbj.vue View File

@ -62,8 +62,8 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-input type="text" :value="form.qmyy" maxlength="50" disabled />
<el-form-item :label="$t('form.qmyy')" prop="qmyyMc">
<el-input type="text" :value="form.qmyyMc" maxlength="50" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -112,7 +112,7 @@ export default {
open: false, open: false,
form: {}, form: {},
rules: { rules: {
qmyy: [{
qmyyMc: [{
required: true, required: true,
message: ' ', message: ' ',
trigger: 'blur' trigger: 'blur'

+ 2
- 2
src/views/business/resource/gyzj/comps/gyzj/Shxgkc.vue View File

@ -43,7 +43,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-form-item :label="$t('form.qmyy')" prop="qmyyMc">
<el-input type="text" :value="form.qmyyMc" maxlength="50" disabled /> <el-input type="text" :value="form.qmyyMc" maxlength="50" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -108,7 +108,7 @@ export default {
message: ' ', message: ' ',
trigger: 'blur' trigger: 'blur'
}], }],
qmyy: [{
qmyyMc: [{
required: true, required: true,
message: ' ', message: ' ',
trigger: 'blur' trigger: 'blur'

+ 9
- 3
src/views/business/resource/gyzj/comps/gyzj/Xq.vue View File

@ -165,7 +165,7 @@
</template> </template>
<script> <script>
import { info, tzList, jcgjList } from "@/api/business/gyzj/gyzj"
import { info, tzList, jcgjList,exportDetail } from "@/api/business/gyzj/gyzj"
import JcgjList from "@/views/business/comps/common/JcgjList"; import JcgjList from "@/views/business/comps/common/JcgjList";
export default { export default {
@ -195,8 +195,14 @@ export default {
created() { created() {
}, },
methods: { methods: {
exportExcel() {
alert('todo')
exportExcel() {
this.$modal.loading()
exportDetail({ id: this.form.id }).then(response => {
window.open(this.baseUrl +response.msg)
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
}, },
getJjcgjList(val) { getJjcgjList(val) {
this.$modal.loading() this.$modal.loading()

+ 3
- 3
src/views/business/resource/mjy/comps/mjy/Shbj.vue View File

@ -62,8 +62,8 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-input type="text" :value="form.qmyy" maxlength="50" disabled />
<el-form-item :label="$t('form.qmyy')" prop="qmyyMc">
<el-input type="text" :value="form.qmyyMc" maxlength="50" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -112,7 +112,7 @@ export default {
open: false, open: false,
form: {}, form: {},
rules: { rules: {
qmyy: [{
qmyyMc: [{
required: true, required: true,
message: ' ', message: ' ',
trigger: 'blur' trigger: 'blur'

+ 2
- 2
src/views/business/resource/mjy/comps/mjy/Shxgkc.vue View File

@ -43,7 +43,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-form-item :label="$t('form.qmyy')" prop="qmyyMc">
<el-input type="text" :value="form.qmyyMc" maxlength="50" disabled /> <el-input type="text" :value="form.qmyyMc" maxlength="50" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -108,7 +108,7 @@ export default {
message: ' ', message: ' ',
trigger: 'blur' trigger: 'blur'
}], }],
qmyy: [{
qmyyMc: [{
required: true, required: true,
message: ' ', message: ' ',
trigger: 'blur' trigger: 'blur'

+ 9
- 2
src/views/business/resource/mjy/comps/mjy/Xq.vue View File

@ -163,7 +163,7 @@
</template> </template>
<script> <script>
import { info, tzList, jcgjList } from "@/api/business/mjy/mjy"
import { info, tzList, jcgjList, exportDetail } from "@/api/business/mjy/mjy"
import JcgjList from "@/views/business/comps/common/JcgjList"; import JcgjList from "@/views/business/comps/common/JcgjList";
export default { export default {
@ -171,6 +171,7 @@ export default {
components: { JcgjList }, components: { JcgjList },
data() { data() {
return { return {
baseUrl:process.env.VUE_APP_FILE_DOMAIN,
form: {}, form: {},
tzList: [], tzList: [],
totalTz: 0, totalTz: 0,
@ -194,7 +195,13 @@ export default {
}, },
methods: { methods: {
exportExcel() { exportExcel() {
alert('todo')
this.$modal.loading()
exportDetail({ id: this.form.id }).then(response => {
window.open(this.baseUrl +response.msg)
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
}, },
getJjcgjList(val) { getJjcgjList(val) {
this.$modal.loading() this.$modal.loading()

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

@ -43,18 +43,18 @@
:show-overflow-tooltip="true" /> :show-overflow-tooltip="true" />
</el-table> </el-table>
</div> </div>
<div class="pal">
<!-- <div class="pal">
<pagination v-show="totalQmxx > 0" :total="totalQmxx" :page.sync="queryParamsQmxx.pageNum" <pagination v-show="totalQmxx > 0" :total="totalQmxx" :page.sync="queryParamsQmxx.pageNum"
:limit.sync="queryParamsQmxx.pageSize" @pagination="getQmxxList" /> :limit.sync="queryParamsQmxx.pageSize" @pagination="getQmxxList" />
</div>
</div> -->
<div class="content-title"> <div class="content-title">
<div class="line"></div> <div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyFormPlan.jcgj') }}</div> <div class="subtitle"> {{ $t('page.business.study.studyFormPlan.jcgj') }}</div>
</div> </div>
<JcgjList ref="jcgjList" @handleQuery="getJjcgjList" :showXg="true" /> <JcgjList ref="jcgjList" @handleQuery="getJjcgjList" :showXg="true" />
<!--
<pagination v-show="jcgjTotal > 0" small layout="prev, pager, next" :total="jcgjTotal" <pagination v-show="jcgjTotal > 0" small layout="prev, pager, next" :total="jcgjTotal"
@pagination="getJjcgjList" />
@pagination="getJjcgjList" /> -->
</div> </div>
</div> </div>
@ -80,7 +80,7 @@ export default {
queryParamsQmxx: { queryParamsQmxx: {
formId: null, formId: null,
pageNum: 1, pageNum: 1,
pageSize: 10
pageSize: 9999
}, },
open: false, open: false,
showIndex: 1, showIndex: 1,
@ -103,7 +103,7 @@ export default {
queryParamsJcgj: { queryParamsJcgj: {
pageNum: 1, pageNum: 1,
formId: null, formId: null,
pageSize: 10,
pageSize: 9999,
} }
} }
}, },

+ 6
- 6
src/views/business/study/comp/sqbd/Xq.vue View File

@ -45,18 +45,18 @@
:show-overflow-tooltip="true" /> :show-overflow-tooltip="true" />
</el-table> </el-table>
</div> </div>
<div class="pal">
<!-- <div class="pal">
<pagination v-show="totalQmxx > 0" :total="totalQmxx" :page.sync="queryParamsQmxx.pageNum" <pagination v-show="totalQmxx > 0" :total="totalQmxx" :page.sync="queryParamsQmxx.pageNum"
:limit.sync="queryParamsQmxx.pageSize" @pagination="getQmxxList" /> :limit.sync="queryParamsQmxx.pageSize" @pagination="getQmxxList" />
</div>
</div> -->
<div class="content-title"> <div class="content-title">
<div class="line"></div> <div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyFormApply.jcgj') }}</div> <div class="subtitle"> {{ $t('page.business.study.studyFormApply.jcgj') }}</div>
</div> </div>
<JcgjList ref="jcgjList" @handleQuery="getJjcgjList" :showXg="true" /> <JcgjList ref="jcgjList" @handleQuery="getJjcgjList" :showXg="true" />
<pagination v-show="jcgjTotal > 0" small layout="prev, pager, next" :total="jcgjTotal"
@pagination="getJjcgjList" />
<!-- <pagination v-show="jcgjTotal > 0" small layout="prev, pager, next" :total="jcgjTotal"
@pagination="getJjcgjList" /> -->
</div> </div>
</div> </div>
@ -141,7 +141,7 @@ export default {
queryParamsQmxx: { queryParamsQmxx: {
formId: null, formId: null,
pageNum: 1, pageNum: 1,
pageSize: 10
pageSize: 9999
}, },
open: false, open: false,
showIndex: 1, showIndex: 1,
@ -164,7 +164,7 @@ export default {
queryParamsJcgj: { queryParamsJcgj: {
pageNum: 1, pageNum: 1,
formId: null, formId: null,
pageSize: 10,
pageSize: 9999,
} }
} }
}, },

+ 66
- 51
src/views/business/study/comp/tbbd/Xq.vue View File

@ -14,51 +14,58 @@
$t('page.business.study.studyFormFill.tb') }}</el-button> $t('page.business.study.studyFormFill.tb') }}</el-button>
</div> </div>
</div> </div>
<el-button type="primary" @click="exportExcel">后台导出
</el-button>
<el-button type="primary" @click="dcqbjcgj">{{ $t('page.business.study.studyFormFill.dcqbjcgj') }}
</el-button>
<el-button type="primary" @click="dcqbjcgj">{{ $t('page.business.study.studyFormFill.dcqbjcgj') }}
</el-button>
<el-button type="primary" @click="dclcjcgj">{{ $t('page.business.study.studyFormFill.dclcjcgj') }}
</el-button>
<el-button type="primary" @click="dcbjjcgj">{{ $t('page.business.study.studyFormFill.dcbjjcgj') }}
</el-button>
<el-button type="primary" @click="dcxgjcgj">{{ $t('page.business.study.studyFormFill.dcxgjcgj') }}
</el-button>
<el-button type="primary" @click="dcbhsjgj">{{ $t('page.business.study.studyFormFill.dcbhsjgj') }}
</el-button>
<div class="edit-content "> <div class="edit-content ">
<div class="content">
<div>
<el-button type="primary" @click="dcqbjcgj">{{ $t('page.business.study.studyFormFill.dcqbjcgj') }}
</el-button>
<el-button type="primary" @click="dclcjcgj">{{ $t('page.business.study.studyFormFill.dclcjcgj') }}
</el-button>
<el-button type="primary" @click="dcbjjcgj">{{ $t('page.business.study.studyFormFill.dcbjjcgj') }}
</el-button>
<el-button type="primary" @click="dcxgjcgj">{{ $t('page.business.study.studyFormFill.dcxgjcgj') }}
</el-button>
<el-button type="primary" @click="dcbhsjgj">{{ $t('page.business.study.studyFormFill.dcbhsjgj') }}
</el-button>
</div>
<TemplateTable ref="templateTable" :sn="form.templateSn" :templateData="form" fillType="detail" />
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyFormFill.qmxx') }}</div>
</div>
<div class="pal">
<el-table :data="qmxxList" v-loading="loadingQmxx">
<el-table-column :label="$t('page.business.study.studyFormFill.qmr')" align="center" prop="qmrMc"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormFill.qmyy')" align="center"
:prop="$i18n.locale === 'zh_CN' ? 'qmyy' : 'qmyyEn'" width="150px" />
<el-table-column :label="$t('page.business.study.studyFormFill.qmsj')" align="center" prop="createTime"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormFill.bzyy')" align="center" prop="remark"
:show-overflow-tooltip="true" />
</el-table>
</div>
<div class="pal">
<div class="content" style="width: 100%;">
<vue-html2pdf :show-layout="false" pdf-content-width="100%" :float-layout="false"
pdf-orientation="landscape" :enable-download="true" :preview-modal="true" ref="html2Pdf">
<section slot="pdf-content">
<TemplateTable ref="templateTable" :sn="form.templateSn" :templateData="form" fillType="detail" />
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyFormFill.qmxx') }}</div>
</div>
<div class="pal">
<el-table :data="qmxxList" v-loading="loadingQmxx">
<el-table-column :label="$t('page.business.study.studyFormFill.qmr')" align="center" prop="qmrMc"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormFill.qmyy')" align="center"
:prop="$i18n.locale === 'zh_CN' ? 'qmyy' : 'qmyyEn'" width="150px" />
<el-table-column :label="$t('page.business.study.studyFormFill.qmsj')" align="center"
prop="createTime" width="150px" />
<el-table-column :label="$t('page.business.study.studyFormFill.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" <pagination v-show="totalQmxx > 0" :total="totalQmxx" :page.sync="queryParamsQmxx.pageNum"
:limit.sync="queryParamsQmxx.pageSize" @pagination="getQmxxList" /> :limit.sync="queryParamsQmxx.pageSize" @pagination="getQmxxList" />
</div>
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyFormFill.jcgj') }}</div>
</div>
<JcgjList ref="jcgjList" @handleQuery="getJjcgjList" :showXg="true" />
</div> -->
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyFormFill.jcgj') }}</div>
</div>
<JcgjList ref="jcgjList" @handleQuery="getJjcgjList" :showXg="true" />
<!--
<pagination v-show="jcgjTotal > 0" small layout="prev, pager, next" :total="jcgjTotal" <pagination v-show="jcgjTotal > 0" small layout="prev, pager, next" :total="jcgjTotal"
@pagination="getJjcgjList" />
</div>
@pagination="getJjcgjList" /> -->
</section>
</vue-html2pdf>
</div>
</div> </div>
</div> </div>
@ -111,14 +118,14 @@
</template> </template>
<script> <script>
import { studyFormFill_tb, studyFormFill_info, studyFormFill_jcgj, studyFormFill_qmxx } from "@/api/business/study/studyFormFill"
import { studyFormFill_tb, studyFormFill_info, studyFormFill_jcgj, studyFormFill_qmxx, studyFormFill_exportDetail } from "@/api/business/study/studyFormFill"
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import JcgjList from "@/views/business/comps/common/JcgjList"; import JcgjList from "@/views/business/comps/common/JcgjList";
import TemplateTable from '@/views/business/comps/template/TemplateTable'; import TemplateTable from '@/views/business/comps/template/TemplateTable';
import VueHtml2pdf from 'vue-html2pdf'
export default { export default {
name: "Xq", name: "Xq",
components: { JcgjList, TemplateTable },
components: { JcgjList, TemplateTable, VueHtml2pdf },
data() { data() {
return { return {
openApprove: false, openApprove: false,
@ -141,7 +148,7 @@ export default {
queryParamsQmxx: { queryParamsQmxx: {
formId: null, formId: null,
pageNum: 1, pageNum: 1,
pageSize: 10
pageSize: 9999
}, },
open: false, open: false,
showIndex: 1, showIndex: 1,
@ -164,7 +171,7 @@ export default {
queryParamsJcgj: { queryParamsJcgj: {
pageNum: 1, pageNum: 1,
formId: null, formId: null,
pageSize: 10,
pageSize: 9999,
} }
} }
}, },
@ -176,21 +183,29 @@ export default {
created() { created() {
}, },
methods: { methods: {
exportExcel() {
this.$modal.loading()
studyFormFill_exportDetail(this.queryParamsJcgj).then(response => {
window.open(this.baseUrl + response.msg)
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
},
dcqbjcgj() { dcqbjcgj() {
alert('todo')
this.$refs.html2Pdf.generatePdf()
}, },
dclcjcgj() { dclcjcgj() {
alert('todo')
this.$refs.html2Pdf.generatePdf()
}, },
dcbjjcgj() { dcbjjcgj() {
alert('todo')
this.$refs.html2Pdf.generatePdf()
}, },
dcxgjcgj() { dcxgjcgj() {
alert('todo')
this.$refs.html2Pdf.generatePdf()
}, },
dcbhsjgj() { dcbhsjgj() {
alert('todo')
this.$refs.html2Pdf.generatePdf()
}, },
getJjcgjList(val) { getJjcgjList(val) {
this.$modal.loading() this.$modal.loading()

+ 60
- 2
src/views/index.vue View File

@ -51,13 +51,30 @@
</el-card> </el-card>
<el-card class="box-card home-content"> <el-card class="box-card home-content">
<div slot="header" class="clearfix">
<span>系统通知</span>
</div>
<div class="notice-list" v-loading="loading">
<div class="notice-item" v-for="(item,index) in noticeList" :key="index">
<div class="notice-title"><el-badge is-dot class="notice-dot"></el-badge>{{item.title}}</div>
<div class="notice-date">{{item.createTime}}</div>
</div>
<pagination
v-show="noticeTotal>0"
:total="noticeTotal"
:page.sync="searchForm.pageNum"
:limit.sync="searchForm.pageSize"
@pagination="getNoticeList"
/>
</div>
</el-card> </el-card>
</div> </div>
</template> </template>
<script> <script>
import { home_count} from "@/api/business/home/home";
import { home_count,home_noticeList} from "@/api/business/home/home";
export default { export default {
name: "Index", name: "Index",
data() { data() {
@ -69,10 +86,18 @@ export default {
studyFinishCount:'', studyFinishCount:'',
studyWeekCount:'', studyWeekCount:'',
}, },
loading:false,
searchForm: {
pageNum: 1,
pageSize: 10,
},
noticeList:[],
noticeTotal:0
} }
}, },
created(){ created(){
this.getCount() this.getCount()
this.getNoticeList()
}, },
methods: { methods: {
getCount(){ getCount(){
@ -90,6 +115,17 @@ export default {
.finally(() => { .finally(() => {
this.$modal.closeLoading() this.$modal.closeLoading()
}) })
},
getNoticeList(){
this.loading = true;
this.searchForm.startDate = this.daterange && this.daterange.length > 0 ? this.daterange[0] : ''
this.searchForm.endDate = this.daterange && this.daterange.length > 1 ? this.daterange[1] : ''
home_noticeList(this.searchForm).then(response => {
this.noticeList = response.rows;
this.noticeTotal = response.total;
}).finally(()=>{
this.loading = false;
})
} }
} }
} }
@ -131,6 +167,28 @@ export default {
} }
.home-content{ .home-content{
min-height: 400px; min-height: 400px;
.notice-list{
.notice-item{
display: flex;
flex-direction: row;
justify-content: space-between;
border-bottom: 1px solid #eee;
margin-bottom: 10px;
padding-bottom: 5px;
font-size: 12px;
.notice-title{
flex-shrink: 0;
.notice-dot{
margin-right: 2px;
margin-top: 5px;
}
}
.notice-date{
flex-grow: 1;
text-align: right;
}
}
}
} }
} }
</style> </style>

+ 6
- 0
src/views/system/dept/index.vue View File

@ -57,6 +57,7 @@
:tree-props="{children: 'children', hasChildren: 'hasChildren'}" :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
> >
<el-table-column prop="deptName" :label="$t('page.system.dept.name')"></el-table-column> <el-table-column prop="deptName" :label="$t('page.system.dept.name')"></el-table-column>
<el-table-column prop="abbr" :label="$t('page.system.dept.abbr')"></el-table-column>
<el-table-column prop="type" :label="$t('page.system.dept.type')" width="200"> <el-table-column prop="type" :label="$t('page.system.dept.type')" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.type===1">{{$t('page.system.dept.dept')}}</span> <span v-if="scope.row.type===1">{{$t('page.system.dept.dept')}}</span>
@ -121,6 +122,11 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item :label="$t('page.system.dept.abbr')+':'" prop="abbr">
<el-input v-model="form.abbr" :placeholder="$t('form.placeholderInput')" :readonly="readonly" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="$t('page.system.dept.type')+':'" prop="type"> <el-form-item :label="$t('page.system.dept.type')+':'" prop="type">
<el-radio-group v-model="form.type" :disabled="readonly"> <el-radio-group v-model="form.type" :disabled="readonly">
<el-radio :label="1" >{{$t('page.system.dept.dept')}}</el-radio> <el-radio :label="1" >{{$t('page.system.dept.dept')}}</el-radio>

Loading…
Cancel
Save