|
@@ -1,6 +1,6 @@
|
|
|
<!-- 物料信息基础档案——详情 -->
|
|
|
<template>
|
|
|
- <div class="material-details">
|
|
|
+ <div class="material-details" v-loading="loading">
|
|
|
<!-- 操作栏 -->
|
|
|
<!-- 基本信息栏 -->
|
|
|
<div v-if="activeMainTab == 'material'">
|
|
@@ -39,13 +39,17 @@
|
|
|
<el-col :span="1.5">
|
|
|
<el-button-group>
|
|
|
<el-button size="small" @click="handleMaterialType">维护物料类别</el-button>
|
|
|
- <el-dropdown split-button size="small" @click="handleIsInvoke(true)" @command="handleIsInvoke">
|
|
|
+ <el-button size="small" @click="handleIsInvoke" :key="count">
|
|
|
+ <!-- 0:启用 2:停用 -->
|
|
|
+ {{ basicData.value.isEnable == '0' ? '停用' : '启用' }}
|
|
|
+ </el-button>
|
|
|
+ <!-- <el-dropdown split-button size="small" @click="handleIsInvoke(true)" @command="handleIsInvoke">
|
|
|
启用
|
|
|
<el-dropdown-menu slot="dropdown">
|
|
|
<el-dropdown-item :command="isInvoke(true)">启用</el-dropdown-item>
|
|
|
<el-dropdown-item :command="isInvoke(false)">停用</el-dropdown-item>
|
|
|
</el-dropdown-menu>
|
|
|
- </el-dropdown>
|
|
|
+ </el-dropdown> -->
|
|
|
</el-button-group>
|
|
|
</el-col>
|
|
|
|
|
@@ -112,10 +116,14 @@
|
|
|
|
|
|
<!-- 切换 -->
|
|
|
<el-button-group>
|
|
|
- <el-button size="small" icon="el-icon-d-arrow-left" @click="handleChangePage('first')"></el-button>
|
|
|
- <el-button size="small" icon="el-icon-arrow-left" @click="handleChangePage('pre')"></el-button>
|
|
|
- <el-button size="small" icon="el-icon-arrow-right" @click="handleChangePage('next')"></el-button>
|
|
|
- <el-button size="small" icon="el-icon-d-arrow-right" @click="handleChangePage('end')"></el-button>
|
|
|
+ <el-button size="small" icon="el-icon-d-arrow-left" :disabled="!handleBasicEdit"
|
|
|
+ @click="handleChangePage('first')" />
|
|
|
+ <el-button size="small" icon="el-icon-arrow-left" :disabled="!handleBasicEdit"
|
|
|
+ @click="handleChangePage('pre')" />
|
|
|
+ <el-button size="small" icon="el-icon-arrow-right" :disabled="!handleBasicEdit"
|
|
|
+ @click="handleChangePage('next')" />
|
|
|
+ <el-button size="small" icon="el-icon-d-arrow-right" :disabled="!handleBasicEdit"
|
|
|
+ @click="handleChangePage('end')" />
|
|
|
</el-button-group>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -175,8 +183,8 @@
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item v-else-if="f.attribute == 'image'" :label="f.name">
|
|
|
- <el-image :src="basicData.value[f.prop]" fit="contain">
|
|
|
- </el-image>
|
|
|
+ <el-image :src="basicData.value[f.prop]" fit="contain"></el-image>
|
|
|
+ <!-- <img :src="basicData.value[f.prop]" alt="加载失败"> -->
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
@@ -312,45 +320,53 @@
|
|
|
</el-card>
|
|
|
|
|
|
<!-- 维护物料类别弹窗 -->
|
|
|
- <el-dialog title="物料类别维护" :visible.sync="materialType.show" :before-close="handleCloseOtherDetails"
|
|
|
+ <el-dialog title="物料类别维护" :visible.sync="materialType.show" :before-close="handleCloseTypeDetails"
|
|
|
:close-on-press-escape="false" :close-on-click-modal="false" width="80%" center class="materialType">
|
|
|
|
|
|
<!-- 操作按钮 -->
|
|
|
<el-row :gutter="10" class="mb10">
|
|
|
<el-col :span="1.5">
|
|
|
<el-button-group>
|
|
|
- <el-button size="small" @click="handleMaterialTypeRow('add')">增行</el-button>
|
|
|
- <el-button size="small" @click="handleMaterialTypeRow('del')">删行</el-button>
|
|
|
+ <el-button size="small" :disabled="!materialType.isEdit" @click="handleMaterialTypeRow('add')">增行</el-button>
|
|
|
+ <el-button size="small" :disabled="!materialType.isEdit" @click="handleMaterialTypeRow('del')">删行</el-button>
|
|
|
</el-button-group>
|
|
|
<el-button-group>
|
|
|
- <el-button size="small" @click="handleMaterialTypeRow('save')">保存</el-button>
|
|
|
+ <el-button size="small" @click="handleMaterialTypeRow('edit')">{{ materialType.isEdit
|
|
|
+ ? '保存' : '修改' }}</el-button>
|
|
|
+ <el-button size="small" v-if="materialType.isEdit" @click="handleMaterialTypeRow('cancal')">取消</el-button>
|
|
|
<el-button size="small" @click="handleMaterialTypeRow">刷新</el-button>
|
|
|
</el-button-group>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<!-- 表格数据 -->
|
|
|
- <el-table :data="materialType.value" stripe style="width: 100%" max-height="350" v-loading="materialType.loading">
|
|
|
- <el-table-column type="index" width="50" label="序号"></el-table-column>
|
|
|
+ <el-table :data="materialType.value" stripe style="width: 100%" max-height="350" v-loading="materialType.loading"
|
|
|
+ @selection-change="handleSelectionType">
|
|
|
+ <el-table-column type="selection" width="30" />
|
|
|
+ <el-table-column type="index" width="50" label="序号" />
|
|
|
<el-table-column v-for="mt in materialType.form" v-if="mt.show" :label="mt.name" width="180">
|
|
|
- <!-- :prop="mt.prop" -->
|
|
|
-
|
|
|
- <!-- 多选框 -->
|
|
|
- <el-checkbox size="small" v-if="mt.attribute == 'checkbox'" :disabled="!mt.edit"
|
|
|
- v-model="materialType.value[mt.prop]" />
|
|
|
-
|
|
|
- <!-- 下拉框 / 参照弹窗 -->
|
|
|
- <el-select size="small" v-else-if="mt.attribute == 'select'" :disabled="!mt.edit"
|
|
|
- v-model="materialType.value[`${mt.prop}Label`]" :key="materialType.value[mt.prop]" :placeholder="mt.name"
|
|
|
- @focus="mt.apiUrl && handleQueryMore(mt, '', { name: 'materialType', prop: mt.prop })">
|
|
|
- <el-option v-if="mt.dictId" v-for="d in mt.dictId" :key="d.dictValue" :label="d.dictLabel"
|
|
|
- :value="d.dictValue">
|
|
|
- </el-option>
|
|
|
- <div slot="empty"></div>
|
|
|
- </el-select>
|
|
|
-
|
|
|
- <!-- 其他类型 -->
|
|
|
- <el-input v-else size="small" v-model="materialType.value[mt.prop]" :readonly="!mt.edit"
|
|
|
- :placeholder="mt.name" />
|
|
|
+
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <!-- :prop="mt.prop" -->
|
|
|
+ <!-- 多选框 -->
|
|
|
+ <el-checkbox size="small" v-if="mt.attribute == 'checkbox'" :disabled="!(materialType.isEdit && mt.edit)"
|
|
|
+ v-model="scope.row[mt.prop]" />
|
|
|
+
|
|
|
+ <!-- 下拉框 / 参照弹窗 -->
|
|
|
+ <el-select size="small" v-else-if="mt.attribute == 'select'" :disabled="!(materialType.isEdit && mt.edit)"
|
|
|
+ v-model="scope.row[`${mt.prop}Label`]" :key="scope.row[mt.prop]" :placeholder="mt.name"
|
|
|
+ @focus="mt.apiUrl && handleQueryMore(mt, '', { name: 'materialType', prop: mt.prop })">
|
|
|
+ <el-option v-if="mt.dictId" v-for="d in mt.dictId" :key="d.dictValue" :label="d.dictLabel"
|
|
|
+ :value="d.dictValue">
|
|
|
+ </el-option>
|
|
|
+ <div slot="empty"></div>
|
|
|
+ </el-select>
|
|
|
+
|
|
|
+ <!-- 其他类型 -->
|
|
|
+
|
|
|
+ <el-input v-else size="small" v-model="scope.row[mt.prop]" :readonly="!(materialType.isEdit && mt.edit)"
|
|
|
+ :placeholder="mt.name" />
|
|
|
+ </template>
|
|
|
+
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
|
|
@@ -395,7 +411,7 @@
|
|
|
<el-form :inline="true" label-position="right" :model="basicData.value">
|
|
|
<!-- <el-form-item label="所属组织">
|
|
|
<el-input v-model="basicData.value.orgName" placeholder="所属组织"></el-input>
|
|
|
- </el-form-item> -->
|
|
|
+ </el-form-item> -->
|
|
|
<el-form-item label="物料编码">
|
|
|
<el-input v-model="basicData.value.code" size="small" readonly placeholder="物料编码"></el-input>
|
|
|
</el-form-item>
|
|
@@ -407,7 +423,7 @@
|
|
|
</el-form-item>
|
|
|
<!-- <el-form-item label="版本号">
|
|
|
<el-input v-model="basicData.value.version" placeholder="版本号"></el-input>
|
|
|
- </el-form-item> -->
|
|
|
+ </el-form-item> -->
|
|
|
|
|
|
</el-form>
|
|
|
</el-collapse-item>
|
|
@@ -539,6 +555,7 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
count: 1,
|
|
|
+ loading: false,
|
|
|
// 详情固定标签页
|
|
|
detailsTabs,
|
|
|
defaultProps: {
|
|
@@ -581,6 +598,8 @@ export default {
|
|
|
value: [],
|
|
|
form: [],
|
|
|
loading: false,
|
|
|
+ checkedList: [],
|
|
|
+ isEdit: false,
|
|
|
},
|
|
|
// 医药行业
|
|
|
medcineData: {
|
|
@@ -885,13 +904,15 @@ export default {
|
|
|
|
|
|
_this.getExecuteMethods(item.apiUrl, param, (data) => {
|
|
|
let { tableBody } = data;
|
|
|
+
|
|
|
+ // 维护物料类别 --- 属于列表中获取label
|
|
|
if (dataName == 'materialType') {
|
|
|
|
|
|
_this[dataName].value.length && (_this[dataName].value = _this[dataName].value.map(d => {
|
|
|
|
|
|
let Blabel = tableBody.filter((t) => t.id == d[item.prop])[0];
|
|
|
console.log(Blabel, 'Blabel``````````````````````````');
|
|
|
- d[`${item.prop}Label`] = (Blabel && Blabel.name) || Blabel || '11111';
|
|
|
+ d[`${item.prop}Label`] = (Blabel && Blabel.name) || Blabel || '';
|
|
|
return d;
|
|
|
}))
|
|
|
|
|
@@ -903,6 +924,7 @@ export default {
|
|
|
}
|
|
|
|
|
|
this.count++;
|
|
|
+ this.loading = false;
|
|
|
console.log(_this[dataName].value, `${dataName}//////////////////////`);
|
|
|
})
|
|
|
}
|
|
@@ -1234,6 +1256,7 @@ export default {
|
|
|
// 刷新
|
|
|
handleRefresh() {
|
|
|
console.log('刷新');
|
|
|
+ this.handleRest();
|
|
|
},
|
|
|
// 过滤
|
|
|
handleFilter(e) {
|
|
@@ -1257,7 +1280,14 @@ export default {
|
|
|
},
|
|
|
// 启用
|
|
|
handleIsInvoke(e) {
|
|
|
- console.log('启用', e);
|
|
|
+ console.log('启用', this.basicData.value.isEnable);
|
|
|
+ if (this.basicData.value.isEnable == '0') {
|
|
|
+ this.basicData.value.isEnable = '2';
|
|
|
+ } else {
|
|
|
+ // this.basicData.isEnable 为空或者为2
|
|
|
+ this.basicData.value.isEnable = '0';
|
|
|
+ }
|
|
|
+ this.handleSave();
|
|
|
},
|
|
|
isInvoke(val) {
|
|
|
return val;
|
|
@@ -1288,31 +1318,110 @@ export default {
|
|
|
this.$router.go(0)
|
|
|
});
|
|
|
},
|
|
|
+ // 物料类别列表选中
|
|
|
+ handleSelectionType(list) {
|
|
|
+ console.log('物料类别列表选中', list);
|
|
|
+ this.materialType.checkedList = list;
|
|
|
+ },
|
|
|
// 物料类别增删行
|
|
|
handleMaterialTypeRow(op) {
|
|
|
+ let _this = this;
|
|
|
switch (op) {
|
|
|
-
|
|
|
// 增行
|
|
|
case 'add':
|
|
|
- console.log('物料类别增行');
|
|
|
- break;
|
|
|
+ let rowObj = _this.materialType.value[0];
|
|
|
+
|
|
|
+ for (const key in rowObj) {
|
|
|
+ if (Object.hasOwnProperty.call(rowObj, key)) {
|
|
|
|
|
|
+ rowObj[key] = '';
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ console.log(rowObj, '物料类别增行rowObj');
|
|
|
+ this.materialType.value.push(rowObj);
|
|
|
+
|
|
|
+ break;
|
|
|
// 删行
|
|
|
case 'del':
|
|
|
- console.log('物料类别删行');
|
|
|
+ console.log('物料类别删行', _this.materialType.checkedList);
|
|
|
+ if (_this.materialType.checkedList.length) {
|
|
|
+ _this.materialType.checkedList.map(c => {
|
|
|
+ _this.materialType.value = _this.materialType.value.filter(m => m.id != c.id)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ message: '请选择需要删除的信息!',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ }
|
|
|
break;
|
|
|
-
|
|
|
- // 保存
|
|
|
- case 'save':
|
|
|
- console.log('物料类别保存', this.materialType.value);
|
|
|
+ // 取消
|
|
|
+ case 'cancal':
|
|
|
+ this.materialType.isEdit = false;
|
|
|
+ this.handleMaterialTypeRow();
|
|
|
+ break;
|
|
|
+ // 保存、修改
|
|
|
+ case 'edit':
|
|
|
+ if (_this.materialType.isEdit) {
|
|
|
+ // 编辑状态
|
|
|
+ let nullList = _this.materialType.value.filter(m => (!m.drugId || m.drugId == ''));
|
|
|
+ console.log(nullList, 'nullList');
|
|
|
+ if (!nullList.length) {
|
|
|
+ console.log('物料类别保存', _this.materialType.value);
|
|
|
+ let params = {
|
|
|
+ materialId: _this.materialId,
|
|
|
+ medcineItems: _this.materialType.value
|
|
|
+ }
|
|
|
+ materialApi.medcineitemBatchSave(params).then(res => {
|
|
|
+ console.log(res, '保存物料类型');
|
|
|
+ if (res.code == 200) {
|
|
|
+ _this, materialType.isEdit = false;
|
|
|
+ _this.handleMaterialTypeRow();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // 保存
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ message: '存在数据为空!',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 非编辑状态
|
|
|
+ console.log('物料类别修改');
|
|
|
+ this.materialType.isEdit = true;
|
|
|
+ }
|
|
|
break;
|
|
|
// 刷新
|
|
|
default:
|
|
|
console.log('物料类别刷新');
|
|
|
+ if (this.materialType.isEdit) {
|
|
|
+ this.$message({
|
|
|
+ message: '请先保存数据!',
|
|
|
+ type: 'warning'
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.materialType.loading = true;
|
|
|
+ this.getTagList('material_medcine_item', (form) => {
|
|
|
+ this.materialType.form = form;
|
|
|
+ this.getMedcineitemList(this.materialId);
|
|
|
+ });
|
|
|
+ }
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
},
|
|
|
+ // 物料类别弹窗关闭前
|
|
|
+ handleCloseTypeDetails(done) {
|
|
|
+
|
|
|
+ console.log('物料类别弹窗关闭前');
|
|
|
+ this.materialType.isEdit ? this.$message({
|
|
|
+ message: '请先保存数据!',
|
|
|
+ type: 'warning'
|
|
|
+ }) : done();
|
|
|
+
|
|
|
+ },
|
|
|
// 保存修改并新增
|
|
|
handleSaveAdd() {
|
|
|
console.log('保存修改并新增');
|
|
@@ -1452,23 +1561,32 @@ export default {
|
|
|
},
|
|
|
|
|
|
|
|
|
- // 取消之后重新查询页面
|
|
|
- handleRest() {
|
|
|
+ // 重新加载
|
|
|
+ async handleRest() {
|
|
|
+ this.loading = true;
|
|
|
// 基本信息
|
|
|
- this.getTagList('material', (form) => {
|
|
|
+ await this.getTagList('material', (form) => {
|
|
|
this.basicData.form = form;
|
|
|
this.getMaterialDetails(this.materialId, 'material');
|
|
|
})
|
|
|
// 医疗行业
|
|
|
- this.getTagList('material_medcine', (form) => {
|
|
|
+ await this.getTagList('material_medcine', (form) => {
|
|
|
this.medcineData.form = form;
|
|
|
this.getMedcineDetails(this.materialId, 'material_medcine');
|
|
|
})
|
|
|
},
|
|
|
},
|
|
|
created() {
|
|
|
+
|
|
|
// 基本信息
|
|
|
this.handleRest();
|
|
|
+ if (window.name === '') {
|
|
|
+ console.log('页面首次被加载')
|
|
|
+ this.$route.query.isEdit && this.handleBasicEdit();
|
|
|
+ } else {
|
|
|
+ console.log('页面被刷新')
|
|
|
+ }
|
|
|
+
|
|
|
},
|
|
|
|
|
|
}
|
|
@@ -1537,9 +1655,9 @@ export default {
|
|
|
overflow-x: hidden;
|
|
|
}
|
|
|
|
|
|
- .el-dialog__header {
|
|
|
- background-color: rgb(244, 244, 244);
|
|
|
- }
|
|
|
+ // .el-dialog__header {
|
|
|
+ // background-color: rgb(244, 244, 244);
|
|
|
+ // }
|
|
|
}
|
|
|
|
|
|
.el-dialog__header {
|
|
@@ -1638,6 +1756,7 @@ export default {
|
|
|
.od-msg>>>.el-form-item__content {
|
|
|
width: 60%;
|
|
|
box-sizing: border-box;
|
|
|
+ height: 36px;
|
|
|
}
|
|
|
|
|
|
.od-msg>>>.el-checkbox__label {
|