提交 ace2c371 编写于 作者: changdi.hao's avatar changdi.hao

Merge branch 'release' into 'master'

Release

See merge request com.pica.cloud.education.frontend/pica.cloud.web-education-admin!408
此差异已折叠。
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
"@babel/polyfill": "^7.2.5", "@babel/polyfill": "^7.2.5",
"axios": "0.16.2", "axios": "0.16.2",
"better-scroll": "^0.1.15", "better-scroll": "^0.1.15",
"dayjs": "^1.10.7",
"echarts": "^4.2.0-rc.2", "echarts": "^4.2.0-rc.2",
"element-ui": "^2.11.1", "element-ui": "^2.11.1",
"fastclick": "^1.0.6", "fastclick": "^1.0.6",
...@@ -26,7 +27,7 @@ ...@@ -26,7 +27,7 @@
"iscroll": "^5.2.0", "iscroll": "^5.2.0",
"js-cookie": "^2.2.0", "js-cookie": "^2.2.0",
"js-md5": "^0.7.3", "js-md5": "^0.7.3",
"jsencrypt": "^3.0.0-rc.1", "jsencrypt": "^3.2.1",
"jspdf": "^1.5.3", "jspdf": "^1.5.3",
"node-sass": "^4.9.2", "node-sass": "^4.9.2",
"pdfh5": "^1.3.9", "pdfh5": "^1.3.9",
...@@ -34,6 +35,7 @@ ...@@ -34,6 +35,7 @@
"qrcodejs2": "^0.0.2", "qrcodejs2": "^0.0.2",
"showdown": "^1.6.4", "showdown": "^1.6.4",
"sortablejs": "^1.13.0", "sortablejs": "^1.13.0",
"storejs": "^2.0.1",
"video.js": "^7.8.2", "video.js": "^7.8.2",
"vue": "^2.1.0", "vue": "^2.1.0",
"vue-infinite-scroll": "^2.0.2", "vue-infinite-scroll": "^2.0.2",
......
...@@ -82,6 +82,8 @@ const plazaList = r => require.ensure([], () => r(require('../views/plaza/plaza- ...@@ -82,6 +82,8 @@ const plazaList = r => require.ensure([], () => r(require('../views/plaza/plaza-
const activityMember = r => require.ensure([], () => r(require('../views/activitymanagement/activity-member.vue')), 'activity-member') const activityMember = r => require.ensure([], () => r(require('../views/activitymanagement/activity-member.vue')), 'activity-member')
const videoManage = r => require.ensure([], () => r(require('../views/shortvideo/video-manage.vue')), 'video-manage') const videoManage = r => require.ensure([], () => r(require('../views/shortvideo/video-manage.vue')), 'video-manage')
const qualificationList = r => require.ensure([], () => r(require('../views/qualification/list.vue')), 'qualification')
const qualificationDetail = r => require.ensure([], () => r(require('../views/qualification/detail.vue')), 'qualification')
export default [{ export default [{
path: '/', path: '/',
...@@ -347,7 +349,14 @@ export default [{ ...@@ -347,7 +349,14 @@ export default [{
path: 'video-manage', path: 'video-manage',
component: videoManage, component: videoManage,
}, },
{
path: 'qualification-list',
component:qualificationList
},
{
path: 'qualification-detail',
component:qualificationDetail
},
// { // {
// path: '/followup', // path: '/followup',
// name: 'followUp', // name: 'followUp',
......
@import './common.scss'; @import './common.scss';
// color
.c0D9078{
color:#0D9078;
}
//定位 //定位
.relative{ .relative{
position: relative; position: relative;
...@@ -18,9 +22,19 @@ ...@@ -18,9 +22,19 @@
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
} }
.flex1{
flex: 1;
}
.textLeft{ .textLeft{
float: left; float: left;
} }
.cp{
cursor: pointer;
}
.flex-c{
display: flex;
align-items: center;
}
.center{ .center{
text-align: center; text-align: center;
} }
...@@ -125,11 +139,11 @@ ...@@ -125,11 +139,11 @@
padding-left: 5px !important; padding-left: 5px !important;
font-size: 14px !important; font-size: 14px !important;
color: #333; color: #333;
} }
.el-checkbox__input.is-checked+.el-checkbox__label { .el-checkbox__input.is-checked+.el-checkbox__label {
color: #449284; color: #449284;
} }
.el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-checked .el-checkbox__inner,
.el-checkbox__input.is-indeterminate .el-checkbox__inner { .el-checkbox__input.is-indeterminate .el-checkbox__inner {
color: #449284; color: #449284;
} }
...@@ -204,7 +218,7 @@ ...@@ -204,7 +218,7 @@
margin: 0; margin: 0;
padding: 25px 5px 30px; padding: 25px 5px 30px;
border-top: 0px solid #E4E7ED; border-top: 0px solid #E4E7ED;
} }
} }
.el-dialog__footer { .el-dialog__footer {
padding-top: 20px; padding-top: 20px;
...@@ -227,7 +241,7 @@ ...@@ -227,7 +241,7 @@
margin: 0; margin: 0;
padding: 25px 5px 30px; padding: 25px 5px 30px;
border-top: 1px solid #E4E7ED; border-top: 1px solid #E4E7ED;
} }
} }
} }
.el-cascader .el-input .el-input__inner:focus, .el-cascader .el-input.is-focus .el-input__inner { .el-cascader .el-input .el-input__inner:focus, .el-cascader .el-input.is-focus .el-input__inner {
......
...@@ -641,4 +641,4 @@ export function setSelectedKeys(checkedKeys, halfCheckedKeys) { ...@@ -641,4 +641,4 @@ export function setSelectedKeys(checkedKeys, halfCheckedKeys) {
selected.push(obj); selected.push(obj);
} }
return selected; return selected;
} }
\ No newline at end of file
...@@ -46,4 +46,15 @@ export const uploadPersonExcel = (data, projectId) => { ...@@ -46,4 +46,15 @@ export const uploadPersonExcel = (data, projectId) => {
description: '上传excel文件', description: '上传excel文件',
}) })
// }) // })
}
export const uploadShieldExcel = (data, projectId) => {
return fetch({
headers: {
token: localStorage.getItem('storageToken'),
},
url: getBaseUrl('aggregate/black/setPeopleBlackStatus/batch/' + projectId),
method: 'post',
data: data,
description: '上传excel文件',
})
} }
\ No newline at end of file
...@@ -133,3 +133,14 @@ export const getTypeCodeList = () => { ...@@ -133,3 +133,14 @@ export const getTypeCodeList = () => {
}); });
}; };
export const getBusinessCategory = () => {
return fetch({
headers,
url: getBaseUrl(`store/category/businessCategory/0`),
method: "get",
description: "查询业务类型",
});
};
import fetch from '@/utils/fetch' import fetch from '@/utils/fetch'
import { getBaseUrl, getReportUrl, getWorkApi, getCmsUrl } from '@/utils/index' import { getBaseUrl, getReportUrl, getWorkApi, getCmsUrl } from '@/utils/index'
import { CryptoJS } from '@/plugins/aes' import { CryptoJS } from '@/plugins/aes'
import 'jsencrypt' import JSEncrypt from 'jsencrypt'
import { getPubKey } from '@/utils/account/accountApi'; import { getPubKey } from '@/utils/account/accountApi';
...@@ -19,7 +19,7 @@ module.exports = { ...@@ -19,7 +19,7 @@ module.exports = {
// this.token = this.getUrlKey('token') || (query && query.token) || null // this.token = this.getUrlKey('token') || (query && query.token) || null
}, },
mounted: function() { mounted: function() {
}, },
methods: { methods: {
...@@ -56,7 +56,7 @@ module.exports = { ...@@ -56,7 +56,7 @@ module.exports = {
cb && cb(params); cb && cb(params);
} }
}else{ }else{
this.$message({ this.$message({
message: (res && res.message) || '接口出错', message: (res && res.message) || '接口出错',
type: 'warning' type: 'warning'
}); });
...@@ -85,7 +85,7 @@ module.exports = { ...@@ -85,7 +85,7 @@ module.exports = {
return encrypted.toString(); return encrypted.toString();
}, },
// RSA encrypt // RSA encrypt
RsaEncrypt(aesKey, pubKey){ RsaEncrypt(aesKey, pubKey){
let _encrypt = new JSEncrypt(); let _encrypt = new JSEncrypt();
let boss_public_key = pubKey; let boss_public_key = pubKey;
_encrypt.setPublicKey(boss_public_key); _encrypt.setPublicKey(boss_public_key);
...@@ -159,7 +159,7 @@ module.exports = { ...@@ -159,7 +159,7 @@ module.exports = {
setEntry: 'headers', setEntry: 'headers',
} }
let url = 'contents/searchKeyword/searchContent' let url = 'contents/searchKeyword/searchContent'
let csourceData = await this.GET(url, para).then(res => { let csourceData = await this.GET(url, para).then(res => {
// _this.searchText = '' // _this.searchText = ''
if (res.code == '000000') { if (res.code == '000000') {
...@@ -182,7 +182,7 @@ module.exports = { ...@@ -182,7 +182,7 @@ module.exports = {
}) })
return csourceData return csourceData
}, },
setEventByModuleCode(itemData){ setEventByModuleCode(itemData){
let modeCode = itemData.appModuleInfo.code || ''; let modeCode = itemData.appModuleInfo.code || '';
let paramList = itemData.appModuleInfo.paramList ? itemData.appModuleInfo.paramList : '' let paramList = itemData.appModuleInfo.paramList ? itemData.appModuleInfo.paramList : ''
...@@ -253,7 +253,7 @@ module.exports = { ...@@ -253,7 +253,7 @@ module.exports = {
params: para params: para
}) })
}, },
// 通用DELETE请求 // 通用DELETE请求
DELETE(api, para, callback,str) { DELETE(api, para, callback,str) {
// para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE" // para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE"
......
...@@ -51,10 +51,12 @@ let errorCode = new Map([ ...@@ -51,10 +51,12 @@ let errorCode = new Map([
[701,'在断点续上传过程中,后续上传接收地址不正确或ctx信息已过期。'] [701,'在断点续上传过程中,后续上传接收地址不正确或ctx信息已过期。']
]); ]);
let qiniuErrorCheck = function (code) { let qiniuErrorCheck = function (code,self) {
errorCode.forEach(function (value, key, map) { errorCode.forEach(function (value, key, map) {
if (code === key){ if (code === key){
self.$message.error(value);
console.error(key+':'+value) console.error(key+':'+value)
} }
}) })
} }
...@@ -243,7 +245,7 @@ export const qiniuUpload = (self, file, filePath, previewId, progressId) => { ...@@ -243,7 +245,7 @@ export const qiniuUpload = (self, file, filePath, previewId, progressId) => {
console.log("七牛上传失败,详细信息请参考:https://developer.qiniu.com/kodo/api/3928/error-responses"); console.log("七牛上传失败,详细信息请参考:https://developer.qiniu.com/kodo/api/3928/error-responses");
//输出简略错误信息 //输出简略错误信息
if (err.isRequestError){ if (err.isRequestError){
qiniuErrorCheck(err.code) qiniuErrorCheck(err.code,self)
}else { }else {
console.error(err); console.error(err);
} }
...@@ -428,7 +430,7 @@ export const doUpload = (self, file, filePath, previewId, progressId, fileType) ...@@ -428,7 +430,7 @@ export const doUpload = (self, file, filePath, previewId, progressId, fileType)
console.log("七牛上传失败,详细信息请参考:https://developer.qiniu.com/kodo/api/3928/error-responses"); console.log("七牛上传失败,详细信息请参考:https://developer.qiniu.com/kodo/api/3928/error-responses");
//输出简略错误信息 //输出简略错误信息
if (err.isRequestError){ if (err.isRequestError){
qiniuErrorCheck(err.code) qiniuErrorCheck(err.code,self)
}else { }else {
console.error(err); console.error(err);
} }
......
import fetch from '../fetch';
import { getBaseUrl, getSaasDomain, getSaasApiDomain } from '@/utils/index'
let headers = {
'Content-Type': 'application/json;charset=UTF-8',
token: localStorage.getItem('storageToken'),
};
export const getCertifyList = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/certify/list`),
method: 'post',
data:params,
description: '审核记录列表(批发和供应商)',
})
};
export const getCertifyHistory = (params) => {
return fetch({
headers,
url: getBaseUrl(`certify/certifyHistory`),
method: 'get',
data:params,
description: '查看审核历史',
})
};
export const getCertifyDetail = () => {
return fetch({
headers,
url: getBaseUrl(`store/certify/certifyDetail`),
method: 'get',
description: '获取认证申请的审核详情',
})
};
export const getRefuseTemplate = (type) => {
return fetch({
headers,
url: getBaseUrl(`store/cert/constant/refuse/template?type=${type}`),
method: 'get',
description: '获取错误模板',
})
};
export const postCertifyAudit = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/certify/audit`),
method: 'post',
data:params,
description: '审核',
})
};
...@@ -155,3 +155,41 @@ export const getStoreAdressRepot = (storeId) => { ...@@ -155,3 +155,41 @@ export const getStoreAdressRepot = (storeId) => {
description: "获取店铺退货地址信息", description: "获取店铺退货地址信息",
}); });
}; };
export const OCRStore = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/ocr/license`),
method: 'post',
data: params,
description: 'ocr店铺',
})
};
export const idCardOcr = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/ocr/idCard`),
method: 'post',
data: params,
description: '身份证ocr',
})
};
export const orgOptionList = () => {
return fetch({
headers,
url: getBaseUrl(`store/cert/constant/org/type`),
method: 'get',
description: '企业类型列表',
})
};
export const orgScopeOptionList = () => {
return fetch({
headers,
url: getBaseUrl(`store/cert/constant/biz/scope`),
method: 'get',
description: '经营范围',
})
};
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
</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;padding-right:10px;">
<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-col> </el-col>
</el-form> </el-form>
</el-row> </el-row>
...@@ -103,12 +104,60 @@ ...@@ -103,12 +104,60 @@
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
<!-- 导入屏蔽人员名单 -->
<el-dialog
class="exportlogistics-dialog"
title="批量导入"
:visible="isShowImport"
@close="isShowImport = 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="true"
:before-upload="uploadfile"
>
<div class="upload-container">
<el-input
class="file-name"
v-model="fileData.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="logisticsUrl" style="color: #449284">
批量导入模板.xlxs</a>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click="cancelImport">取消</el-button>
<el-button
size="small"
:loading="isLoading"
type="primary"
@click="confirmImport"
>确认</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 * 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;
...@@ -118,6 +167,14 @@ export default { ...@@ -118,6 +167,14 @@ export default {
}, },
data() { data() {
return { return {
isShowImport: false,
isLoading: false,
logisticsUrl: 'https://files.yunqueyi.com/template/portal_template.xlsx',
fileData: {
ext: '',
file: "",
fileName: "",
},
curmbFirst: "教培项目", curmbFirst: "教培项目",
curmbSecond: "屏蔽", curmbSecond: "屏蔽",
projectId: "", projectId: "",
...@@ -232,6 +289,69 @@ export default { ...@@ -232,6 +289,69 @@ export default {
// } // }
// }, // },
methods: { methods: {
// 批量导入
importOrder() {
this.isShowImport = true;
},
uploadfile(file) {
console.log(file, '导入file');
let _this = this;
let arr = file.name.split(".");
let ext = "." + arr[1];
let name = file.name;
let reader = new FileReader();
reader.onload = function (e) {
_this.fileData.fileName = name;
_this.fileData.file = e.target.result.substr(
e.target.result.indexOf("base64,") + 7
);
_this.fileData.ext = ext;
console.log("fileJson", _this.fileData);
};
reader.readAsDataURL(file);
},
// 确认导入
confirmImport() {
this.isLoading = true;
let parmas = {
base64: this.fileData,
type: ''
}
uploadShieldExcel(parmas, this.projectId).then(res => {
if (res.code == '000000') {
if (res.data == '') {
this.isLoading = false;
this.isShowImport = false;
this.$message({
message: '导入成功',
type: 'success'
});
} else {
let a = document.createElement('a');
let href = res.data;
a.setAttribute('href',href);
a.click();
this.isLoading = false;
this.$message.error('导入失败');
}
} else {
this.isLoading = false;
this.$message.error(res.message);
}
}).catch(error => {
this.isLoading = false;
this.$message.error(error.message);
})
},
// 取消导入
cancelImport() {
this.fileData = {
file: "",
fileName: "",
};
this.isShowImport = false;
},
handleChange(value) { handleChange(value) {
let areaId = "000"; let areaId = "000";
for (let i = 0; i < value.length; i++) { for (let i = 0; i < value.length; i++) {
......
此差异已折叠。
...@@ -58,6 +58,7 @@ const form = { ...@@ -58,6 +58,7 @@ const form = {
incrStock: "", //增加库存 incrStock: "", //增加库存
storeId: "", storeId: "",
optPrice: "", optPrice: "",
scorePerformance: 0,
goodsStock: 0, goodsStock: 0,
stock: 0, stock: 0,
externalGoodsCode: "", externalGoodsCode: "",
...@@ -69,7 +70,18 @@ const form = { ...@@ -69,7 +70,18 @@ const form = {
expressLimitFlag: 0, //是否支持退货退款 expressLimitFlag: 0, //是否支持退货退款
}; };
const form3 = {
goodsName: "",
goodsDescription: "",
goodsHeaderImages: [],
goodsVideoList: [],
goodsType: "",
businessCategoryId:"",
expressLimitFlag: 0, //是否支持退货退款
};
export const originForm1 = form1; export const originForm1 = form1;
export const originForm2 = form2; export const originForm2 = form2;
export const originForm3 = form3;
export const originForm = form; export const originForm = form;
...@@ -94,8 +94,8 @@ ...@@ -94,8 +94,8 @@
</el-col> </el-col>
<el-col :span="12" style="text-align: right"> <el-col :span="12" style="text-align: right">
<el-button v-if="commissionFlag == 2" type="primary" size="small" @click="batchSetPrice()">批量设置分佣</el-button> <el-button v-if="commissionFlag == 2" type="primary" size="small" @click="batchSetPrice()" :disabled="tableData.length == 0">批量设置分佣</el-button>
<el-button type="primary" size="small" @click="exportOpt">批量导出商品</el-button> <el-button type="primary" size="small" @click="exportOpt" :disabled="tableData.length == 0">批量导出商品</el-button>
<el-button v-if="isSSO" type="primary" size="small" @click="batchOpt(3)">批量导入商品</el-button> <el-button v-if="isSSO" type="primary" size="small" @click="batchOpt(3)">批量导入商品</el-button>
<el-button type="primary" size="small" @click="edit('add')">新建单个商品</el-button> <el-button type="primary" size="small" @click="edit('add')">新建单个商品</el-button>
</el-col> </el-col>
...@@ -121,6 +121,7 @@ ...@@ -121,6 +121,7 @@
<span>{{ scope.row.goodsStatus | rangeStatus }}</span> <span>{{ scope.row.goodsStatus | rangeStatus }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="goodsHisStock" label="商品总库存" width="100" align="center"></el-table-column>
<el-table-column prop="quantityOfSale" label="有效销量" width="120" align="center"> <el-table-column prop="quantityOfSale" label="有效销量" width="120" align="center">
</el-table-column> </el-table-column>
...@@ -161,6 +162,16 @@ ...@@ -161,6 +162,16 @@
</el-table-column> </el-table-column>
<el-table-column prop="saleTime" label="发布时间" width="170" align="center"> <el-table-column prop="saleTime" label="发布时间" width="170" align="center">
</el-table-column> </el-table-column>
<el-table-column prop="modifiedIdStr" label="最近操作人" width="170" align="center">
<template slot-scope="scope">
<span>{{ scope.row.modifiedIdStr || '--' }}</span>
</template>
</el-table-column>
<el-table-column prop="modifiedTime" label="最近操作时间" width="170" align="center">
<template slot-scope="scope">
<span>{{ scope.row.modifiedTime || '--' }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="200" align="center" fixed="right"> <el-table-column label="操作" width="200" align="center" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.commissionFlag == 2"> <div v-if="scope.row.commissionFlag == 2">
...@@ -552,7 +563,6 @@ ...@@ -552,7 +563,6 @@
handleRemove(){}, handleRemove(){},
beforeRemove(){}, beforeRemove(){},
handleSelectionChange(val){ handleSelectionChange(val){
console.log(val)
this.selectList = val this.selectList = val
}, },
...@@ -622,8 +632,10 @@ ...@@ -622,8 +632,10 @@
reader.readAsDataURL(file); reader.readAsDataURL(file);
}, },
uploadTemp(){ uploadTemp(){
// let url = "https://file.yunqueyi.com/trade/store/goods_import_template.xlsx" // let url = "https://file.yunqueyi.com/trade/store/goods_import_template.xlsx 'https://file.yunqueyi.com/trade/store/20210129/goods_import_template.xlsx'"
const url = 'https://file.yunqueyi.com/trade/store/20210129/goods_import_template.xlsx'; // const url = 'https://files.yunqueyi.com/template/goods_import_template_1.xlsx';
const url = 'https://files.yunqueyi.com/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet/common/20211105150219553.xlsx';
window.location.href = url window.location.href = url
}, },
getLever(id=0){ getLever(id=0){
...@@ -821,7 +833,6 @@ ...@@ -821,7 +833,6 @@
}, },
exportOpt() { exportOpt() {
const { goodsIdList, goodsType, goodsName, storeId, saleType } = this.searchForm; const { goodsIdList, goodsType, goodsName, storeId, saleType } = this.searchForm;
getGoodsExportUrl({ goodsIdList, goodsType, goodsName, storeId, saleType }).then(res => { getGoodsExportUrl({ goodsIdList, goodsType, goodsName, storeId, saleType }).then(res => {
if (res.code != '000000') { if (res.code != '000000') {
this.$message({ message: res.message, type: 'error' }); this.$message({ message: res.message, type: 'error' });
......
...@@ -27,18 +27,18 @@ const rules1 = { ...@@ -27,18 +27,18 @@ const rules1 = {
{ required: true, message: "请输入条形码", trigger: "submit" }, { required: true, message: "请输入条形码", trigger: "submit" },
{ validator: checkBarcode, trigger: "submit" } { validator: checkBarcode, trigger: "submit" }
], ],
medicCommonName:[ // medicCommonName:[
{ required: true, message: "请输入商品通用名称", trigger: "blur" } // { required: true, message: "请输入商品通用名称", trigger: "blur" }
], // ],
// size:[ // size:[
// { required: true, message: "请输入商品规格", trigger: "blur" } // { required: true, message: "请输入商品规格", trigger: "blur" }
// ], // ],
// manufacturer:[ // manufacturer:[
// { required: true, message: "请输入生产厂家", trigger: "blur" } // { required: true, message: "请输入生产厂家", trigger: "blur" }
// ], // ],
approvalNumber:[ // approvalNumber:[
{ required: true, message: "请输入批准文号", trigger: "blur" } // { required: true, message: "请输入批准文号", trigger: "blur" }
], // ],
// dosageId:[ // dosageId:[
// { required: true, message: "请选择剂型", trigger: "change" } // { required: true, message: "请选择剂型", trigger: "change" }
// ], // ],
...@@ -89,19 +89,6 @@ const rules = { ...@@ -89,19 +89,6 @@ const rules = {
{ required: true, message: "请输入条形码", trigger: "submit" }, { required: true, message: "请输入条形码", trigger: "submit" },
{ validator: checkBarcode, trigger: "submit" } { validator: checkBarcode, trigger: "submit" }
], ],
goodsName: [
{ required: true, message: "请输入商品名称", trigger: "submit" },
{ validator: checkProjectStr, trigger: "submit" }
],
goodsHeaderImages: [
{ required: true, message: "请上传商品头图", trigger: "blur" }
],
goodsType:[
{ required: true, message: "请选择商品类型", trigger: "change" }
],
hcd:[
{ required: true, message: "请选择是否支持退货退款", trigger: "change" }
],
optPrice: [ optPrice: [
{ required: true, message: "请输入价格", trigger: "blur" }, { required: true, message: "请输入价格", trigger: "blur" },
], ],
...@@ -126,8 +113,24 @@ const rules = { ...@@ -126,8 +113,24 @@ const rules = {
// ], // ],
} }
const rules3 = {
goodsName: [
{ required: true, message: "请输入商品名称", trigger: "submit" },
{ validator: checkProjectStr, trigger: "submit" },
],
goodsDescription: [
{ required: true, message: "请输入商品介绍", trigger: "submit" },
],
goodsHeaderImages: [
{ required: true, message: "请上传商品头图", trigger: "blur" },
],
businessCategoryId: [{ required: true, message: "请选择业务类型", trigger: "change" }],
goodsType: [{ required: true, message: "请选择商品类型", trigger: "change" }],
};
export const originRules1 = rules1; export const originRules1 = rules1;
export const originRules2 = rules2; export const originRules2 = rules2;
export const originRules3 = rules3;
export const originRules = rules; export const originRules = rules;
...@@ -841,8 +841,8 @@ export default { ...@@ -841,8 +841,8 @@ export default {
if(vm.dataType == 0) { if(vm.dataType == 0) {
cardData[0].value = parseFloat((data.hospitalRate*100).toFixed(1)) + '%'; cardData[0].value = parseFloat((data.hospitalRate*100).toFixed(1)) + '%';
cardData[0].hasNum = data.joinCount; cardData[0].hasNum = data.hospitalJoinCount; //hospitalCount
cardData[0].shouldNum = data.finishCount; cardData[0].shouldNum = data.hospitalCount; //hospitalJoinCount
vm.cardData = cardData; vm.cardData = cardData;
} else if(vm.dataType == 1) { } else if(vm.dataType == 1) {
...@@ -1100,8 +1100,7 @@ export default { ...@@ -1100,8 +1100,7 @@ export default {
}, },
//机构人员分页 //机构人员分页
handleSizeChange(val) { handleSizeChange(val) {
console.log(`每页 ${val} 条`); vm.formTable.pageSize = val;
vm.formTable.pageSize = val;
vm.formTable.pageNo = 1; vm.formTable.pageNo = 1;
if(vm.downloadId == null) { if(vm.downloadId == null) {
vm.searchPerson(1); vm.searchPerson(1);
...@@ -1251,7 +1250,7 @@ export default { ...@@ -1251,7 +1250,7 @@ export default {
} }
} }
.box-card2 { .box-card2 {
width: 49%; width: 32%;
margin-right: 2%; margin-right: 2%;
} }
.box-last { .box-last {
......
<template>
<el-dialog
title="提示"
:visible.sync="hidden"
width="80%"
:before-close="handleClose"
>
<el-table :data="gridData">
<el-table-column property="date" label="审核时间"></el-table-column>
<el-table-column property="name" label="审核人"></el-table-column>
<el-table-column property="address" label="审核结果"></el-table-column>
<el-table-column property="address" label="失败原因" width="200">
<template class=""> </template>
</el-table-column>
<el-table-column property="address" label="操作">
<template>
<el-button
@click="goDetail(scope.row)"
class="c0D9078"
type="text"
size="small"
>查看详情</el-button
>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleNumChange"
:current-page="pageNo"
:page-sizes="[10, 30, 50, 100]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
></el-pagination>
</div>
</el-dialog>
</template>
<script>
import { getCertifyHistory } from "@/utils/qualification";
export default {
props: {
hidden: {
type: Boolean,
default: () => {
return false;
},
},
id: {
type: Number,
default: () => {
return 0;
},
},
},
data() {
return {
pageNo: 0,
pageSize: 10,
total: 100,
gridData: [],
};
},
created() {},
methods: {
init() {
const params = {
certificateInfoId: this.id,
pageNo: this.pageNo,
pageSize: this.pageSize,
};
getCertifyHistory(params).then((res) => {
this.gridData = res.data.contentList;
});
},
handleSizeChange(value) {
this.pageSize = value;
this.init();
},
handleNumChange(value) {
this.pageNo = value;
},
goDetail() {
},
show() {},
handleClose() {
this.pageSize = 10;
this.pageNo = 1;
this.gridData = [];
this.$emit("close");
},
},
};
</script>
<style lang='less' scoped>
</style>
<template>
<el-dialog
title="拒绝原因"
:visible.sync="dialogVisible"
width="40%"
:before-close="handleClose"
>
<div class="refuse-dialog">
<el-radio
class="radio"
v-model="checkId"
v-for="item in list"
:key="item.id"
:label="item.id"
>{{ item.name }}</el-radio
>
<el-radio class="radio" v-model="checkId" :label="-1">手动输入</el-radio>
<el-input
v-if="checkId === -1"
type="textarea"
placeholder="请输入拒绝原因"
v-model="refuse"
maxlength="30"
show-word-limit
/>
</div>
<div class="btn">
<el-button type="default" size="small" @click="handleClose"
>取消</el-button
>
<el-button type="primary" size="small" @click="confirm">确认</el-button>
</div>
</el-dialog>
</template>
<script>
import { getRefuseTemplate } from "@/utils/qualification";
export default {
props: {},
data() {
return {
dialogVisible: false,
checkId: -1,
refuse: "",
list: [],
type: "",
typeData: {
1: "公司信息",
2: "营业执照",
3: "上一年年度报告",
4: "委托人身份证照片",
5: "委托书",
6: "法人身份证照片",
7: "药品经营许可证",
8: "药品经营质量管理规范认证证书",
9: "食品经营许可证",
10: "医疗器械经营许可证",
11: "二级医疗器械经营备案凭证",
12: "事业单位法人证",
},
};
},
created() {},
methods: {
init() {
getRefuseTemplate(this.type).then((res) => {
console.log(res);
this.list = res.data || [];
});
},
show(type) {
console.log(type);
this.type = type;
this.init(type);
this.dialogVisible = true;
},
handleClose() {
this.list = [];
this.refuse = "";
this.checkId = -1;
this.dialogVisible = false;
},
confirm() {
const params = {
refuseTemplateNo: this.checkId,
infoType: this.type,
infoTypeName:this.typeData[this.type]
};
if (this.checkId === -1) {
params.refuseContent = this.refuse;
} else {
params.refuseContent = this.list.filter((v) => {
return v.id === this.checkId;
})[0].name;
}
this.handleClose();
this.$emit("confirm", params);
},
},
};
</script>
<style lang='less' scoped>
.refuse-dialog {
display: flex;
flex-direction: column;
margin-bottom: 20px;
}
.radio {
margin-bottom: 10px;
}
.btn {
text-align: right;
}
</style>
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册