提交 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 @@
style="width: 450px;"
@change="updateCertificate(index)"
:disabled="disabled"
filterable
>
<el-option
v-for="item in optionsCertificate"
......@@ -182,6 +183,7 @@
placeholder="请选择证书"
style="width: 350px"
:disabled="disabled"
filterable
>
<el-option
v-for="item in optionsCertificate"
......
......@@ -75,7 +75,7 @@ router.beforeEach((to, from, next) => {
}
next();
}else{
next(false)
next({ path: "/home" });
return
}
})
......
此差异已折叠。
......@@ -218,9 +218,18 @@ html,body{
border: 1px solid #449284 !important;
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 {
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 {
......
import fetch from '../fetch';
import { getBaseUrl } from '@/utils/index';
import fetch from "../fetch";
import { getBaseUrl } from "@/utils/index";
export const uploadExcel = (data, projectId) => {
// return utils.checkAuth(()=>{
return fetch({
headers: {
'Content-Type': 'application/json;charset=UTF-8',
"Content-Type": "application/json;charset=UTF-8",
sysCode: 12,
token: localStorage.getItem('storageToken'),
token: localStorage.getItem("storageToken"),
},
url: getBaseUrl('portal/v2/role/importRoleFile?projectId=' + projectId),
method: 'post',
url: getBaseUrl("portal/v2/role/importRoleFile?projectId=" + projectId),
method: "post",
data: data,
description: '上传excel文件',
})
description: "上传excel文件",
});
// })
}
};
export const uploadOrgExcel = (data, projectId) => {
// return utils.checkAuth(()=>{
return fetch({
headers: {
'Content-Type': 'application/json;charset=UTF-8',
"Content-Type": "application/json;charset=UTF-8",
sysCode: 12,
token: localStorage.getItem('storageToken'),
token: localStorage.getItem("storageToken"),
},
url: getBaseUrl('portal/new/scope/org/v1/' + projectId + '/import'),
method: 'put',
url: getBaseUrl("portal/new/scope/org/v1/" + projectId + "/import"),
method: "put",
data: data,
description: '上传excel文件',
})
description: "上传excel文件",
});
// })
}
};
export const uploadPersonExcel = (data, projectId) => {
// return utils.checkAuth(()=>{
return fetch({
headers: {
'Content-Type': 'application/json;charset=UTF-8',
"Content-Type": "application/json;charset=UTF-8",
sysCode: 12,
token: localStorage.getItem('storageToken'),
token: localStorage.getItem("storageToken"),
},
url: getBaseUrl('portal/new/scope/doctor/v1/' + projectId + '/import'),
method: 'put',
url: getBaseUrl("portal/new/scope/doctor/v1/" + projectId + "/import"),
method: "put",
data: data,
description: '上传excel文件',
})
description: "上传excel文件",
});
// })
}
};
export const uploadShieldExcel = (data, projectId) => {
return fetch({
headers: {
token: localStorage.getItem('storageToken'),
token: localStorage.getItem("storageToken"),
},
url: getBaseUrl("aggregate/black/setPeopleBlackStatus/batch/" + projectId),
method: "post",
data: data,
description: "上传excel文件",
});
};
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('aggregate/black/setPeopleBlackStatus/batch/' + projectId),
method: 'post',
url: getBaseUrl("portal/black/setHospitalBlackStatus/batch"),
method: "post",
data: data,
description: '上传excel文件',
})
}
\ No newline at end of file
description: "屏蔽机构操作上传文件",
});
};
......@@ -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
export function deepCopy(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 @@
v-model="item.certificateId"
placeholder="请选择证书"
style=""
filterable
@change="updateCertificate(index)"
:disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6"
>
......@@ -719,6 +720,7 @@
v-model="formComponent.certificate"
placeholder="请选择证书"
style="width: 350px"
filterable
:disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6"
>
<el-option
......
......@@ -1173,6 +1173,7 @@
placeholder="请选择证书"
size="mini"
style="width: 450px;"
filterable
@change="updateCertificate(index)"
:disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6"
>
......@@ -1234,6 +1235,7 @@
:class="customError.certificate.className"
>
<el-select
filterable
v-model="formComponent.certificate"
placeholder="请选择证书"
style="width: 350px"
......
......@@ -956,6 +956,7 @@
placeholder="请选择证书"
size="mini"
style="width: 450px;"
filterable
@change="updateCertificate(index)"
:disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6"
>
......@@ -998,6 +999,7 @@
v-model="formComponent.certificate"
placeholder="请选择证书"
style="width: 350px"
filterable
:disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6"
>
<el-option
......@@ -1741,13 +1743,19 @@ export default {
if (option == "edit" || option == "storageEdit") {
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 = {
projectModel: JSON.stringify(projectModel),
attachmentModel: JSON.stringify(attachmentModel),
attachmentPDFModel: JSON.stringify(attachmentPDFModel),
notifyData: JSON.stringify(notifyData)
};
//console.log(postData);
console.log('JSON.stringify(projectModel)', projectModel, attachmentModel, attachmentPDFModel, notifyData);
openLoading(vm);
vm.POST("portal/portalInfo/insertOrUpdate", postData).then(res => {
closeLoading(vm);
......@@ -2822,7 +2830,6 @@ export default {
projectId: this.projectId,
administrativeId: "",
hospitalLevel: "",
hospitalLevel: "",
scope: this.getScope("administrative"),
pageNum: this.formOrganization.pageNum,
pageSize: this.formOrganization.pageSize
......
......@@ -1181,6 +1181,7 @@
placeholder="请选择证书"
size="mini"
style="width: 450px;"
filterable
@change="updateCertificate(index)"
:disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6"
>
......@@ -1244,6 +1245,7 @@
<el-select
v-model="formComponent.certificate"
placeholder="请选择证书"
filterable
style="width: 350px"
:disabled="projectStatus == 3 || projectStatus == 4 || projectStatus == 5 || projectStatus == 6"
>
......
......@@ -213,7 +213,7 @@
<el-dialog
title="请选择项目类型"
:visible.sync="centerDialogVisible"
width="600px"
width="750px"
:close-on-click-modal="false"
@close="handleTypeClose"
center
......@@ -224,6 +224,7 @@
<el-radio :label="2">CME项目</el-radio>
<el-radio :label="3">开放模板</el-radio>
<el-radio :label="5">职称考试</el-radio>
<el-radio :label="6">中医项目</el-radio>
</el-radio-group>
<span slot="footer" class="dialog-footer">
<el-button @click="centerDialogVisible = false">取 消</el-button>
......@@ -295,7 +296,6 @@ export default {
data() {
return {
changeStatusVisible: false,
currentRow: null,
currentType: 4,
changeStatusConfig: {
title: "确认通过该项目模版审核吗?",
......@@ -460,6 +460,9 @@ export default {
toPage(isPreview = 0) {
this.$router.push("edit-manager?projectType=1&isPreview=" + isPreview);
},
toTCMPage(isPreview = 0) {
this.$router.push("edit-manager?projectType=5&isPreview=" + isPreview);
},
toCmePage(isPreview = 0) {
this.$router.push("edit-cme?projectType=2&isPreview=" + isPreview);
},
......@@ -490,6 +493,8 @@ export default {
this.toTemplatePage();
} else if (this.newProjectType == 5) {
this.toProfessionalExamPage();
}else if (this.newProjectType == 6) {
this.toTCMPage();
}
},
......@@ -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) {
this.currentRow = row;
let status = row.projectStatus;
......@@ -661,13 +656,10 @@ export default {
return text;
// return true / false;
},
changeStatusPre() {
this.changeStatus(this.currentRow, this.currentType);
this.changeStatusVisible = false;
},
//
changeStatusForSP(row, type) {
this.currentRow = row;
this.currentType = type;
......@@ -681,17 +673,18 @@ export default {
}
this.changeStatusVisible = true;
},
//改变状态
changeStatus(row, type) {
console.log('--row', row);
let projectId = row.id;
let level = row.level;
if (type === 0) {
this.updateItemManager(this.formInline);
//编辑
if (row.projectType === 1) {
if (row.projectType === 1 || row.projectType === 5 ) {
this.$router.push(
"edit-manager?projectType=1&projectId=" +
"edit-manager?projectType=" + row.projectType +"&projectId=" +
projectId +
"&level=" +
level +
......@@ -799,9 +792,6 @@ export default {
this.deleteVisible = true;
this.currentRow = row;
},
hideDeleteFrom() {
this.deleteVisible = false;
},
// 删除项目
confirmDelete() {
let req = {};
......
......@@ -8,7 +8,7 @@
</el-radio-group>
<!-- <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-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-form-item label="地区:">
<el-cascader
......@@ -47,12 +47,17 @@
</el-select>
</el-form-item>
</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="importOrder()" v-if="shieldType == 1">批量导入</el-button>
</el-col>
</el-form>
</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-column v-if="shieldType == 0" prop="hospitalName" label="医院名称" align="center"></el-table-column>
<el-table-column
......@@ -123,7 +128,7 @@
:show-file-list="true"
:before-upload="uploadfile"
>
<div class="upload-container">
<div class="upload-container inline-b">
<el-input
class="file-name"
v-model="fileData.fileName"
......@@ -151,13 +156,103 @@
>
</div>
</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>
</template>
<script>
import BreadCrumb from "../../components/breadcrumb.vue";
import { mapGetters } from "vuex";
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 operationData from "../../utils/operation";
let vm = null;
......@@ -215,6 +310,17 @@ export default {
shieldBlock: "",
scopeRow: {},
administrativeValue: "",
isShowMate: false,
isShowBatch: false,
mateFileData: {
file: "",
fileName: "",
},
batchFileData: {
file: "",
fileName: "",
},
mateTmpUrl: 'https://files.yunqueyi.com/template/org_template.xlsx',
props: {
lazy: true,
lazyLoad(node, resolve) {
......@@ -523,7 +629,102 @@ export default {
console.log(`当前页: ${val}`);
this.formInline.pageNo = val;
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>
......@@ -532,6 +733,11 @@ export default {
.component-content {
padding: 10px;
background: #fff;
.tip {
color: #D51F35;
font-size: 14px;
line-height: 32px;
}
.complete {
float: right;
}
......@@ -539,5 +745,14 @@ export default {
color: #D51F35;
}
}
.inline-b{
display: flex;
.el-button--mini{
margin-left: 20px;
}
}
.upload-container {
line-height: 0;
}
}
</style>
\ No newline at end of file
......@@ -606,7 +606,7 @@ export default {
}
}
// 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.$router.push({
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 = {
mostCount: -1,
incrType: 1,
saleType: 1,
minWhole: 0,
minWhole: 1,
expressLimitFlag: 0, //是否支持退货退款
};
......@@ -76,8 +76,10 @@ const form3 = {
goodsHeaderImages: [],
goodsVideoList: [],
goodsType: "",
businessCategoryId:"",
// businessCategoryId: "",
expressLimitFlag: 0, //是否支持退货退款
cooperationProjectId: '', // 合作项目id
contractId: '', // 合同id
};
......
......@@ -15,7 +15,7 @@
<el-input v-model="id" size="small" placeholder="请输入商品ID"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<!-- <el-col :span="6">
<el-form-item label="商品类型">
<el-select
v-model="searchForm.goodsType"
......@@ -30,7 +30,7 @@
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-col> -->
</el-row>
<el-row :gutter="30" type="flex" style="margin-top: 10px">
<el-col :span="6">
......@@ -111,9 +111,17 @@
<el-table-column prop="goodsId" label="商品ID" width="120" align="center">
</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">
<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>{{ scope.row.goodsTypeStr }}</span>
<span>{{ handleTableArry(scope.row.medicalCategoryStrArr) }}</span>
</template>
</el-table-column>
<el-table-column prop="status" label="商品状态" width="100" align="center">
......@@ -565,7 +573,21 @@
handleSelectionChange(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) {
let self = this;
......@@ -662,6 +684,7 @@
});
}
this.tableData = res.data.goodsList;
this.totalRows = res.data.totalCount;
this.isSSO = res.data.isSSO;
})
......@@ -709,9 +732,9 @@
// storeType 1: "供货商",2: "小药房",3: "医生小店"
let url = ''
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{
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.$router.push({
......
......@@ -464,7 +464,7 @@
goGoodsEdit(row) {
// this.$store.dispatch('goodsManage/changeGoodsInfo', {...row});
this.$router.push({
path: '/create-good',
path: '/create-good-new',
query: {
id: row.goodsId,
storeId: this.storeId,
......
......@@ -116,7 +116,7 @@ const rules = {
const rules3 = {
goodsName: [
{ required: true, message: "请输入商品名称", trigger: "submit" },
{ validator: checkProjectStr, trigger: "submit" },
// { validator: checkProjectStr, trigger: "submit" },
],
goodsDescription: [
{ required: true, message: "请输入商品介绍", trigger: "submit" },
......
......@@ -184,7 +184,7 @@
/>
</div>
<div class="space-between flex-c">
<div>法人姓名:{{ detail.legalName }}</div>
<div>法人姓名:{{ detail.legalName }}</div>
<div>法人身份证号:{{ detail.legalCertNo }}</div>
<div>
法人身份证有效日期:{{ detail.legalValidDateBegin }}
......
此差异已折叠。
此差异已折叠。
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册