Browse Source

Merge branch 'master' into ouqian

ouqian
欧骞 1 month ago
parent
commit
e7432c1847
15 changed files with 334 additions and 274 deletions
  1. +1
    -1
      src/assets/styles/ruoyi.scss
  2. +15
    -0
      src/components/Template/CustomTable.vue
  3. +8
    -5
      src/components/Template/HandleFormItem.vue
  4. +37
    -11
      src/views/business/comps/template/comps/bl/BL001.vue
  5. +48
    -22
      src/views/business/comps/template/comps/dj/DJ001.vue
  6. +15
    -8
      src/views/business/comps/template/comps/dl/DL006.vue
  7. +107
    -98
      src/views/business/comps/template/comps/dl/DL018.vue
  8. +16
    -27
      src/views/business/comps/template/comps/dl/DL022.vue
  9. +15
    -18
      src/views/business/comps/template/comps/dl/DL023.vue
  10. +53
    -74
      src/views/business/comps/template/comps/dl/DL024.vue
  11. +1
    -1
      src/views/system/dept/index.vue
  12. +2
    -3
      src/views/system/role/index.vue
  13. +8
    -1
      src/views/system/user/index.vue
  14. +5
    -5
      src/views/system/user/profile/index.vue
  15. +3
    -0
      src/views/system/user/profile/resetPwd.vue

+ 1
- 1
src/assets/styles/ruoyi.scss View File

@ -174,7 +174,7 @@
.list-group-item { .list-group-item {
border-bottom: 1px solid #e7eaec; border-bottom: 1px solid #e7eaec;
border-top: 1px solid #e7eaec;
// border-top: 1px solid #e7eaec;
margin-bottom: -1px; margin-bottom: -1px;
padding: 11px 0px; padding: 11px 0px;
font-size: 13px; font-size: 13px;

+ 15
- 0
src/components/Template/CustomTable.vue View File

@ -106,6 +106,14 @@
</div> </div>
</template> </template>
<div v-else-if = "col.bodyType === 'checkboxTree'">
<HandleFormItem
:field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + col.prop+ rowIndex"
type="checkboxTree" :item="getBodyItem(col, rowIndex)" :value="row[col.prop]"
@change="(e) => onBodyValueChange(rowIndex, colIndex, e, row, col.bodyType)"
:error="hasError(rowIndex, colIndex, col.prop)" @update:error="onErrorUpdate(rowIndex, colIndex, col.prop, $event)"
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.prop)" />
</div>
<div v-else-if="col.bodyType === 'operableInput'" class="flex flex1"> <div v-else-if="col.bodyType === 'operableInput'" class="flex flex1">
<div class="flex1 grid-container"> <div class="flex1 grid-container">
<div class="flex" <div class="flex"
@ -931,6 +939,13 @@ export default {
item.disabled = false; item.disabled = false;
} }
} }
if(col.noBorder){
item.noBorder = true;
}
if(col.bodyLayout){
item.layout = col.bodyLayout;
}
return item return item
}, },
getBodyButtonItem(col,) { getBodyButtonItem(col,) {

+ 8
- 5
src/components/Template/HandleFormItem.vue View File

@ -37,7 +37,7 @@
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
<div v-else-if="type === 'checkboxTree'" class="flex1 checkbox-list-container" <div v-else-if="type === 'checkboxTree'" class="flex1 checkbox-list-container"
:class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '') + (error ? ' form-error-border' : '')">
:class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '') + (error ? ' form-error-border' : '') + (item.noBorder ? ' no-border' : '') + (item.layout === 'horizontal' ? ' flex' : '')">
<div v-for="group in item.options" :key="group.value" class="checkbox-tree-group" <div v-for="group in item.options" :key="group.value" class="checkbox-tree-group"
:class="{ 'item-center': isShowOtherByCheckboxTree(group.value) }"> :class="{ 'item-center': isShowOtherByCheckboxTree(group.value) }">
<el-checkbox :label="group.value" :disabled="getDisabled()" <el-checkbox :label="group.value" :disabled="getDisabled()"
@ -1164,8 +1164,8 @@ export default {
isSame = isEqual(current.oldValue, current.newValue); isSame = isEqual(current.oldValue, current.newValue);
isOldValueEmpty = isValueEmpty(current.oldValue); isOldValueEmpty = isValueEmpty(current.oldValue);
} else if (this.type === "checkboxTree") { } else if (this.type === "checkboxTree") {
const current = this.getCheckboxTreeInfo();
const { oldValue = {}, newValue } = current;
const current = this.getCheckboxTreeInfo() || {};
const { oldValue = {}, newValue = {} } = current;
if (currentHandleType === "checkboxTreeCheckbox") { if (currentHandleType === "checkboxTreeCheckbox") {
isSame = isEqual(oldValue.checked, newValue.checked); isSame = isEqual(oldValue.checked, newValue.checked);
isOldValueEmpty = oldValue.checked === undefined; isOldValueEmpty = oldValue.checked === undefined;
@ -1248,7 +1248,7 @@ export default {
const current = this.getCheckboxTreeInfo(); const current = this.getCheckboxTreeInfo();
if (this.currentHandleType === "checkboxTreeCheckbox") { if (this.currentHandleType === "checkboxTreeCheckbox") {
const { oldValue = {}, newValue = {} } = current; const { oldValue = {}, newValue = {} } = current;
recordOldVlaue = `${oldValue.label || ''}:${oldValue.checked ? '勾选' : '未勾选'}`;
recordOldVlaue = `${oldValue?.label || ''}:${oldValue?.checked ? '勾选' : '未勾选'}`;
recordValue = `${newValue.label || ''}:${newValue.checked ? '勾选' : '未勾选'}`; recordValue = `${newValue.label || ''}:${newValue.checked ? '勾选' : '未勾选'}`;
isModify = newValue.checked !== undefined; isModify = newValue.checked !== undefined;
} else { } else {
@ -2023,7 +2023,7 @@ export default {
} }
.checkbox-tree-group { .checkbox-tree-group {
padding: 5px 0;
padding: 5px 10px 5px 0;
} }
.form-error-border { .form-error-border {
@ -2032,4 +2032,7 @@ export default {
border-radius: 4px; border-radius: 4px;
border: 1px solid #ff5d5d; border: 1px solid #ff5d5d;
} }
.no-border {
border: none;
}
</style> </style>

+ 37
- 11
src/views/business/comps/template/comps/bl/BL001.vue View File

@ -235,23 +235,26 @@ export default {
label: 'template.dj.dj003.cyd', label: 'template.dj.dj003.cyd',
prop: "cyd", prop: "cyd",
bodyType: 'input', bodyType: 'input',
bodyFillType: 'actFill'
bodyFillType: 'actFill',
width: 180,
}, },
{ {
label: 'template.dj.dj003.dwbh', label: 'template.dj.dj003.dwbh',
prop: "dwbh", prop: "dwbh",
bodyType: 'input', bodyType: 'input',
bodyFillType: 'actFill'
bodyFillType: 'actFill',
width: 180,
}, },
{ {
label: 'template.dj.dj003.ypmc', label: 'template.dj.dj003.ypmc',
prop: "ypmcTa", prop: "ypmcTa",
bodyType: 'checkboxTree', bodyType: 'checkboxTree',
bodyFillType: 'actFill', bodyFillType: 'actFill',
bodyOptions: [
{value:1,label:'正常'},
{value:0,label:'偏离'},
],
width: 280,
bodyLayout: 'horizontal',//
optionCode:"ypmcTaOptions",
noBorder: true,
bodyOptions: this.ypmcTaOptions,
}, },
{ {
label: 'template.dj.dj003.cysj', label: 'template.dj.dj003.cysj',
@ -268,13 +271,15 @@ export default {
{value:1,label:'正常'}, {value:1,label:'正常'},
{value:0,label:'偏离'}, {value:0,label:'偏离'},
], ],
bodyFillType: 'actFill'
bodyFillType: 'actFill',
width: 180,
}, },
{ {
label: 'template.dj.dj003.yps', label: 'template.dj.dj003.yps',
prop: "yps", prop: "yps",
bodyType: 'inputNumber', bodyType: 'inputNumber',
bodyFillType: 'actFill'
bodyFillType: 'actFill',
width: 180,
}, },
] ]
@ -308,7 +313,14 @@ export default {
data() { data() {
return { return {
formData: {}, formData: {},
refConf
refConf,
ypmcTaOptions: [],
}
},
mounted() {
if(this.fillType === "actFill"){
console.log(this.formData, "this.formData")
this.ypmcTaOptions = this.formData.ypmcTaOptions || []
} }
}, },
methods: { methods: {
@ -319,11 +331,25 @@ export default {
// //
getFilledFormData() { getFilledFormData() {
return this.getFilledFormDataByRefs(refNames)
const filledData = this.getFilledFormDataByRefs(refNames);
if(this.formData.ypmcTaOptions){
filledData.ypmcTaOptions = this.formData.ypmcTaOptions
}
return filledData
}, },
// //
async getFormData() { async getFormData() {
return await this.validFormFields(refNames)
const formData = await this.validFields();
if(this.fillType === "preFill" && !!formData){
const filledData = this.getFilledFormData();
const {stepTableFormData_1 = []} = filledData;
const options = stepTableFormData_1.map(item => ({
value: item.ypmc,
label: item.ypmc,
}))
formData.ypmcTaOptions = options
}
return formData
}, },
// //
async validFields() { async validFields() {

+ 48
- 22
src/views/business/comps/template/comps/dj/DJ001.vue View File

@ -13,7 +13,7 @@
<div class="template-form-item"> <div class="template-form-item">
<BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" <BaseInfoFormPackage fieldItemLabel="template.common.baseInfo"
ref="operateStepRef" :formConfig="operateConfig" :formData="formData" /> ref="operateStepRef" :formConfig="operateConfig" :formData="formData" />
<BaseInfoFormPackage fieldItemLabel="template.dj.dj001.fhfw"
<BaseInfoFormPackage v-if="fillType !== 'preFill'" fieldItemLabel="template.dj.dj001.fhfw"
ref="fhfwCheckBoxRef" :formConfig="fhfwCheckBoxConfig" :formData="formData" /> ref="fhfwCheckBoxRef" :formConfig="fhfwCheckBoxConfig" :formData="formData" />
<div class="template-form-item" > <div class="template-form-item" >
<span>{{ $t('template.dj.dj001.fhfw') }}</span> <span>{{ $t('template.dj.dj001.fhfw') }}</span>
@ -159,13 +159,14 @@ export default {
label: 'template.dj.dj001.fhfw', label: 'template.dj.dj001.fhfw',
type: "checkboxTree", type: "checkboxTree",
fillType: 'actFill', fillType: 'actFill',
options: this.fhfwCheckOptions
options: Array.isArray(this.fhfwCheckOptions) ? this.fhfwCheckOptions : []
}, },
fhlrCheck: { fhlrCheck: {
label: 'template.dj.dj001.fhlr', label: 'template.dj.dj001.fhlr',
type: "checkboxTree", type: "checkboxTree",
fillType: 'actFill', fillType: 'actFill',
options: this.fhlrCheckOptions
options: Array.isArray(this.fhlrCheckOptions) ? this.fhlrCheckOptions : []
}, },
} }
}, },
@ -199,16 +200,17 @@ export default {
}, },
data() { data() {
return { return {
formData: {},
formData: {
fhfwCheck: { checkedValues: [], otherValues: {} },
fhlrCheck: { checkedValues: [], otherValues: {} },
},
fhfwCheckOptions:[], fhfwCheckOptions:[],
fhlrCheckOptions:[], fhlrCheckOptions:[],
isFirstTableDataRecorded: false, isFirstTableDataRecorded: false,
}; };
}, },
mounted() { mounted() {
setTimeout(()=>{
this.getTableData()
},200)
this.getTableData()
}, },
methods: { methods: {
// //
@ -251,23 +253,47 @@ export default {
}, },
// //
getTableData() { getTableData() {
const formData = this.getFilledFormData() || {};
const stepTableFormData = formData.stepTableFormData || [];
const stepTableFormData_1 = formData.stepTableFormData_1 || [];
// options+
const firstList = stepTableFormData
.filter(item => item.fhfw) //
.map(item => ({ label: item.fhfw, value: item.fhfw }))
.filter((item, index, arr) => arr.findIndex(i => i.value === item.value) === index); //
try {
const formData = this.getFilledFormData() || {};
//
const stepTableFormData = formData.stepTableFormData || this.formData.stepTableFormData || [];
const stepTableFormData_1 = formData.stepTableFormData_1 || this.formData.stepTableFormData_1 || [];
// checkboxTreechildren
const firstList = stepTableFormData
.filter(item => item && item.fhfw && item.fhfw.trim()) //
.map(item => ({
label: item.fhfw,
value: item.fhfw,
children: [] // childrencheckboxTree
}))
//
.filter((item, index, arr) => {
return arr.findIndex(i => i.value === item.value) === index;
});
const secondList = stepTableFormData_1
.filter(item => item.fhlr) //
.map(item => ({ label: item.fhlr, value: item.fhlr }))
.filter((item, index, arr) => arr.findIndex(i => i.value === item.value) === index); //
const secondList = stepTableFormData_1
.filter(item => item && item.fhlr && item.fhlr.trim()) //
.map(item => ({
label: item.fhlr,
value: item.fhlr,
children: [] // children
}))
.filter((item, index, arr) => {
return arr.findIndex(i => i.value === item.value) === index;
});
// computed
this.fhfwCheckOptions = firstList;
this.fhlrCheckOptions = secondList;
//
this.$nextTick(()=>{
this.fhfwCheckOptions = firstList;
this.fhlrCheckOptions = secondList;
})
} catch (error) {
//
this.fhfwCheckOptions = [];
this.fhlrCheckOptions = [];
}
}, },
} }
}; };

+ 15
- 8
src/views/business/comps/template/comps/dl/DL006.vue View File

@ -659,9 +659,7 @@ export default {
// 2 // 2
const newDataSource = []; const newDataSource = [];
let rowIndexNew = 0; let rowIndexNew = 0;
console.log(doseGroupCount, parallelDishCount,"doseGroupCount, parallelDishCount")
for (let doseIndex = 0; doseIndex < doseGroupCount; doseIndex++) { for (let doseIndex = 0; doseIndex < doseGroupCount; doseIndex++) {
for (let dishIndex = 0; dishIndex < parallelDishCount; dishIndex++) { for (let dishIndex = 0; dishIndex < parallelDishCount; dishIndex++) {
const rowData = { const rowData = {
jlzb: stepTableFormData[doseIndex]?.jlzmc || '', jlzb: stepTableFormData[doseIndex]?.jlzmc || '',
@ -671,19 +669,28 @@ export default {
newDataSource.push(rowData); newDataSource.push(rowData);
rowIndexNew++; rowIndexNew++;
} }
newDataSource.map((item,index)=>{
for (let i = 0; i < doseGroupCount; i++) {
item[`czrxm_${i}Label`] = formatNumberByDigits((i*newDataSource.length)+index+1)
}
})
} }
// newDataSource // newDataSource
console.log(this.getFilledFormData())
if (qsbh && /^\d+$/.test(qsbh)) {
let currentNum = parseInt(qsbh, 10);
const totalRows = newDataSource.length;
//
for (let colIndex = 0; colIndex < Number(jzs); colIndex++) {
//
for (let rowIndex = 0; rowIndex < totalRows; rowIndex++) {
const row = newDataSource[rowIndex];
// 3 001002
row[`czrxm_${colIndex}Label`] = currentNum.toString().padStart(3, '0');
currentNum++;
}
}
}
// 3 // 3
this.$refs.czxxTableRef.updateDataSource(newDataSource); this.$refs.czxxTableRef.updateDataSource(newDataSource);
justUpdateFilledFormData() justUpdateFilledFormData()
}); });
}, },
} }
} }
</script> </script>

+ 107
- 98
src/views/business/comps/template/comps/dl/DL018.vue View File

@ -11,24 +11,23 @@
<TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resource" /> <TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resource" />
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" /> <TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<BaseInfoFormPackage fieldItemLabel="template.dl.dl018.xbxx" label="template.dl.dl018.xbxx"
ref="swypyjInfoRef" :formConfig="swypyjInfoFormConfig" :formData="formData" @onRegentSubmit="onRegentSubmit"
/>
<BaseInfoFormPackage fieldItemLabel="template.dl.dl018.xbxx" label="template.dl.dl018.xbxx"
ref="swypyjInfoRef" :formConfig="swypyjInfoFormConfig" :formData="formData"
@onRegentSubmit="onRegentSubmit" />
<LineLabel label="template.dl.dl018.xbczqk" />
<CustomTable
@headerSelectChange="onHeaderSelectChange"
fieldItemLabel="template.common.operationSteps" @blur="onHandleTableBlur"
@beforeSaveRecord = "beforeSaveRecord"
:showAddRow="false" :showOperation="false"
ref="stepTableRef" :columns="stepColumns" :formData="tableFormData">
<!-- <template slot="operation" slot-scope="{ row, rowIndex, columns }">
<LineLabel label="template.dl.dl018.xbczqk" />
<CustomTable @headerSelectChange="onHeaderSelectChange"
fieldItemLabel="template.common.operationSteps" @blur="onHandleTableBlur"
@beforeSaveRecord="beforeSaveRecord" :showAddRow="false" :showOperation="false"
@clickButton="clickButton"
ref="stepTableRef" :columns="stepColumns" :formData="tableFormData">
<!-- <template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion @startConfig="startConfig" @configComplete="configComplete" <TableOpertaion @startConfig="startConfig" @configComplete="configComplete"
@printTag="printTag" @subPackageSubmit="subPackageSubmit" :fillType="fillType" @printTag="printTag" @subPackageSubmit="subPackageSubmit" :fillType="fillType"
:row="row" :rowIndex="rowIndex" :columns="columns" @deleteRow="deleteRow"> :row="row" :rowIndex="rowIndex" :columns="columns" @deleteRow="deleteRow">
</TableOpertaion> </TableOpertaion>
</template> --> </template> -->
</CustomTable>
</CustomTable>
<LineLabel label="template.dl.dl018.czbz" /> <LineLabel label="template.dl.dl018.czbz" />
<Step ref="stepRef" :formData="formData.stepData"></Step> <Step ref="stepRef" :formData="formData.stepData"></Step>
@ -56,10 +55,10 @@ import TableOpertaionDelete from "@/components/Template/operation/TableOpertaion
export default { export default {
name: "DL018", name: "DL018",
dicts: [
'business_dl_qsxjbltj','business_tjdw'
],
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable,TableOpertaionDelete },
dicts: [
'business_dl_qsxjbltj', 'business_tjdw'
],
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaionDelete },
mixins: [templateMixin], mixins: [templateMixin],
props: { props: {
fillType: { fillType: {
@ -68,13 +67,13 @@ export default {
}, },
}, },
computed: { computed: {
//
tableFormData() {
return {
stepTableFormData: this.formData.stepTableFormData || [],
headerSelectFields: {}
}
},
//
tableFormData() {
return {
stepTableFormData: [{}],
headerSelectFields: {}
}
},
// //
remarkConig() { remarkConig() {
return [ return [
@ -139,7 +138,7 @@ export default {
} }
] ]
}, },
//
//
swypyjInfoFormConfig() { swypyjInfoFormConfig() {
return [ return [
{ {
@ -150,16 +149,16 @@ export default {
label: 'template.dl.dl018.qxbd', label: 'template.dl.dl018.qxbd',
type: 'qxbd', type: 'qxbd',
fillType: 'actFill', fillType: 'actFill',
qxbdType:'DL014',
filledCodes:['bdmc','bdbh'],
qxbdType: 'DL014',
filledCodes: ['bdmc', 'bdbh'],
}, },
bltj: {
bltj: {
label: 'template.dl.dl018.bltj', label: 'template.dl.dl018.bltj',
type: 'select', type: 'select',
fillType: 'preFill', fillType: 'preFill',
options: this.getDictOptions('business_dl_qsxjbltj'), options: this.getDictOptions('business_dl_qsxjbltj'),
otherCode: 'bltjOther', otherCode: 'bltjOther',
showOtherLabel:false
showOtherLabel: false
}, },
} }
} }
@ -174,7 +173,7 @@ export default {
width: 180, width: 180,
bodyType: "input", bodyType: "input",
bodyFillType: "actFill", bodyFillType: "actFill",
disabled: true,
disabled: true,
bodyDisabled: true, bodyDisabled: true,
}, },
{ {
@ -183,7 +182,7 @@ export default {
width: 180, width: 180,
bodyType: "input", bodyType: "input",
bodyFillType: "actFill", bodyFillType: "actFill",
disabled: true,
disabled: true,
bodyDisabled: true, bodyDisabled: true,
}, },
{ {
@ -192,10 +191,14 @@ export default {
width: 180, width: 180,
bodyType: "input", bodyType: "input",
bodyFillType: "actFill", bodyFillType: "actFill",
disabled: true,
subType: 'button',
subKey: 'rsks',
buttonName: 'template.dl.dl018.ksButton',
// disabled: true,
// showOtherLabel: false,
bodySubType: 'button',
bodySubFillType: 'actFill',
bodySubKey: 'rsks',
bodySubButtonName: 'template.dl.dl018.ksButton',
showBodySub: this.fillType === "actFill",
}, },
{ {
label: "template.dl.dl018.rsjs", label: "template.dl.dl018.rsjs",
@ -203,10 +206,14 @@ export default {
width: 180, width: 180,
bodyType: "input", bodyType: "input",
bodyFillType: "actFill", bodyFillType: "actFill",
disabled: true,
subType: 'button',
subKey: 'rsjs',
buttonName: 'template.dl.dl018.jsButton',
// disabled: true,
// showOtherLabel: false,
bodySubType: 'button',
bodySubFillType: 'actFill',
bodySubKey: 'rsjs',
bodySubButtonName: 'template.dl.dl018.jsButton',
showBodySub: this.fillType === "actFill",
}, },
{ {
label: "template.dl.dl018.zs", label: "template.dl.dl018.zs",
@ -254,69 +261,72 @@ export default {
mounted() { mounted() {
}, },
methods: { methods: {
onRegentSubmit(e) {
const { selectInfo, key, rowIndex } = e
const { row } = selectInfo
if (key === 'qxbd') {
try {
//
const bdnr = JSON.parse(row.bdnr)
//
const stepTableFormData = bdnr.jlzTableData || []
clickButton(e,rowIndex) {
console.log(e,rowIndex)
},
onRegentSubmit(e) {
const { selectInfo, key, rowIndex } = e
const { row } = selectInfo
if (key === 'qxbd') {
try {
//
const bdnr = JSON.parse(row.bdnr)
//
const stepTableFormData = bdnr.jlzTableData || []
if (stepTableFormData.length === 0) {
//
this.$set(this.formData, 'stepTableFormData', [])
this.$message.warning('前序表单中没有剂量组数据')
return
}
if (stepTableFormData.length === 0) {
//
this.$set(this.formData, 'stepTableFormData', [])
this.$message.warning('前序表单中没有剂量组数据')
return
}
//
const itemData = stepTableFormData.map(item => ({
jlzb: item.jlzb || '', //
xybh: item.xybh || '', //
rsks: '', //
rsjs: '', //
zs: '', //
ys: '', //
zy: '', //
yx: '', //
tj: '', //
}))
// 使 $set formData CustomTable
this.$set(this.formData, 'stepTableFormData', itemData)
//
const itemData = stepTableFormData.map(item => ({
jlzb: item.jlzb || '', //
xybh: item.xybh || '', //
rsks: '', //
rsjs: '', //
zs: '', //
ys: '', //
zy: '', //
yx: '', //
tj: '', //
}))
// 使 $set formData CustomTable
this.$set(this.formData, 'stepTableFormData', itemData)
this.$message.success(`已从前序表单加载 ${itemData.length} 条剂量组数据`)
} catch (error) {
this.$set(this.formData, 'stepTableFormData', [])
console.error('解析前序表单数据失败:', error)
this.$message.error('解析前序表单数据失败')
}
}
},
//table header
onHeaderSelectChange(data){
const {key, headerSelectFields,dataSource=[]} = data;
this.$message.success(`已从前序表单加载 ${itemData.length} 条剂量组数据`)
} catch (error) {
this.$set(this.formData, 'stepTableFormData', [])
console.error('解析前序表单数据失败:', error)
this.$message.error('解析前序表单数据失败')
}
}
},
//table header
onHeaderSelectChange(data) {
const { key, headerSelectFields, dataSource = [] } = data;
const keys = [ const keys = [
'targetStartSolutionVolumeUnit', 'targetStartSolutionVolumeUnit',
'targetDiluentVolumeUnit', 'targetDiluentVolumeUnit',
'targetSolutionConcentrationUnit', 'targetSolutionConcentrationUnit',
'targetSolutionVolumeUnit', 'targetSolutionVolumeUnit',
] ]
if(keys.includes(key)){
const {targetStartSolution,subTargetStartSolution} = this.$refs.swypyjInfoRef?.getFilledFormData();
if (keys.includes(key)) {
const { targetStartSolution, subTargetStartSolution } = this.$refs.swypyjInfoRef?.getFilledFormData();
const params = { const params = {
subTargetStartSolution, subTargetStartSolution,
headerSelectFields headerSelectFields
} }
this.batchUpdateTargetStartSolutionVolume(dataSource,targetStartSolution,params)
this.batchUpdateTargetStartSolutionVolume(dataSource, targetStartSolution, params)
} }
}, },
beforeSaveRecord(data){
beforeSaveRecord(data) {
const formFields = this.$refs.swypyjInfoRef?.getFilledFormData(); const formFields = this.$refs.swypyjInfoRef?.getFilledFormData();
this.onCommonVerifyNdException(formFields,data);
this.onCommonVerifyNdException(formFields, data);
}, },
configComplete(val) {
configComplete(val) {
const { rowData, headerSelectFields } = val; const { rowData, headerSelectFields } = val;
//(+) //(+)
const { total, unit } = addTj([rowData.actStartSolutionVolume, rowData.actDiluentVolume], [headerSelectFields.actStartSolutionVolumeUnit, headerSelectFields.actDiluentVolumeUnit]) const { total, unit } = addTj([rowData.actStartSolutionVolume, rowData.actDiluentVolume], [headerSelectFields.actStartSolutionVolumeUnit, headerSelectFields.actDiluentVolumeUnit])
@ -326,8 +336,8 @@ export default {
nd: rowData.actSolutionConcentration,// nd: rowData.actSolutionConcentration,//
nddw: headerSelectFields.actSolutionConcentrationUnit, nddw: headerSelectFields.actSolutionConcentrationUnit,
studySubjectId: this.formData.studySubjectId, studySubjectId: this.formData.studySubjectId,
studyFormId:this.formData.id,
studyId:this.formData.studyId,
studyFormId: this.formData.id,
studyId: this.formData.studyId,
kc: total, kc: total,
kcdw: unit, kcdw: unit,
} }
@ -336,30 +346,30 @@ export default {
// //
getFilledFormData() { getFilledFormData() {
return this.getFilledFormDataByRefs(["baseInfoRef", "swypyjInfoRef", "stepTableRef", "stepRef","remarkRef"])
return this.getFilledFormDataByRefs(["baseInfoRef", "swypyjInfoRef", "stepTableRef", "stepRef", "remarkRef"])
}, },
// //
async getFormData() { async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "swypyjInfoRef", "stepTableRef", "stepRef","remarkRef"]);
let content = await this.validFormFields(["baseInfoRef", "swypyjInfoRef", "stepTableRef", "stepRef", "remarkRef"]);
return content; return content;
}, },
getResource() { getResource() {
//使 //使
const stepResource = this.$refs.stepRef.getStepResource() const stepResource = this.$refs.stepRef.getStepResource()
const tableList = this.$refs.qcxjjyqkTableRef?.getFilledFormData()?.stepTableFormData || []
const tableList = this.$refs.qcxjjyqkTableRef?.getFilledFormData()?.stepTableFormData || []
// //
this.resourceTmp = stepResource.sjResource || [] this.resourceTmp = stepResource.sjResource || []
this.yqResourceTmp = stepResource.yqResource || [] this.yqResourceTmp = stepResource.yqResource || []
const tableFromHyqk = tableList
.filter(item => item.xybh)
.map(item => ({
bh: item.xybh,
type: 'cell'
}))
const tableFromHyqk = tableList
.filter(item => item.xybh)
.map(item => ({
bh: item.xybh,
type: 'cell'
}))
this.resourceTmp = [...this.resourceTmp, ...tableFromHyqk]
this.resourceTmp = [...this.resourceTmp, ...tableFromHyqk]
return this.resourceTmp; return this.resourceTmp;
}, },
// //
@ -377,5 +387,4 @@ export default {
} }
}; };
</script> </script>
<style rel="stylesheet/scss" lang="scss">
</style>
<style rel="stylesheet/scss" lang="scss"></style>

+ 16
- 27
src/views/business/comps/template/comps/dl/DL022.vue View File

@ -14,7 +14,7 @@
<!-- 观察情况 --> <!-- 观察情况 -->
<div class="template-form-item"> <div class="template-form-item">
<BaseInfoFormPackage ref="swypyjInfoRef" fieldItemLabel="template.common.operationSteps" <BaseInfoFormPackage ref="swypyjInfoRef" fieldItemLabel="template.common.operationSteps"
@onRegentSubmit="onRegentSubmit" :formConfig="stepFormConfig" @blur="onHandleBlur"
:formConfig="stepFormConfig" @blur="onHandleBlur"
:formData="formData" /> :formData="formData" />
<div style="color:#999;font-size:14px;"> <div style="color:#999;font-size:14px;">
畸变类型以代号填写断片(b)裂隙(g)互换及射体(t)环状染色体(r)多倍体(p)双着丝点染色体(d)内复制(e)染色体碎化(z)缺失(l)粘着(s)微小体(m) 畸变类型以代号填写断片(b)裂隙(g)互换及射体(t)环状染色体(r)多倍体(p)双着丝点染色体(d)内复制(e)染色体碎化(z)缺失(l)粘着(s)微小体(m)
@ -26,9 +26,9 @@
<template slot="operation" slot-scope="{ row, rowIndex, columns }"> <template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaionDelete :row="row" :rowIndex="rowIndex" :columns="columns" <TableOpertaionDelete :row="row" :rowIndex="rowIndex" :columns="columns"
@deleteRow="deleteRow"></TableOpertaionDelete> @deleteRow="deleteRow"></TableOpertaionDelete>
<div v-if="fillType === 'actFill'" class="edit-button" @click="onEditClick(row, rowIndex)">
<button v-if="fillType === 'actFill'" class="edit-button" @click="onEditClick(row, rowIndex)">
{{ row.isComplete ? '编辑' : '完成' }} {{ row.isComplete ? '编辑' : '完成' }}
</div>
</button>
</template> </template>
</CustomTable> </CustomTable>
</div> </div>
@ -154,42 +154,42 @@ export default {
prop: 'bpbh', prop: 'bpbh',
bodyType: 'input', bodyType: 'input',
bodyFillType: 'actFill', bodyFillType: 'actFill',
width: 100,
width: 200,
bodyMaxlength: 50, bodyMaxlength: 50,
}, { }, {
label: 'template.dl.dl022.gcxps', label: 'template.dl.dl022.gcxps',
prop: 'gcxps', prop: 'gcxps',
bodyType: 'inputNumber', bodyType: 'inputNumber',
bodyFillType: 'actFill', bodyFillType: 'actFill',
width: 100,
width: 200,
bodyMaxlength: 10, bodyMaxlength: 10,
}, { }, {
label: 'template.dl.dl022.jgjxjbs', label: 'template.dl.dl022.jgjxjbs',
prop: 'jgjxjbs', prop: 'jgjxjbs',
bodyType: 'inputNumber', bodyType: 'inputNumber',
bodyFillType: 'actFill', bodyFillType: 'actFill',
width: 80,
width: 200,
disabled: true disabled: true
}, { }, {
label: 'template.dl.dl022.lxjbs', label: 'template.dl.dl022.lxjbs',
prop: 'lxjbs', prop: 'lxjbs',
bodyType: 'inputNumber', bodyType: 'inputNumber',
bodyFillType: 'actFill', bodyFillType: 'actFill',
width: 100,
width: 200,
disabled: true disabled: true
}, { }, {
label: 'template.dl.dl022.dbtjbs', label: 'template.dl.dl022.dbtjbs',
prop: 'dbtjbs', prop: 'dbtjbs',
bodyType: 'inputNumber', bodyType: 'inputNumber',
bodyFillType: 'actFill', bodyFillType: 'actFill',
width: 100,
width: 200,
disabled: true disabled: true
}, { }, {
label: 'template.dl.dl022.nfzjbs', label: 'template.dl.dl022.nfzjbs',
prop: 'nfzjbs', prop: 'nfzjbs',
bodyType: 'inputNumber', bodyType: 'inputNumber',
bodyFillType: 'actFill', bodyFillType: 'actFill',
width: 80,
width: 200,
disabled: true disabled: true
}, { }, {
label: 'template.dl.dl022.jblx', label: 'template.dl.dl022.jblx',
@ -223,8 +223,6 @@ export default {
}, },
handleEdit(){ handleEdit(){
const {currentItem, currentRowIndex} = this; const {currentItem, currentRowIndex} = this;
currentItem.isComplete = !currentItem.isComplete; currentItem.isComplete = !currentItem.isComplete;
this.$refs.tableRef.updateDataSourceByRowIndex(currentRowIndex, currentItem) this.$refs.tableRef.updateDataSourceByRowIndex(currentRowIndex, currentItem)
}, },
@ -240,7 +238,7 @@ export default {
EventBus.$emit('showEditSignDialog', { uuid: this.uuid }); EventBus.$emit('showEditSignDialog', { uuid: this.uuid });
this.currentItem = item; this.currentItem = item;
this.currentRowIndex = rowIndex; this.currentRowIndex = rowIndex;
}, },
// //
onAddRow() { onAddRow() {
@ -248,20 +246,6 @@ export default {
jblx: [{value: undefined}], jblx: [{value: undefined}],
}) })
}, },
//
onRegentSubmit(e) {
const { selectInfo, key, rowIndex } = e
const { row } = selectInfo
console.log('选择显微镜预留===', row)
// if (key === 'yqbh' && this.$refs.yqsyTableRef) {
// const params = {
// yqmc: row.mc,
// yqxh: row.xh,
// xccsjzjdrq: row.jzrq
// }
// this.$refs.yqsyTableRef.updateDataSourceByRowIndex(rowIndex, params)
// }
},
onFormSelect(fields) { onFormSelect(fields) {
this.onHandleBlur(fields) this.onHandleBlur(fields)
}, },
@ -363,7 +347,12 @@ export default {
<style rel="stylesheet/scss" lang="scss"> <style rel="stylesheet/scss" lang="scss">
.edit-button{ .edit-button{
color: #409eff; color: #409eff;
margin-left: 10px;
font-size: 13px;
border-radius: 3px;
padding: 5px 9px;
cursor: pointer; cursor: pointer;
border-color: transparent;
background: transparent;
margin: 0 0 5px 10px !important;
} }
</style> </style>

+ 15
- 18
src/views/business/comps/template/comps/dl/DL023.vue View File

@ -47,7 +47,7 @@ import TableOpertaionDelete from "@/components/Template/operation/TableOpertaion
export default { export default {
name: "dl023", name: "dl023",
dicts: [ dicts: [
'business_dl_xbmc'
'business_dl_xbmc',"business_sydd"
], ],
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaionDelete }, components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaionDelete },
mixins: [templateMixin], mixins: [templateMixin],
@ -100,13 +100,11 @@ export default {
//yqsyxxColumns使 //yqsyxxColumns使
yqsyxxColumns() { yqsyxxColumns() {
return [{ return [{
label: 'template.dl.dl023.yqbh',
prop: 'yqbh',
bodyType: 'input',
bodyFillType: 'actFill',
bodyDisabled: true,
disabled: true
}, {
label: 'template.dl.dl023.yqbh',
prop: 'yqbh',
bodyType: 'yq',
bodyFillType: 'actFill'
}, {
label: 'template.dl.dl023.yqmc', label: 'template.dl.dl023.yqmc',
prop: 'yqmc', prop: 'yqmc',
bodyType: 'input', bodyType: 'input',
@ -153,7 +151,7 @@ export default {
label: 'template.dl.dl023.sydd', label: 'template.dl.dl023.sydd',
type: 'select', type: 'select',
fillType: 'actFill', fillType: 'actFill',
options: this.getDictOptions('business_dl_sydd'),
options: this.getDictOptions('business_sydd'),
otherCode: 'syddOther', otherCode: 'syddOther',
showOtherLabel: false showOtherLabel: false
}, },
@ -226,15 +224,14 @@ export default {
onRegentSubmit(e) { onRegentSubmit(e) {
const { selectInfo, key, rowIndex } = e const { selectInfo, key, rowIndex } = e
const { row } = selectInfo const { row } = selectInfo
console.log('选择仪器编号预留===', row)
// if (key === 'yqbh' && this.$refs.yqsyTableRef) {
// const params = {
// yqmc: row.mc,
// yqxh: row.xh,
// xccsjzjdrq: row.jzrq
// }
// this.$refs.yqsyTableRef.updateDataSourceByRowIndex(rowIndex, params)
// }
if (key === 'yqbh' && this.$refs.tableRef) {
const params = {
yqmc: row.mc,
yqxh: row.xh,
xcrq: row.jzrq,
}
this.$refs.tableRef.updateDataSourceByRowIndex(rowIndex, params)
}
}, },
onFormSelect(fields) { onFormSelect(fields) {
this.onHandleBlur(fields) this.onHandleBlur(fields)

+ 53
- 74
src/views/business/comps/template/comps/dl/DL024.vue View File

@ -15,7 +15,7 @@
<!-- 操作记录 --> <!-- 操作记录 -->
<div class="template-form-item"> <div class="template-form-item">
<BaseInfoFormPackage ref="swypyjInfoRef" fieldItemLabel="template.common.operationSteps" <BaseInfoFormPackage ref="swypyjInfoRef" fieldItemLabel="template.common.operationSteps"
:formConfig="stepFormConfig" @blur="onHandleBlur"
:formConfig="stepFormConfig" @blur="onHandleBlur" @onRegentSubmit="onRegentSubmit"
:formData="formData" /> :formData="formData" />
<CustomTable <CustomTable
:ref="`tableRef`" :ref="`tableRef`"
@ -56,7 +56,7 @@ import TableOpertaionDelete from "@/components/Template/operation/TableOpertaion
export default { export default {
name: "dl024", name: "dl024",
dicts: [ dicts: [
'business_dl_xbmc'
'business_dl_xbmc','business_sydd'
], ],
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable,TableOpertaionDelete }, components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable,TableOpertaionDelete },
mixins: [templateMixin], mixins: [templateMixin],
@ -67,6 +67,13 @@ export default {
}, },
}, },
computed: { computed: {
//
tableFormData() {
return {
stepTableFormData: this.formData.stepTableFormData || [],
headerSelectFields: {}
}
},
// //
remarkConig() { remarkConig() {
return [ return [
@ -145,6 +152,7 @@ export default {
label: 'template.dl.dl024.qxbd', label: 'template.dl.dl024.qxbd',
type: 'qxbd', type: 'qxbd',
fillType: 'actFill', fillType: 'actFill',
qxbdType:'DL003',
filledCodes:['bdmc','bdbh'], filledCodes:['bdmc','bdbh'],
}, },
pykssj:{ pykssj:{
@ -152,7 +160,7 @@ export default {
type: 'input', type: 'input',
fillType: 'actFill', fillType: 'actFill',
subType: 'button', subType: 'button',
subKey: 'pyjssj',
subKey: 'pykssj',
buttonName: 'template.dl.dl024.jsButton', buttonName: 'template.dl.dl024.jsButton',
}, },
pyjssj: { pyjssj: {
@ -188,87 +196,49 @@ export default {
mounted() { mounted() {
}, },
methods: { methods: {
//
//
onRegentSubmit(e) { onRegentSubmit(e) {
const { selectInfo, key, rowIndex } = e const { selectInfo, key, rowIndex } = e
const { row } = selectInfo const { row } = selectInfo
console.log('选择仪器编号预留===',row) console.log('选择仪器编号预留===',row)
// if (key === 'yqbh' && this.$refs.yqsyTableRef) {
try {
//
const bdnr = JSON.parse(row.bdnr)
//
const stepTableFormData = bdnr.jlzTableData || []
if (stepTableFormData.length === 0) {
//
this.$set(this.formData, 'stepTableFormData', [])
this.$message.warning('前序表单中没有细胞编号数据')
return
}
//
const itemData = stepTableFormData.map(item => ({
xbbh: item.jlzb || '', //
}))
// 使 $set formData CustomTable
this.$set(this.formData, 'stepTableFormData', itemData)
this.$message.success(`已从前序表单加载 ${itemData.length} 条细胞编号数据`)
} catch (error) {
this.$set(this.formData, 'stepTableFormData', [])
console.error('解析前序表单数据失败:', error)
this.$message.error('解析前序表单数据失败')
}
// if (key === 'qxbd' && this.$refs.tableRef) {
// const params = { // const params = {
// yqmc: row.mc,
// yqmc: row.xbbh,
// yqxh: row.xh, // yqxh: row.xh,
// xccsjzjdrq: row.jzrq // xccsjzjdrq: row.jzrq
// } // }
// this.$refs.yqsyTableRef.updateDataSourceByRowIndex(rowIndex, params)
// this.$refs.tableRef.updateDataSourceByRowIndex(rowIndex, params)
// } // }
}, },
onFormSelect(fields){ onFormSelect(fields){
this.onHandleBlur(fields) this.onHandleBlur(fields)
}, },
//table header
onHeaderSelectChange(data){
const {key, headerSelectFields,dataSource=[]} = data;
const keys = [
'targetStartSolutionVolumeUnit',
'targetDiluentVolumeUnit',
'targetSolutionConcentrationUnit',
'targetSolutionVolumeUnit',
]
if(keys.includes(key)){
const {targetStartSolution,subTargetStartSolution} = this.$refs.swypyjInfoRef?.getFilledFormData();
const params = {
subTargetStartSolution,
headerSelectFields
}
this.batchUpdateTargetStartSolutionVolume(dataSource,targetStartSolution,params)
}
},
beforeSaveRecord(data){
const formFields = this.$refs.swypyjInfoRef?.getFilledFormData();
this.onCommonVerifyNdException(formFields,data);
},
configComplete(val) {
const { rowData, headerSelectFields } = val;
//(+)
const { total, unit } = addTj([rowData.actStartSolutionVolume, rowData.actDiluentVolume], [headerSelectFields.actStartSolutionVolumeUnit, headerSelectFields.actDiluentVolumeUnit])
let postData = {
mc: null,
bh: rowData.targetSolutionCode + rowData.subTargetSolutionCode,
nd: rowData.actSolutionConcentration,//
nddw: headerSelectFields.actSolutionConcentrationUnit,
studySubjectId: this.formData.studySubjectId,
studyFormId:this.formData.id,
studyId:this.formData.studyId,
kc: total,
kcdw: unit,
}
this.configCompleteRequest(postData);
},
//
subPackageSubmit(data) {
const { fzsj, rowData, headerSelectFields } = data;
const { fzList = [], dw = "", mybh } = fzsj;
if (fzList && fzList.length > 0) {
const list = fzList.map((item) => {
return {
bh: mybh + item.preCode + item.subCode,
kc: item.num,
kcdw: dw,
}
})
let postData = {
studyId: this.formData.studyId,
studyFormId: this.formData.id,
bh: mybh,
nd: rowData.actSolutionConcentration || 0,
nddw: headerSelectFields.actSolutionConcentrationUnit,
studySubjectId: this.formData.studySubjectId,
studyFormId:this.formData.id,
list: list
}
this.subPackageRequest(postData);
}
},
// //
getFilledFormData() { getFilledFormData() {
return this.getFilledFormDataByRefs(["baseInfoRef", "swypyjInfoRef","remarkRef","tableRef"]) return this.getFilledFormDataByRefs(["baseInfoRef", "swypyjInfoRef","remarkRef","tableRef"])
@ -280,9 +250,18 @@ export default {
}, },
getResource() { getResource() {
//使 //使
// stepRef
this.resourceTmp = []
this.yqResourceTmp = []
const stepResource = this.$refs.stepRef.getStepResource()
const tableList = this.$refs.qcxjjyqkTableRef?.getFilledFormData()?.stepTableFormData || []
//
this.resourceTmp = stepResource.sjResource || []
const tableFromHyqk = tableList
.filter(item => item.xybh)
.map(item => ({
bh: item.xybh,
type: 'cell'
}))
this.resourceTmp = [...this.resourceTmp, ...tableFromHyqk]
return this.resourceTmp; return this.resourceTmp;
}, },
// //

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

@ -359,7 +359,7 @@ export default {
getDept(row.deptId).then(response => { getDept(row.deptId).then(response => {
this.form = response.data this.form = response.data
this.open = true this.open = true
this.title = this.$t('page.system.dept.modifyDept')
this.title = readonly? this.$t('form.detail'): this.$t('page.system.dept.modifyDept')
listDeptExcludeChild(row.deptId).then(response => { listDeptExcludeChild(row.deptId).then(response => {
this.deptOptions = this.handleTree(response.data, "deptId") this.deptOptions = this.handleTree(response.data, "deptId")
if (this.deptOptions.length == 0) { if (this.deptOptions.length == 0) {

+ 2
- 3
src/views/system/role/index.vue View File

@ -229,7 +229,7 @@
</el-form-item> </el-form-item>
<el-form-item :label="$t('page.system.role.remark')+':'"> <el-form-item :label="$t('page.system.role.remark')+':'">
<el-input v-model="form.remark" type="textarea" :placeholder="$t('form.placeholderSelect')" :readonly="readonly"></el-input>
<el-input v-model="form.remark" type="textarea" :placeholder="$t('form.placeholderSelect')" :readonly="readonly" :maxlength="200" show-word-limit></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('page.system.role.permit')+':'"> <el-form-item :label="$t('page.system.role.permit')+':'">
<!-- <el-checkbox v-model="menuExpand" @change="handleCheckedTreeExpand($event, 'menu')">展开/折叠</el-checkbox> <!-- <el-checkbox v-model="menuExpand" @change="handleCheckedTreeExpand($event, 'menu')">展开/折叠</el-checkbox>
@ -638,7 +638,7 @@ export default {
}) })
}) })
}) })
this.title = this.$t('page.system.role.modifyRole')
this.title = readonly? this.$t('form.detail'): this.$t('page.system.role.modifyRole')
}, },
/** 选择角色权限范围触发 */ /** 选择角色权限范围触发 */
dataScopeSelectChange(value) { dataScopeSelectChange(value) {
@ -670,7 +670,6 @@ export default {
submitForm: function() { submitForm: function() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
this.$modal.loading()
if (this.form.roleId != undefined) { if (this.form.roleId != undefined) {
this.form.menuIds = this.getMenuAllCheckedKeys() this.form.menuIds = this.getMenuAllCheckedKeys()
this.operate = "update" this.operate = "update"

+ 8
- 1
src/views/system/user/index.vue View File

@ -167,7 +167,7 @@
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item :label="$t('page.system.user.department')+':'" prop="deptId"> <el-form-item :label="$t('page.system.user.department')+':'" prop="deptId">
<treeselect v-model="form.deptId" :options="enabledDeptOptions" :show-count="true" :placeholder="$t('form.placeholderSelect')" />
<treeselect v-model="form.deptId" :options="enabledDeptOptions" :show-count="true" :placeholder="$t('form.placeholderSelect')" @input="handleChangeDept" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
@ -596,6 +596,9 @@ export default {
this.form.password = "" this.form.password = ""
}) })
}, },
handleChangeDept(){
this.$refs["form"].validate()
},
/** 重置密码按钮操作 */ /** 重置密码按钮操作 */
handleResetPwd(row) { handleResetPwd(row) {
this.$prompt('请输入"' + row.userName + '"的新密码', "提示", { this.$prompt('请输入"' + row.userName + '"的新密码', "提示", {
@ -734,6 +737,10 @@ export default {
}) })
}, },
handleExportHistory(){ handleExportHistory(){
if(this.changeDialog.total<1){
this.$message.error(`暂无数据导出!`)
return
}
this.saveSimpleLog({name:'',nameEn:'',jcmc:'角色变更历史导出',jcmcEn:'Role History Export'}) this.saveSimpleLog({name:'',nameEn:'',jcmc:'角色变更历史导出',jcmcEn:'Role History Export'})
this.download('/system/business/roleChange/export', this.changeDialog.searchForm, `roleHistory_${new Date().getTime()}.xlsx`) this.download('/system/business/roleChange/export', this.changeDialog.searchForm, `roleHistory_${new Date().getTime()}.xlsx`)
}, },

+ 5
- 5
src/views/system/user/profile/index.vue View File

@ -7,9 +7,9 @@
<span>个人信息</span> <span>个人信息</span>
</div> </div>
<div> <div>
<div class="text-center">
<!-- <div class="text-center">
<userAvatar /> <userAvatar />
</div>
</div> -->
<ul class="list-group list-group-striped"> <ul class="list-group list-group-striped">
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="user" />用户名称 <svg-icon icon-class="user" />用户名称
@ -45,9 +45,9 @@
<span>基本资料</span> <span>基本资料</span>
</div> </div>
<el-tabs v-model="selectedTab"> <el-tabs v-model="selectedTab">
<el-tab-pane label="基本资料" name="userinfo">
<!-- <el-tab-pane label="基本资料" name="userinfo">
<userInfo :user="user" /> <userInfo :user="user" />
</el-tab-pane>
</el-tab-pane> -->
<el-tab-pane label="修改密码" name="resetPwd"> <el-tab-pane label="修改密码" name="resetPwd">
<resetPwd /> <resetPwd />
</el-tab-pane> </el-tab-pane>
@ -72,7 +72,7 @@ export default {
user: {}, user: {},
roleGroup: {}, roleGroup: {},
postGroup: {}, postGroup: {},
selectedTab: "userinfo"
selectedTab: "resetPwd"
} }
}, },
created() { created() {

+ 3
- 0
src/views/system/user/profile/resetPwd.vue View File

@ -57,6 +57,9 @@ export default {
if (valid) { if (valid) {
updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => { updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => {
this.$modal.msgSuccess("修改成功") this.$modal.msgSuccess("修改成功")
this.$store.dispatch('LogOut').then(() => {
location.href = '/'
})
}) })
} }
}) })

Loading…
Cancel
Save