提交 1649f29c 编写于 作者: 申玉强's avatar 申玉强

Merge branch 'release' into 'develop'

Release

See merge request com.pica.cloud.education.frontend/pica.cloud.web-education-admin!478
此差异已折叠。
...@@ -157,6 +157,7 @@ ...@@ -157,6 +157,7 @@
style="width: 450px;" style="width: 450px;"
@change="updateCertificate(index)" @change="updateCertificate(index)"
:disabled="disabled" :disabled="disabled"
filterable
> >
<el-option <el-option
v-for="item in optionsCertificate" v-for="item in optionsCertificate"
...@@ -182,6 +183,7 @@ ...@@ -182,6 +183,7 @@
placeholder="请选择证书" placeholder="请选择证书"
style="width: 350px" style="width: 350px"
:disabled="disabled" :disabled="disabled"
filterable
> >
<el-option <el-option
v-for="item in optionsCertificate" v-for="item in optionsCertificate"
......
...@@ -75,7 +75,7 @@ router.beforeEach((to, from, next) => { ...@@ -75,7 +75,7 @@ router.beforeEach((to, from, next) => {
} }
next(); next();
}else{ }else{
next(false) next({ path: "/home" });
return return
} }
}) })
......
此差异已折叠。
...@@ -218,9 +218,18 @@ html,body{ ...@@ -218,9 +218,18 @@ html,body{
border: 1px solid #449284 !important; border: 1px solid #449284 !important;
opacity: 0.5; opacity: 0.5;
} }
// .el-button--default:focus, .el-button--default:hover {
// color: #449284 !important;
// border-color: #449284 !important;
// background-color: #fff !important;
// }
.el-pagination.is-background .el-pager li:not(.disabled).active { .el-pagination.is-background .el-pager li:not(.disabled).active {
background: #449284 !important; background: #449284 !important;
} }
// 表格选中
.el-table__body tr.current-row>td.el-table__cell {
background-color: rgb(236, 244, 243) !important;
}
// 主题样式修改 // 主题样式修改
.el-radio__input.is-checked .el-radio__inner { .el-radio__input.is-checked .el-radio__inner {
......
import fetch from '../fetch'; import fetch from "../fetch";
import { getBaseUrl } from '@/utils/index'; import { getBaseUrl } from "@/utils/index";
export const uploadExcel = (data, projectId) => { export const uploadExcel = (data, projectId) => {
// return utils.checkAuth(()=>{ // return utils.checkAuth(()=>{
return fetch({ return fetch({
headers: { headers: {
'Content-Type': 'application/json;charset=UTF-8', "Content-Type": "application/json;charset=UTF-8",
sysCode: 12, sysCode: 12,
token: localStorage.getItem('storageToken'), token: localStorage.getItem("storageToken"),
}, },
url: getBaseUrl('portal/v2/role/importRoleFile?projectId=' + projectId), url: getBaseUrl("portal/v2/role/importRoleFile?projectId=" + projectId),
method: 'post', method: "post",
data: data, data: data,
description: '上传excel文件', description: "上传excel文件",
}) });
// }) // })
} };
export const uploadOrgExcel = (data, projectId) => { export const uploadOrgExcel = (data, projectId) => {
// return utils.checkAuth(()=>{ // return utils.checkAuth(()=>{
return fetch({ return fetch({
headers: { headers: {
'Content-Type': 'application/json;charset=UTF-8', "Content-Type": "application/json;charset=UTF-8",
sysCode: 12, sysCode: 12,
token: localStorage.getItem('storageToken'), token: localStorage.getItem("storageToken"),
}, },
url: getBaseUrl('portal/new/scope/org/v1/' + projectId + '/import'), url: getBaseUrl("portal/new/scope/org/v1/" + projectId + "/import"),
method: 'put', method: "put",
data: data, data: data,
description: '上传excel文件', description: "上传excel文件",
}) });
// }) // })
} };
export const uploadPersonExcel = (data, projectId) => { export const uploadPersonExcel = (data, projectId) => {
// return utils.checkAuth(()=>{ // return utils.checkAuth(()=>{
return fetch({ return fetch({
headers: { headers: {
'Content-Type': 'application/json;charset=UTF-8', "Content-Type": "application/json;charset=UTF-8",
sysCode: 12, sysCode: 12,
token: localStorage.getItem('storageToken'), token: localStorage.getItem("storageToken"),
}, },
url: getBaseUrl('portal/new/scope/doctor/v1/' + projectId + '/import'), url: getBaseUrl("portal/new/scope/doctor/v1/" + projectId + "/import"),
method: 'put', method: "put",
data: data, data: data,
description: '上传excel文件', description: "上传excel文件",
}) });
// }) // })
} };
export const uploadShieldExcel = (data, projectId) => { export const uploadShieldExcel = (data, projectId) => {
return fetch({ return fetch({
headers: { headers: {
token: localStorage.getItem('storageToken'), token: localStorage.getItem("storageToken"),
}, },
url: getBaseUrl('aggregate/black/setPeopleBlackStatus/batch/' + projectId), url: getBaseUrl("aggregate/black/setPeopleBlackStatus/batch/" + projectId),
method: 'post', method: "post",
data: data, data: data,
description: '上传excel文件', description: "上传excel文件",
}) });
} };
\ No newline at end of file
export const uploadMateExcel = (data) => {
return fetch({
headers: {
token: localStorage.getItem("storageToken"),
},
url: getBaseUrl("portal/black/transferHospitalInfo"),
method: "post",
data: data,
description: "转换机构信息上传文件",
});
};
export const uploadBatchExcel = (data) => {
return fetch({
headers: {
token: localStorage.getItem("storageToken"),
},
url: getBaseUrl("portal/black/setHospitalBlackStatus/batch"),
method: "post",
data: data,
description: "屏蔽机构操作上传文件",
});
};
...@@ -142,5 +142,82 @@ export const getBusinessCategory = () => { ...@@ -142,5 +142,82 @@ export const getBusinessCategory = () => {
}); });
}; };
export const getContractList = (projectId) => {
return fetch({
headers,
url: getBaseUrl(`store/contract/options/queryByProjectId/${projectId}`),
method: "get",
description: "查询合同",
});
};
export const getCooperationProjectList = () => {
return fetch({
headers,
url: getBaseUrl(
`store/cooperation/project/options/query`
),
method: "get",
description: "查询合作项目",
});
};
export const getGoodsCascadeList = (parentId, level) => {
return fetch({
headers,
url: getBaseUrl(
`store/commodity/categorys/cascade/list?pageNo=1&pageSize=999&parentId=${parentId}&categoryLevel=${level}`
),
method: "get",
description: " 获取商品(药品)分类",
});
};
// `store/medications/query/medicationGoodsListByPage`
export const getMedList = (data) => {
return fetch({
headers,
url: getBaseUrl(`store/medications/query/appliedMedicationGoodsListByPage`),
method: "post",
data,
description: "查询药品列表",
});
};
export const getCategorysList = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/medical/categorys/list`),
method: "get",
params,
description: "查询药品类别",
});
};
export const saveMedList = (data) => {
return fetch({
headers,
url: getBaseUrl(`store/admin/medical/saveAndReturn`),
method: "post",
data,
description: "药品保存",
});
};
// 获取商品分类 / store / commodity / categorys / cascade / listAll;
export const getGoodsListAll = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/commodity/categorys/cascade/listAll`),
method: "get",
params,
description: "查询商品类别",
});
};
// 条形码获取信息
export const getBarcodeData =(barCode) => {
return fetch({
headers,
url: getBaseUrl(`store/admin/medical/queryByBarcode/${barCode}`),
method: "get",
description: "条形码获取信息",
});
}
\ No newline at end of file
...@@ -808,3 +808,23 @@ export const setOptionLabel = (self,selfModel,selfEId,selfEName,list,listEId,lis ...@@ -808,3 +808,23 @@ export const setOptionLabel = (self,selfModel,selfEId,selfEName,list,listEId,lis
export function deepCopy(obj) { export function deepCopy(obj) {
return obj ? JSON.parse(JSON.stringify(obj)) : obj; return obj ? JSON.parse(JSON.stringify(obj)) : obj;
} }
//按照有效数字位数进行四舍五入,默认6位有效数字
export function signFigures(num, rank = 6){
if(!num) return(0);
const sign = num / Math.abs(num);
const number = num * sign;
const temp = rank - 1 - Math.floor(Math.log10(number));
let ans;
if (temp > 0) {
ans = parseFloat(number.toFixed(temp));
}
else if (temp < 0) {
ans = Math.round(number / Math.pow(10, temp)) * temp;
}
else {
ans = Math.round(number);
}
return (ans * sign);
};
...@@ -684,6 +684,7 @@ ...@@ -684,6 +684,7 @@
v-model="item.certificateId" v-model="item.certificateId"
placeholder="请选择证书" placeholder="请选择证书"
style="" style=""
filterable
@change="updateCertificate(index)" @change="updateCertificate(index)"
:disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6" :disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6"
> >
...@@ -719,6 +720,7 @@ ...@@ -719,6 +720,7 @@
v-model="formComponent.certificate" v-model="formComponent.certificate"
placeholder="请选择证书" placeholder="请选择证书"
style="width: 350px" style="width: 350px"
filterable
:disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6" :disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6"
> >
<el-option <el-option
......
...@@ -1173,6 +1173,7 @@ ...@@ -1173,6 +1173,7 @@
placeholder="请选择证书" placeholder="请选择证书"
size="mini" size="mini"
style="width: 450px;" style="width: 450px;"
filterable
@change="updateCertificate(index)" @change="updateCertificate(index)"
:disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6" :disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6"
> >
...@@ -1234,6 +1235,7 @@ ...@@ -1234,6 +1235,7 @@
:class="customError.certificate.className" :class="customError.certificate.className"
> >
<el-select <el-select
filterable
v-model="formComponent.certificate" v-model="formComponent.certificate"
placeholder="请选择证书" placeholder="请选择证书"
style="width: 350px" style="width: 350px"
......
...@@ -956,6 +956,7 @@ ...@@ -956,6 +956,7 @@
placeholder="请选择证书" placeholder="请选择证书"
size="mini" size="mini"
style="width: 450px;" style="width: 450px;"
filterable
@change="updateCertificate(index)" @change="updateCertificate(index)"
:disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6" :disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6"
> >
...@@ -998,6 +999,7 @@ ...@@ -998,6 +999,7 @@
v-model="formComponent.certificate" v-model="formComponent.certificate"
placeholder="请选择证书" placeholder="请选择证书"
style="width: 350px" style="width: 350px"
filterable
:disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6" :disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6"
> >
<el-option <el-option
...@@ -1741,13 +1743,19 @@ export default { ...@@ -1741,13 +1743,19 @@ export default {
if (option == "edit" || option == "storageEdit") { if (option == "edit" || option == "storageEdit") {
notifyData.notifyId = this.formData.notifyId; notifyData.notifyId = this.formData.notifyId;
} }
// 中医项目
const projectType = vm.getUrlSearch(window.location.href, "projectType");
console.log('--projectType', projectType);
if(projectType == 5){
projectModel.projectType = 5;
}
let postData = { let postData = {
projectModel: JSON.stringify(projectModel), projectModel: JSON.stringify(projectModel),
attachmentModel: JSON.stringify(attachmentModel), attachmentModel: JSON.stringify(attachmentModel),
attachmentPDFModel: JSON.stringify(attachmentPDFModel), attachmentPDFModel: JSON.stringify(attachmentPDFModel),
notifyData: JSON.stringify(notifyData) notifyData: JSON.stringify(notifyData)
}; };
//console.log(postData); console.log('JSON.stringify(projectModel)', projectModel, attachmentModel, attachmentPDFModel, notifyData);
openLoading(vm); openLoading(vm);
vm.POST("portal/portalInfo/insertOrUpdate", postData).then(res => { vm.POST("portal/portalInfo/insertOrUpdate", postData).then(res => {
closeLoading(vm); closeLoading(vm);
...@@ -2822,7 +2830,6 @@ export default { ...@@ -2822,7 +2830,6 @@ export default {
projectId: this.projectId, projectId: this.projectId,
administrativeId: "", administrativeId: "",
hospitalLevel: "", hospitalLevel: "",
hospitalLevel: "",
scope: this.getScope("administrative"), scope: this.getScope("administrative"),
pageNum: this.formOrganization.pageNum, pageNum: this.formOrganization.pageNum,
pageSize: this.formOrganization.pageSize pageSize: this.formOrganization.pageSize
......
...@@ -1181,6 +1181,7 @@ ...@@ -1181,6 +1181,7 @@
placeholder="请选择证书" placeholder="请选择证书"
size="mini" size="mini"
style="width: 450px;" style="width: 450px;"
filterable
@change="updateCertificate(index)" @change="updateCertificate(index)"
:disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6" :disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6"
> >
...@@ -1244,6 +1245,7 @@ ...@@ -1244,6 +1245,7 @@
<el-select <el-select
v-model="formComponent.certificate" v-model="formComponent.certificate"
placeholder="请选择证书" placeholder="请选择证书"
filterable
style="width: 350px" style="width: 350px"
:disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6" :disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6"
> >
......
...@@ -213,7 +213,7 @@ ...@@ -213,7 +213,7 @@
<el-dialog <el-dialog
title="请选择项目类型" title="请选择项目类型"
:visible.sync="centerDialogVisible" :visible.sync="centerDialogVisible"
width="600px" width="750px"
:close-on-click-modal="false" :close-on-click-modal="false"
@close="handleTypeClose" @close="handleTypeClose"
center center
...@@ -224,6 +224,7 @@ ...@@ -224,6 +224,7 @@
<el-radio :label="2">CME项目</el-radio> <el-radio :label="2">CME项目</el-radio>
<el-radio :label="3">开放模板</el-radio> <el-radio :label="3">开放模板</el-radio>
<el-radio :label="5">职称考试</el-radio> <el-radio :label="5">职称考试</el-radio>
<el-radio :label="6">中医项目</el-radio>
</el-radio-group> </el-radio-group>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="centerDialogVisible = false">取 消</el-button> <el-button @click="centerDialogVisible = false">取 消</el-button>
...@@ -295,7 +296,6 @@ export default { ...@@ -295,7 +296,6 @@ export default {
data() { data() {
return { return {
changeStatusVisible: false, changeStatusVisible: false,
currentRow: null,
currentType: 4, currentType: 4,
changeStatusConfig: { changeStatusConfig: {
title: "确认通过该项目模版审核吗?", title: "确认通过该项目模版审核吗?",
...@@ -460,6 +460,9 @@ export default { ...@@ -460,6 +460,9 @@ export default {
toPage(isPreview = 0) { toPage(isPreview = 0) {
this.$router.push("edit-manager?projectType=1&isPreview=" + isPreview); this.$router.push("edit-manager?projectType=1&isPreview=" + isPreview);
}, },
toTCMPage(isPreview = 0) {
this.$router.push("edit-manager?projectType=5&isPreview=" + isPreview);
},
toCmePage(isPreview = 0) { toCmePage(isPreview = 0) {
this.$router.push("edit-cme?projectType=2&isPreview=" + isPreview); this.$router.push("edit-cme?projectType=2&isPreview=" + isPreview);
}, },
...@@ -490,6 +493,8 @@ export default { ...@@ -490,6 +493,8 @@ export default {
this.toTemplatePage(); this.toTemplatePage();
} else if (this.newProjectType == 5) { } else if (this.newProjectType == 5) {
this.toProfessionalExamPage(); this.toProfessionalExamPage();
}else if (this.newProjectType == 6) {
this.toTCMPage();
} }
}, },
...@@ -505,16 +510,6 @@ export default { ...@@ -505,16 +510,6 @@ export default {
} }
}, },
// handleCreateProject(isPreview) {
// if (this.newProjectType == 1) { // 1 普通项目 2 CME项目
// this.toPage(isPreview);
// } else if (this.newProjectType == 2) {
// this.toCmePage(isPreview);
// } else if(this.newProjectType == 3) {
// this.toTemplatePage(isPreview);
// }
// },
hanldeCmeClick(row) { hanldeCmeClick(row) {
this.currentRow = row; this.currentRow = row;
let status = row.projectStatus; let status = row.projectStatus;
...@@ -661,13 +656,10 @@ export default { ...@@ -661,13 +656,10 @@ export default {
return text; return text;
// return true / false; // return true / false;
}, },
changeStatusPre() { changeStatusPre() {
this.changeStatus(this.currentRow, this.currentType); this.changeStatus(this.currentRow, this.currentType);
this.changeStatusVisible = false; this.changeStatusVisible = false;
}, },
//
changeStatusForSP(row, type) { changeStatusForSP(row, type) {
this.currentRow = row; this.currentRow = row;
this.currentType = type; this.currentType = type;
...@@ -681,17 +673,18 @@ export default { ...@@ -681,17 +673,18 @@ export default {
} }
this.changeStatusVisible = true; this.changeStatusVisible = true;
}, },
//改变状态 //改变状态
changeStatus(row, type) { changeStatus(row, type) {
console.log('--row', row);
let projectId = row.id; let projectId = row.id;
let level = row.level; let level = row.level;
if (type === 0) { if (type === 0) {
this.updateItemManager(this.formInline); this.updateItemManager(this.formInline);
//编辑 //编辑
if (row.projectType === 1) { if (row.projectType === 1 || row.projectType === 5 ) {
this.$router.push( this.$router.push(
"edit-manager?projectType=1&projectId=" + "edit-manager?projectType=" + row.projectType +"&projectId=" +
projectId + projectId +
"&level=" + "&level=" +
level + level +
...@@ -799,9 +792,6 @@ export default { ...@@ -799,9 +792,6 @@ export default {
this.deleteVisible = true; this.deleteVisible = true;
this.currentRow = row; this.currentRow = row;
}, },
hideDeleteFrom() {
this.deleteVisible = false;
},
// 删除项目 // 删除项目
confirmDelete() { confirmDelete() {
let req = {}; let req = {};
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
</el-radio-group> </el-radio-group>
<!-- <el-button class="complete" type="primary" size="small" @click="complete">完成</el-button> --> <!-- <el-button class="complete" type="primary" size="small" @click="complete">完成</el-button> -->
<el-row :gutter="30" class="row" type="flex" style="margin-top: 10px"> <el-row :gutter="30" class="row" type="flex" style="margin-top: 10px">
<el-form :model="formInline" ref="formInline" label-width="75px" class="form-inline" style=";width:1000px;"> <el-form :model="formInline" ref="formInline" label-width="75px" class="form-inline" style="width:1000px;">
<el-col :span="6" v-if=" shieldType == 0"> <el-col :span="6" v-if=" shieldType == 0">
<el-form-item label="地区:"> <el-form-item label="地区:">
<el-cascader <el-cascader
...@@ -47,12 +47,17 @@ ...@@ -47,12 +47,17 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6" style="padding:0;text-align:right;padding-right:10px;"> <el-col :span="6" style="padding:0;text-align:right;">
<el-button type="primary" size="small" @click="searchList()">搜索</el-button> <el-button type="primary" size="small" @click="searchList()">搜索</el-button>
<el-button type="primary" size="small" @click="importOrder()" v-if="shieldType == 1">批量导入</el-button> <el-button type="primary" size="small" @click="importOrder()" v-if="shieldType == 1">批量导入</el-button>
</el-col> </el-col>
</el-form> </el-form>
</el-row> </el-row>
<el-row justify="end" class="row" type="flex" style="margin: 5px 0 10px;width:1000px;" v-if="shieldType == 0">
<span class="tip">(请在机构信息匹配完成后再进行批量屏蔽)</span>
<el-button type="primary" size="small" @click="importMate()">机构匹配</el-button>
<el-button type="primary" size="small" @click="importBatch()">批量导入</el-button>
</el-row>
<el-table :data="tableData" style="width: 100%"> <el-table :data="tableData" style="width: 100%">
<el-table-column v-if="shieldType == 0" prop="hospitalName" label="医院名称" align="center"></el-table-column> <el-table-column v-if="shieldType == 0" prop="hospitalName" label="医院名称" align="center"></el-table-column>
<el-table-column <el-table-column
...@@ -123,7 +128,7 @@ ...@@ -123,7 +128,7 @@
:show-file-list="true" :show-file-list="true"
:before-upload="uploadfile" :before-upload="uploadfile"
> >
<div class="upload-container"> <div class="upload-container inline-b">
<el-input <el-input
class="file-name" class="file-name"
v-model="fileData.fileName" v-model="fileData.fileName"
...@@ -151,13 +156,103 @@ ...@@ -151,13 +156,103 @@
> >
</div> </div>
</el-dialog> </el-dialog>
<!-- 导入匹配机构名单 -->
<el-dialog
class="exportlogistics-dialog"
title="匹配机构导入"
:visible="isShowMate"
@close="isShowMate = false"
width="600px"
>
<el-form label-width="120px">
<el-form-item label="导入文档:">
<el-upload
class="upload-excel"
action="#"
accept=".xlsx"
multiple
:limit="1"
:show-file-list="false"
:before-upload="uploadMateFile"
>
<div class="upload-container inline-b">
<el-input
class="file-name"
v-model="mateFileData.fileName"
size="mini"
readonly
></el-input
>
<el-button type="primary" size="mini">选择文件</el-button>
</div>
</el-upload>
</el-form-item>
<el-form-item label="模板:">
<a class="import-url" :href="mateTmpUrl" style="color: #449284">
导入匹配机构模板.xlxs</a>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click="cancelMateImport">取消</el-button>
<el-button
size="small"
:loading="isLoading"
type="primary"
@click="confirmMateImport"
>确认</el-button
>
</div>
</el-dialog>
<!-- 批量屏蔽 -->
<el-dialog
class="exportlogistics-dialog"
title="批量导入"
:visible="isShowBatch"
@close="isShowBatch = false"
width="600px"
>
<el-form label-width="120px">
<el-form-item label="导入文档:">
<el-upload
class="upload-excel"
action="#"
accept=".xlsx"
multiple
:limit="1"
:show-file-list="false"
:before-upload="uploadBatchFile"
>
<div class="upload-container inline-b">
<el-input
class="file-name"
v-model="batchFileData.fileName"
size="mini"
readonly
></el-input
>
<el-button type="primary" size="mini">选择文件</el-button>
</div>
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click="cancelBatchImport">取消</el-button>
<el-button
size="small"
:loading="isLoading"
type="primary"
@click="confirmBatchImport"
>确认</el-button
>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import BreadCrumb from "../../components/breadcrumb.vue"; import BreadCrumb from "../../components/breadcrumb.vue";
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import { openLoading, closeLoading } from "../../utils/utils"; import { openLoading, closeLoading } from "../../utils/utils";
import { uploadShieldExcel } from "@/utils/education/educationApi"; import { uploadShieldExcel, uploadMateExcel, uploadBatchExcel } from "@/utils/education/educationApi";
import * as commonUtil from "../../utils/utils"; import * as commonUtil from "../../utils/utils";
import * as operationData from "../../utils/operation"; import * as operationData from "../../utils/operation";
let vm = null; let vm = null;
...@@ -215,6 +310,17 @@ export default { ...@@ -215,6 +310,17 @@ export default {
shieldBlock: "", shieldBlock: "",
scopeRow: {}, scopeRow: {},
administrativeValue: "", administrativeValue: "",
isShowMate: false,
isShowBatch: false,
mateFileData: {
file: "",
fileName: "",
},
batchFileData: {
file: "",
fileName: "",
},
mateTmpUrl: 'https://files.yunqueyi.com/template/org_template.xlsx',
props: { props: {
lazy: true, lazy: true,
lazyLoad(node, resolve) { lazyLoad(node, resolve) {
...@@ -523,7 +629,102 @@ export default { ...@@ -523,7 +629,102 @@ export default {
console.log(`当前页: ${val}`); console.log(`当前页: ${val}`);
this.formInline.pageNo = val; this.formInline.pageNo = val;
this.search(); this.search();
} },
importMate() {
this.isShowMate = true;
},
importBatch() {
this.isShowBatch = true
},
//机构匹配上传exel
uploadMateFile(file) {
console.log("file",file)
this.mateFileData.fileName = file.name;
const formData = new FormData();
formData.append("projectId", this.projectId)
formData.append("file",file)
this.mateFileData.file = formData;
console.log("file",formData)
},
// 机构匹配确认导入
confirmMateImport() {
if (!this.mateFileData.file) {
this.$message.error('请确认您上传的文件');
return
}
this.isLoading = true;
uploadMateExcel(this.mateFileData.file).then(res => {
this.isLoading = false;
if (res.code == '000000') {
if (res.data) {
this.cancelMateImport();
let a = document.createElement('a');
let href = res.data;
a.setAttribute('href',href);
a.click();
this.$message({
message: '导入成功,您上传的机构信息已匹配完成,请确认后进行批量屏蔽',
type: 'success'
});
} else {
this.$message.error(res.message);
}
} else {
this.$message.error(res.message);
}
}).catch(error => {
this.isLoading = false;
this.$message.error(error.message);
})
},
// 机构匹配取消导入
cancelMateImport() {
this.mateFileData = {
file: "",
fileName: "",
};
this.isShowMate = false;
},
//批量屏蔽上传exel
uploadBatchFile(file) {
this.batchFileData.fileName = file.name;
const formData = new FormData();
formData.append('projectId', this.projectId)
formData.append("file",file)
this.batchFileData.file = formData;
},
// 批量屏蔽确认导入
confirmBatchImport() {
if (!this.batchFileData.file) {
this.$message.error('请确认您上传的文件');
return
}
this.isLoading = true;
uploadBatchExcel(this.batchFileData.file).then(res => {
this.isLoading = false;
if (res.code == '000000') {
this.cancelBatchImport();
this.$message({
message: `导入成功${res.data.success}条,失败${res.data.failed}`,
type: 'warning'
});
this.searchList();
} else {
this.$message.error(res.message);
}
}).catch(error => {
this.isLoading = false;
this.$message.error(error.message);
})
},
//批量屏蔽取消导入
cancelBatchImport() {
this.batchFileData = {
file: "",
fileName: "",
};
this.isShowBatch = false;
},
} }
}; };
</script> </script>
...@@ -532,6 +733,11 @@ export default { ...@@ -532,6 +733,11 @@ export default {
.component-content { .component-content {
padding: 10px; padding: 10px;
background: #fff; background: #fff;
.tip {
color: #D51F35;
font-size: 14px;
line-height: 32px;
}
.complete { .complete {
float: right; float: right;
} }
...@@ -539,5 +745,14 @@ export default { ...@@ -539,5 +745,14 @@ export default {
color: #D51F35; color: #D51F35;
} }
} }
.inline-b{
display: flex;
.el-button--mini{
margin-left: 20px;
}
}
.upload-container {
line-height: 0;
}
} }
</style> </style>
\ No newline at end of file
...@@ -606,7 +606,7 @@ export default { ...@@ -606,7 +606,7 @@ export default {
} }
} }
// url = `/create-good?id=${row.goodsId}&storeId=${this.searchForm.storeId}&goodsType=${goodsType}&commissionFlag=${this.commissionFlag}` // url = `/create-good?id=${row.goodsId}&storeId=${this.searchForm.storeId}&goodsType=${goodsType}&commissionFlag=${this.commissionFlag}`
let url = `/create-good?id=${item}&storeId=${this.storeId}&goodsType=${goodsType}&commissionFlag=2`; let url = `/create-good-new?id=${item}&storeId=${this.storeId}&goodsType=${goodsType}&commissionFlag=2`;
// this.$store.dispatch('goodsManage/changeGoodsInfo', {...row}); // this.$store.dispatch('goodsManage/changeGoodsInfo', {...row});
this.$router.push({ this.$router.push({
path: url, path: url,
......
const form1 = {
approvalNumber: "", // 批准文号
medicCommonName: "", // 产品通用名称
barCode: "", // 条形码
medicGoodsName: "", // 商品名称
specifications: "", // 规格
productionCompany: "", // 生产企业
medicalCategoryId: "", // 药品分类
};
const form = {
id: 0,
goodsName: "",
goodsDescription: "",
goodsHeaderImages: [],
goodsType: "",
// barCode: "",
costPrice: 0,
decrStock: 0, //减少库存
incrStock: "", //增加库存
storeId: "",
optPrice: "",
scorePerformance: 0,
goodsStock: 0,
stock: 0,
externalGoodsCode: "",
leastCount: 1,
mostCount: -1,
incrType: 1,
saleType: 1,
minWhole: 1,
expressLimitFlag: 0, //是否支持退货退款
};
const form3 = {
goodsCategoryIdList: [], // 商品分类
cooperationProjectId: "", // 合作项目id
contractId: "", // 合同id
goodsName: "", // 商品名称
choiceGoods: false,
goodsDescription: "", // 商品介绍
goodsHeaderImages: [],
goodsVideoList: [],
goodsDetailImages: [],
medicationId: "",
};
export const originForm1 = form1;
export const originForm3 = form3;
export const originForm = form;
const checkBarcode = (rule, value, cb) => {
const valedBarcode = new RegExp("[\\u4E00-\\u9FFF]+", "g");
if (value && valedBarcode.test(value)) cb(new Error("条形码不能输入中文"));
cb();
};
const checkNumber = (rule, value, cb) => {
const val = String(value);
const isInt = /^([1-9][0-9]*)$/;
if (val && !isInt.test(val)) cb(new Error("请输入正整数"));
cb();
};
const checkProjectStr = (rule, value, callback) => {
if (value.indexOf("\\") != -1) {
//存在
callback(new Error("请勿输入字符“ \\ "));
} else if (value.indexOf(".") != -1) {
callback(new Error("请勿输入字符“ . "));
} else {
callback();
}
};
const rules1 = {
barCode: [
{ required: true, message: "请输入条形码", trigger: "blur" },
{ validator: checkBarcode, trigger: "blur" },
],
medicCommonName: [
{ required: true, message: "请输入产品名称/通用名称", trigger: "blur" },
],
medicGoodsName: [
{
required: true,
message: "请输入商品名称或品牌名/商品名",
trigger: "blur",
},
],
specifications: [{ required: true, message: "请输入规格", trigger: "blur" }],
productionCompany: [
{ required: true, message: "请输入生产企业", trigger: "blur" },
],
medicalCategoryId: [
{ required: true, message: "请选择药品分类", trigger: "change" },
],
approvalNumber: [
{ required: true, message: "请输入批准文号", trigger: "blur" },
],
// dosageId:[
// { required: true, message: "请选择剂型", trigger: "change" }
// ],
categoryIdLevel2: [
{ required: true, message: "请选择药品类型", trigger: "blur" },
],
categoryIdLevel3: [
{ required: true, message: "请选择一级类目", trigger: "blur" },
],
categoryIdLevel4: [
{ required: true, message: "请选择二级类目", trigger: "blur" },
],
categoryIdLevel5: [
{ required: true, message: "请选择三级类目", trigger: "blur" },
],
specification_url: [
{ required: true, message: "请上传药品说明书", trigger: "blur" },
],
// otc:[
// { required: true, message: "请选择是否是处方", trigger: "blur" }
// ],
dynamicFlag: [
{ required: true, message: "请选择内容发布权", trigger: "blur" },
],
};
const rules2 = {
// barCode: [
// { required: true, message: "请输入条形码", trigger: "submit" },
// { validator: checkBarcode, trigger: "submit" }
// ],
checkName: [{ required: true, message: "请输入检测名称", trigger: "blur" }],
hospitalName: [
{ required: true, message: "请输入医疗机构名称", trigger: "blur" },
],
hospitalType: [
{ required: true, message: "请选择医疗机构类型", trigger: "blur" },
],
checkItem: [{ required: true, message: "请输入检测项目", trigger: "blur" }],
checkStandard: [
{ required: true, message: "请输入检测指标", trigger: "blur" },
],
useCount: [
{ required: true, message: "请输入使用人数", trigger: "submit" },
{ validator: checkNumber, trigger: "submit" },
],
checkType: [{ required: true, message: "请选择检测类型", trigger: "blur" }],
suitableArr: [{ required: true, message: "请选择适用人群", trigger: "blur" }],
endTime: [{ required: true, message: "请选择商品使用日期", trigger: "blur" }],
// goodsCheckImages: [
// { required: true, message: "请上传检测说明图", trigger: "blur" }
// ],
};
const rules = {
// barCode: [
// { required: true, message: "请输入条形码", trigger: "blur" },
// { validator: checkBarcode, trigger: "blur" },
// ],
optPrice: [{ required: true, message: "请输入价格", trigger: "blur" }],
saleType: [{ required: true, message: "请选择销售方式", trigger: "change" }],
stock: [{ required: true, message: "请输入库存", trigger: "blur" }],
minWhole: [{ required: true, message: "请输入最小起批", trigger: "blur" }],
expressLimitFlag: [
{
required: true,
message: "请选择是否支持售后",
trigger: "change",
},
],
};
const rules3 = {
goodsName: [
{ required: true, message: "请输入商品名称", trigger: "blur" },
// { validator: checkProjectStr, trigger: "submit" },
],
goodsDescription: [
{ required: true, message: "请输入商品介绍", trigger: "blur" },
],
goodsHeaderImages: [
{ required: true, message: "请上传商品头图", trigger: "blur" },
],
goodsCategoryIdList: [
{ required: true, message: "请选择商品分类", trigger: "change" },
],
};
export const originRules1 = rules1;
export const originRules2 = rules2;
export const originRules3 = rules3;
export const originRules = rules;
.create-shop-wrapper-new{
.create-shop-content{
background: #fff;
padding: 10px;
.step-content {
overflow: hidden;
height: 60px;
padding: 10px 10px 50px ;
border-bottom: 1px solid #efefef;
.title{
font-size: 13px;
color: #449284;
}
}
.word-tip {
color: #e6af7a;
}
.word-show {
color: #449284;
cursor: pointer;
}
}
.suitableList-select {
width: 445px;
}
.el-button--text{
color: #449284;
font-size: 14px;
&::after{
content: '';
position: relative;
height: 14px;
/*border-right: 1px solid #EBEEF5;*/
border-right: 1px solid #aaaaaa;
padding-right: 10px;
}
&:last-of-type{
&::after{
content: '';
position: relative;
width: 1px;
height: 14px;
border-right: none;
}
}
}
.required-label .el-form-item__label::before {
content: "*";
color: #f56c6c;
margin-right: 4px;
}
.goods-category,.project-req {
.el-form-item__label::before {
content: "*";
color: #f56c6c;
margin-right: 4px;
}
.project-tip {
color: #aaaaaa;
}
}
.choice-goods {
.el-form-item__label::before {
content: "*";
color: #f56c6c;
margin-right: 4px;
}
}
.label-detailimg {
.el-form-item__label::before {
content: "*";
color: #f56c6c;
margin-right: 4px;
}
.bg-uploader {
.el-upload {
display: flex;
}
}
}
.basic-item-icon {
position: relative;
.show-goods-table {
.del-goods {
color: #449284;
cursor: pointer;
}
}
.require {
position: absolute;
left: 67px;
top: 11px;
color: #f56c6c;
}
.error-message{
font-size: 12px;
color: #f56c6c;
}
.upload-message {
position: absolute;
left: 0;
top: 105px;
font-size: 12px;
color: #f56c6c;
}
.backTip {
font-size: 12px;
color: red;
cursor: pointer;
}
.ad-back {
color: #449284;
}
.img-delete {
position: absolute;
left: 0px;
top: 0px;
width: 84px;
height: 100px;
background: #000;
opacity: 0.7;
z-index: 999;
i {
color: #fff;
margin-top: 39px;
margin-left: 0px;
}
}
}
.word-num {
font-size: 12px;
color: #999;
// padding-top: 5px;
}
.line {
margin-left: 10px;
width: 20px;
}
.bg-uploader {
.bg-img {
float: left;
width: 84px;
height: 100px;
}
.limit-text {
float: left;
margin-left: 10px;
margin-top: -10px;
p {
font-size: 12px;
color: #999;
text-align: left;
}
}
}
.el-upload__tip {
position: absolute;
top: -6px;
left: 130px;
}
.span-mt-10{
.edit-img {
width: 20px;
margin-top: 10px;
}
}
.p-tips{
font-size: 13px;
color: #8C8C8C;
line-height: 26px;
}
.part-tit{
font-size: 14px;
padding:20px 0 20px 20px;
}
.inline{
.el-form-item{
display: inline-block;
vertical-align:top;
.el-radio__label{
font-size: 12px;
}
}
}
.stock-com{
width: 158px;
height: 32px;
border-radius: 4px;
overflow: hidden;
.sp{
display: inline-block;
float: left;
color: #fff;
}
.sp-c{
line-height: 30px;
height: 30px;
width:92px;
text-align: center;
color: #666;
border-top:1px solid #449284;
border-bottom:1px solid #449284;
}
.sp-l{
border-right:1px solid #449284;
}
.sp-r{
border-left:1px solid #449284;
border-radius: 0 4px 4px 0;
}
.sp-l,.sp-r{
width: 32px;
text-align: center;
line-height: 32px;
font-size: 13px;
background: #449284 ;
cursor: pointer;
}
.opac{
opacity: 0.5;
}
}
.stock-dia{
.stock-item{
padding-bottom: 20px;
}
}
.fast-opt{
font-size: 12px;
padding:0 10px;
cursor: pointer;
color:#449284
}
.file-pics{
display: inline-block;
width: 84px;
height: 100px;
float:left;
margin-right: 15px;
position: relative;
}
.el-input-number__decrease, .el-input-number__increase {
position: absolute;
z-index: 1;
top: 1px;
width: 40px;
height: auto;
text-align: center;
background: #449284 !important;
color: #606266;
cursor: pointer;
font-size: 13px;
}
.el-icon-plus {
color:#ffffff;
}
.el-icon-minus {
color:#ffffff;
}
#introVideoLecture {
height: 140px;
}
.video-progress {
width: 20%;
}
.el-upload-list {
width: 30%;
}
.label-video {
position: relative;
.el-button:focus, .el-button:hover {
color: #449284;
border-color: #449284;
background-color: #ecf5ff;
}
.dl-video {
position: absolute;
top: 50%;
left: 35%;
transform: translate(-50%,-50%);
}
}
.add-goods-dialog {
.el-dialog__body {
padding-left: 35px;
padding-right: 35px;
}
.add-btn-row {
text-align: right;
}
.add-goods-table {
margin-top: 10px;
margin-bottom: 20px;
}
.add-goods-search {
margin-left: 10px;
}
.add-goods--pagination {
text-align: right;
margin-top: 25px;
margin-bottom: 25px;
}
}
.add-btn.is-disabled {
background: #fff !important;
border: 1px solid #DCDFE6 !important;
color: #606266 !important;
}
.add-med-dialog {
.medic-goods-max {
.el-input__inner {
padding-right: 45px;
}
}
}
.example-dialog {
img {
width: 100%;
height: 100%;
}
}
}
此差异已折叠。
此差异已折叠。
...@@ -66,7 +66,7 @@ const form = { ...@@ -66,7 +66,7 @@ const form = {
mostCount: -1, mostCount: -1,
incrType: 1, incrType: 1,
saleType: 1, saleType: 1,
minWhole: 0, minWhole: 1,
expressLimitFlag: 0, //是否支持退货退款 expressLimitFlag: 0, //是否支持退货退款
}; };
...@@ -76,8 +76,10 @@ const form3 = { ...@@ -76,8 +76,10 @@ const form3 = {
goodsHeaderImages: [], goodsHeaderImages: [],
goodsVideoList: [], goodsVideoList: [],
goodsType: "", goodsType: "",
businessCategoryId:"", // businessCategoryId: "",
expressLimitFlag: 0, //是否支持退货退款 expressLimitFlag: 0, //是否支持退货退款
cooperationProjectId: '', // 合作项目id
contractId: '', // 合同id
}; };
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<el-input v-model="id" size="small" placeholder="请输入商品ID"></el-input> <el-input v-model="id" size="small" placeholder="请输入商品ID"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <!-- <el-col :span="6">
<el-form-item label="商品类型"> <el-form-item label="商品类型">
<el-select <el-select
v-model="searchForm.goodsType" v-model="searchForm.goodsType"
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col> -->
</el-row> </el-row>
<el-row :gutter="30" type="flex" style="margin-top: 10px"> <el-row :gutter="30" type="flex" style="margin-top: 10px">
<el-col :span="6"> <el-col :span="6">
...@@ -111,9 +111,17 @@ ...@@ -111,9 +111,17 @@
<el-table-column prop="goodsId" label="商品ID" width="120" align="center"> <el-table-column prop="goodsId" label="商品ID" width="120" align="center">
</el-table-column> </el-table-column>
<el-table-column prop="goodsName" label="商品名称" width="160" align="center" show-overflow-tooltip></el-table-column> <el-table-column prop="goodsName" label="商品名称" width="160" align="center" show-overflow-tooltip></el-table-column>
<el-table-column prop="type" label="商品类型" width="100" align="center"> <el-table-column prop="medicationName" label="药品名称" width="160" align="center" show-overflow-tooltip></el-table-column>
<el-table-column prop="goodsCategoryStrArr" label="商品分类" width="160" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.goodsTypeStr }}</span> <p v-for="(item,index) in scope.row.goodsCategoryStrArr" :key="index">
{{item}}
</p>
</template>
</el-table-column>
<el-table-column prop="medicalCategoryStrArr" label="药品分类" width="100" align="center">
<template slot-scope="scope">
<span>{{ handleTableArry(scope.row.medicalCategoryStrArr) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="status" label="商品状态" width="100" align="center"> <el-table-column prop="status" label="商品状态" width="100" align="center">
...@@ -558,14 +566,28 @@ ...@@ -558,14 +566,28 @@
} }
}, },
}, },
methods: { methods: {
handlePreview(){}, handlePreview(){},
handleRemove(){}, handleRemove(){},
beforeRemove(){}, beforeRemove(){},
handleSelectionChange(val){ handleSelectionChange(val){
this.selectList = val this.selectList = val
}, },
handleTableArry(val){
let str = ''
let newVal = []
if (val.length > 0) {
val.map(item => {
if (item !== '') {
newVal.push(item);
}
})
}
if (newVal.length > 0) {
str = newVal.join('/')
}
return str;
},
//批量上传 //批量上传
getBatchUpload(file) { getBatchUpload(file) {
let self = this; let self = this;
...@@ -662,6 +684,7 @@ ...@@ -662,6 +684,7 @@
}); });
} }
this.tableData = res.data.goodsList; this.tableData = res.data.goodsList;
this.totalRows = res.data.totalCount; this.totalRows = res.data.totalCount;
this.isSSO = res.data.isSSO; this.isSSO = res.data.isSSO;
}) })
...@@ -709,9 +732,9 @@ ...@@ -709,9 +732,9 @@
// storeType 1: "供货商",2: "小药房",3: "医生小店" // storeType 1: "供货商",2: "小药房",3: "医生小店"
let url = '' let url = ''
if(row == 'add'){ if(row == 'add'){
url = `/create-good?id=add&storeId=${this.searchForm.storeId}&inputType=1&commissionFlag=${this.commissionFlag}&storeType=${this.storeType}` url = `/create-good-new?id=add&storeId=${this.searchForm.storeId}&inputType=1&commissionFlag=${this.commissionFlag}&storeType=${this.storeType}`
}else{ }else{
url = `/create-good?id=${row.goodsId}&storeId=${this.searchForm.storeId}&goodsType=${goodsType}&commissionFlag=${this.commissionFlag}&storeType=${storeType}` url = `/create-good-new?id=${row.goodsId}&storeId=${this.searchForm.storeId}&goodsType=${goodsType}&commissionFlag=${this.commissionFlag}&storeType=${storeType}`
} }
// this.$store.dispatch('goodsManage/changeGoodsInfo', {...row}); // this.$store.dispatch('goodsManage/changeGoodsInfo', {...row});
this.$router.push({ this.$router.push({
......
...@@ -464,7 +464,7 @@ ...@@ -464,7 +464,7 @@
goGoodsEdit(row) { goGoodsEdit(row) {
// this.$store.dispatch('goodsManage/changeGoodsInfo', {...row}); // this.$store.dispatch('goodsManage/changeGoodsInfo', {...row});
this.$router.push({ this.$router.push({
path: '/create-good', path: '/create-good-new',
query: { query: {
id: row.goodsId, id: row.goodsId,
storeId: this.storeId, storeId: this.storeId,
......
...@@ -116,7 +116,7 @@ const rules = { ...@@ -116,7 +116,7 @@ const rules = {
const rules3 = { const rules3 = {
goodsName: [ goodsName: [
{ required: true, message: "请输入商品名称", trigger: "submit" }, { required: true, message: "请输入商品名称", trigger: "submit" },
{ validator: checkProjectStr, trigger: "submit" }, // { validator: checkProjectStr, trigger: "submit" },
], ],
goodsDescription: [ goodsDescription: [
{ required: true, message: "请输入商品介绍", trigger: "submit" }, { required: true, message: "请输入商品介绍", trigger: "submit" },
......
...@@ -184,7 +184,7 @@ ...@@ -184,7 +184,7 @@
/> />
</div> </div>
<div class="space-between flex-c"> <div class="space-between flex-c">
<div>法人姓名:{{ detail.legalName }}</div> <div>法人姓名:{{ detail.legalName }}</div>
<div>法人身份证号:{{ detail.legalCertNo }}</div> <div>法人身份证号:{{ detail.legalCertNo }}</div>
<div> <div>
法人身份证有效日期:{{ detail.legalValidDateBegin }} 法人身份证有效日期:{{ detail.legalValidDateBegin }}
......
此差异已折叠。
此差异已折叠。
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册