提交 854df7f8 编写于 作者: 张磊's avatar 张磊

Merge branch 'feature/zl' into 'test'

Feature/zl

See merge request com.pica.cloud.education.frontend/pica.cloud.web-education-admin!365
此差异已折叠。
...@@ -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",
......
...@@ -322,7 +322,7 @@ ...@@ -322,7 +322,7 @@
<div v-show="step == 2" class="course-content-step2"> <div v-show="step == 2" class="course-content-step2">
<img class="success-img" src="../../../assets/image/phrase3/icon-audit-success.png" /> <img class="success-img" src="../../../assets/image/phrase3/icon-audit-success.png" />
<span class="tips-1">您上传的课程已成功提交,预计在3-5个工作日内完成审核</span> <span class="tips-1">您上传的课程已成功提交,预计在3-5个工作日内完成审核</span>
<span class="tips-2">审核通过后,您才可以选择课程完成项目配置。如有任何疑问可联系云鹊医400-920-8877</span> <span class="tips-2">审核通过后,您才可以选择课程完成项目配置。如有任何疑问可联系云鹊医400-006-5252</span>
<el-button class="back-btn" type="primary" icon="el-icon-back" @click="backToOrgCourse">返回机构课程</el-button> <el-button class="back-btn" type="primary" icon="el-icon-back" @click="backToOrgCourse">返回机构课程</el-button>
</div> </div>
<div v-show="step == 1" slot="footer" class="dialog-footer"> <div v-show="step == 1" slot="footer" class="dialog-footer">
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
<div slot="footer" class="dialog-footer bottom-msg"> <div slot="footer" class="dialog-footer bottom-msg">
<div class="disblock"> <div class="disblock">
<h1>客服电话:400-920-8877 工作日:9:00~18:00</h1> <h1>客服电话:400-006-5252 工作日:9:00~18:00</h1>
</div> </div>
<div class="disblock"> <div class="disblock">
<img src="https://file.yunqueyi.com/File/static/qrcode_for_yunqueyi.jpg" alt=""> <img src="https://file.yunqueyi.com/File/static/qrcode_for_yunqueyi.jpg" alt="">
......
...@@ -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
import fetch from "../fetch";
import { getBaseUrl } from "@/utils/index";
let headers = {
"Content-Type": "application/json;charset=UTF-8",
token: localStorage.getItem("storageToken"),
};
/*获取省份*/
export const getProvinces = () => {
return fetch({
headers,
url: getBaseUrl(`/basic-data/position/provinces`),
method: "get",
});
};
// /*获取市*/
export const getCities = (params) => {
return fetch({
headers,
url: getBaseUrl(`/basic-data/position/cities`),
method: "get",
params: params,
});
};
// /*获取区*/
export const getCounties = (params) => {
return fetch({
url: getBaseUrl(`/basic-data/position/counties`),
method: "get",
params: params,
});
};
// /*获取乡镇*/
export const getTowns = (params) => {
return fetch({
url: getBaseUrl(`/basic-data/position/towns`),
method: "get",
params: params,
});
};
...@@ -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: '审核',
})
};
...@@ -137,3 +137,59 @@ export const getRefundDesc = (aid) => { ...@@ -137,3 +137,59 @@ export const getRefundDesc = (aid) => {
description: '退款说明', description: '退款说明',
}) })
}; };
export const getLgCompanyList = () => {
return fetch({
headers,
url: getBaseUrl(`/basic-data/constants/app/no-chars/P307`),
method: "get",
description: "获取物流公司",
});
};
export const getStoreAdressRepot = (storeId) => {
return fetch({
headers,
url: getBaseUrl(`store/query/${storeId}/repot`),
method: "get",
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: '经营范围',
})
};
...@@ -66,7 +66,7 @@ export default { ...@@ -66,7 +66,7 @@ export default {
if(res.data == 1) { if(res.data == 1) {
vm.$message.success('下载成功,请移至“下载报告”页面的“导出列表”中查看'); vm.$message.success('下载成功,请移至“下载报告”页面的“导出列表”中查看');
} else { } else {
vm.$message.error('下载失败,请联系管理员或拨打咨询电话:400-920-8877'); vm.$message.error('下载失败,请联系管理员或拨打咨询电话:400-006-5252');
} }
} }
}); });
......
...@@ -103,7 +103,7 @@ ...@@ -103,7 +103,7 @@
</el-form-item> </el-form-item>
<div class="tips-contnt" v-if="itemTimeForm.hasSelected"> <div class="tips-contnt" v-if="itemTimeForm.hasSelected">
<p class="yellow-font">当前计划中共{{totalNumber}}位居民(微信:{{wechatPatientNum}}位,短信:{{messagePatientNum}}位),本次定时推送任务在发送当日预计需要{{messagePatientNum}}条短信额度(微信推送不消耗额度,建议您让居民关注云鹊健康微信公众号),务必提前确保短信额度的充足。</p> <p class="yellow-font">当前计划中共{{totalNumber}}位居民(微信:{{wechatPatientNum}}位,短信:{{messagePatientNum}}位),本次定时推送任务在发送当日预计需要{{messagePatientNum}}条短信额度(微信推送不消耗额度,建议您让居民关注云鹊健康微信公众号),务必提前确保短信额度的充足。</p>
<p>需要更多额度,请前往「云鹊医App-个人中心-啾啾币中心」兑换短信额度后再进行预约,您也可以联系云鹊医客服购买短信额度,客服电话:400-920-8877</p> <p>需要更多额度,请前往「云鹊医App-个人中心-啾啾币中心」兑换短信额度后再进行预约,您也可以联系云鹊医客服购买短信额度,客服电话:400-006-5252</p>
</div> </div>
<el-form-item label="履约登记表"> <el-form-item label="履约登记表">
<el-select <el-select
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
:before-close="closeTipsDialog"> :before-close="closeTipsDialog">
<div class="no-enough-content"> <div class="no-enough-content">
<h3>余额不足提醒</h3> <h3>余额不足提醒</h3>
<p class="section">您的短信额度已欠费,请前往「云鹊医App-个人中心-啾啾币中心」兑换短信额度后再进行预约<br/>您也可以联系云鹊医客服购买短信额度,客服电话:400-920-8877</p> <p class="section">您的短信额度已欠费,请前往「云鹊医App-个人中心-啾啾币中心」兑换短信额度后再进行预约<br/>您也可以联系云鹊医客服购买短信额度,客服电话:400-006-5252</p>
<p class="tip">提示:微信推送不消耗额度,建议您与居民绑定微信,关注云鹊健康微信公众号</p> <p class="tip">提示:微信推送不消耗额度,建议您与居民绑定微信,关注云鹊健康微信公众号</p>
</div> </div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
......
此差异已折叠。
const form1 = { const form1 = {
categoryIdLevel2: '', categoryIdLevel2: "",
categoryIdLevel3: '', categoryIdLevel3: "",
categoryIdLevel4: '', categoryIdLevel4: "",
categoryIdLevel5: '', categoryIdLevel5: "",
medicCommonName:'', medicCommonName: "",
medicGoodsName:'', medicGoodsName: "",
size:'', size: "",
dosageId:null, dosageId: null,
usage:'', usage: "",
otc1:'1', otc1: "1",
approvalNumber:'', approvalNumber: "",
manufacturer:'', manufacturer: "",
department:'', department: "",
expiredTime:'', expiredTime: "",
specification_url:'', specification_url: "",
treatDisease:'', treatDisease: "",
barCode: '', barCode: "",
modelNo: '', // 型号 modelNo: "", // 型号
standardNo: '', // 执行标准号 standardNo: "", // 执行标准号
} };
const form2 = { const form2 = {
checkPackageId: '', // 检测登记表,暂无,先隐藏!!!!!!!!!!! checkPackageId: '', // 检测登记表,暂无,先隐藏!!!!!!!!!!!
...@@ -48,27 +48,39 @@ const form = { ...@@ -48,27 +48,39 @@ const form = {
// specificationImages:[], // specificationImages:[],
// goodsId: 0, // 新增时传0,更新时必需>0 // goodsId: 0, // 新增时传0,更新时必需>0
id: 0, id: 0,
goodsName:'', goodsName: "",
goodsDescription:'', goodsDescription: "",
goodsHeaderImages:[], goodsHeaderImages: [],
goodsType:'', goodsType: "",
barCode: '', barCode: "",
costPrice:0, costPrice: 0,
decrStock:0,//减少库存 decrStock: 0, //减少库存
incrStock:'',//增加库存 incrStock: "", //增加库存
storeId: '', storeId: "",
optPrice:'', optPrice: "",
goodsStock:0, goodsStock: 0,
stock: 0, stock: 0,
externalGoodsCode: '', externalGoodsCode: "",
leastCount:1, leastCount: 1,
mostCount: -1, mostCount: -1,
incrType:1, incrType: 1,
saleType:1, saleType: 1,
minWhole:0 minWhole: 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,7 +121,11 @@ ...@@ -121,7 +121,11 @@
<span>{{ scope.row.goodsStatus | rangeStatus }}</span> <span>{{ scope.row.goodsStatus | rangeStatus }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="quantityOfSale" label="销量" width="120" align="center"> <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>
<el-table-column prop="quantityOfUnPaidSale" label="待付款销量" width="120" align="center">
</el-table-column> </el-table-column>
<el-table-column prop="size" label="规格" width="120" align="center"> <el-table-column prop="size" label="规格" width="120" align="center">
...@@ -158,6 +162,16 @@ ...@@ -158,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">
...@@ -345,16 +359,14 @@ ...@@ -345,16 +359,14 @@
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
let vm = null; let vm = null;
import { openLoading, closeLoading } from "../../utils/utils"; import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "@/components/breadcrumb.vue"; import BreadCrumb from "@/components/breadcrumb.vue";
import { getRangeList,updateRangeStatus, getGoodsExportUrl, getOrdersExportUrl } from "../../utils/yqrange/yqrangeApi"; import { getGoodsExportUrl } from "../../utils/yqrange/yqrangeApi";
import { getGoodsList,batchOnOff,uploadExcel} from '@/utils/goods'; import { getGoodsList,batchOnOff,uploadExcel} from '@/utils/goods';
import { getBaseUrl } from '@/utils/index'
var typeList = [{ var typeList = [{
categoryName: "短信额度", categoryName: "短信额度",
id: 1, id: 1,
...@@ -486,9 +498,10 @@ ...@@ -486,9 +498,10 @@
vm = this; vm = this;
this.getLists() this.getLists()
this.getLever() this.getLever()
const {storeId,commissionFlag} = this.$route.query; const {storeId,commissionFlag,storeType} = this.$route.query;
this.searchForm.storeId = Number(storeId) || 0; this.searchForm.storeId = Number(storeId) || 0;
this.commissionFlag = commissionFlag; this.commissionFlag = commissionFlag;
this.storeType = storeType;
// if(storeId){ // if(storeId){
// this.searchForm.storeId = storeId // this.searchForm.storeId = storeId
// } // }
...@@ -550,7 +563,6 @@ ...@@ -550,7 +563,6 @@
handleRemove(){}, handleRemove(){},
beforeRemove(){}, beforeRemove(){},
handleSelectionChange(val){ handleSelectionChange(val){
console.log(val)
this.selectList = val this.selectList = val
}, },
...@@ -620,8 +632,10 @@ ...@@ -620,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){
...@@ -691,12 +705,13 @@ ...@@ -691,12 +705,13 @@
} }
}, },
edit(row){ edit(row){
const { goodsType } = row; const { goodsType, storeType } = row;
// 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}` url = `/create-good?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}` url = `/create-good?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({
...@@ -818,7 +833,6 @@ ...@@ -818,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,16 +89,6 @@ const rules = { ...@@ -89,16 +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" }
],
optPrice: [ optPrice: [
{ required: true, message: "请输入价格", trigger: "blur" }, { required: true, message: "请输入价格", trigger: "blur" },
], ],
...@@ -123,8 +113,24 @@ const rules = { ...@@ -123,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;
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<el-col :span="15" class="msg-phone"> <el-col :span="15" class="msg-phone">
<div class="grid-content bg-purple-light" style="cursor: default;"> <div class="grid-content bg-purple-light" style="cursor: default;">
<i class="el-icon-phone" style="cursor: default;"></i> <i class="el-icon-phone" style="cursor: default;"></i>
<h1 style="cursor: default;">400-920-8877</h1> <h1 style="cursor: default;">400-006-5252</h1>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div v-if="dataType == 0" class="data-chart"> <div v-if="dataType == 0" class="data-chart">
<div class="box-list"> <div class="box-list">
<div class="box-min"> <div class="box-min">
<div v-for="(item , index) in cardData" :key="index" class="box-card" v-bind:class="{ 'box-last': index == 2 }"> <div v-for="(item , index) in cardData" :key="index" class="box-card" v-bind:class="{ 'box-last': index == 3 }">
<el-tooltip v-if="index == 2" class="item-tool" placement="bottom-end" effect="light"> <el-tooltip v-if="index == 2" class="item-tool" placement="bottom-end" effect="light">
<div slot="content"> <div slot="content">
<p v-for="text in item.content">{{ text }}</p> <p v-for="text in item.content">{{ text }}</p>
...@@ -166,7 +166,7 @@ ...@@ -166,7 +166,7 @@
<div v-if="dataType == 1" class="data-table"> <div v-if="dataType == 1" class="data-table">
<div class="box-list"> <div class="box-list">
<div class="box-min-2"> <div class="box-min-2">
<div v-for="(item , index) in cardData" :key="index" class="box-card box-card2" v-bind:class="{ 'box-last': index == 1 }"> <div v-for="(item , index) in cardData" :key="index" class="box-card box-card2" v-bind:class="{ 'box-last': index == 2 }">
<el-tooltip v-if="index == 1" class="item-tool" placement="bottom-end" effect="light"> <el-tooltip v-if="index == 1" class="item-tool" placement="bottom-end" effect="light">
<div slot="content"> <div slot="content">
<p v-for="text in item.content">{{ text }}</p> <p v-for="text in item.content">{{ text }}</p>
...@@ -791,6 +791,17 @@ export default { ...@@ -791,6 +791,17 @@ export default {
content: [ content: [
"获证率:已获证人数/应参与人数*100%", "获证率:已获证人数/应参与人数*100%",
] ]
},
{
value: "0%",
title: " 参与完成率",
hasKey: "已完成人数 ",
hasNum: "0",
shouldKey: "已参与人数",
shouldNum: "0",
content: [
"参与完成率:已完成人数/已参与人数*100%",
]
} }
]; ];
if(data == null) { if(data == null) {
...@@ -802,11 +813,11 @@ export default { ...@@ -802,11 +813,11 @@ export default {
} }
return; return;
} }
cardData[2].title = vm.certFlag == 0 ? '完成率' : '获证率'; cardData[2].title = vm.certFlag == 0 ? '项目完成率' : '获证率';
cardData[2].hasKey = vm.certFlag == 0 ? '已完成人数' : '已获证人数'; cardData[2].hasKey = vm.certFlag == 0 ? '已完成人数' : '已获证人数';
if(vm.certFlag == 0) { if(vm.certFlag == 0) {
cardData[2].content = [ cardData[2].content = [
"完成率:已完成人数/应参与人数*100%", "项目完成率:已完成人数/应参与人数*100%",
] ]
} else { } else {
cardData[2].content = [ cardData[2].content = [
...@@ -821,15 +832,23 @@ export default { ...@@ -821,15 +832,23 @@ export default {
cardData[2].value = parseFloat((data.certificateRate*100).toFixed(1)) + '%'; cardData[2].value = parseFloat((data.certificateRate*100).toFixed(1)) + '%';
cardData[2].hasNum = data.finishCount; cardData[2].hasNum = data.finishCount;
cardData[2].shouldNum = data.doctorCount; cardData[2].shouldNum = data.doctorCount;
const p = data.joinCount ? data.finishCount/data.joinCount : 0;
cardData[3].value = parseFloat((p*100).toFixed(1)) + '%';
cardData[3].hasNum = data.finishCount;
cardData[3].shouldNum = data.joinCount;
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.hospitalJoinCount; cardData[0].hasNum = data.hospitalJoinCount; //hospitalCount
cardData[0].shouldNum = data.hospitalCount; cardData[0].shouldNum = data.hospitalCount; //hospitalJoinCount
vm.cardData = cardData; vm.cardData = cardData;
} else if(vm.dataType == 1) { } else if(vm.dataType == 1) {
vm.cardData = cardData.slice(1); vm.cardData = cardData.slice(1);
} }
console.log('---cardData', vm.dataType, vm.cardData)
}, },
updateResize() { updateResize() {
// setTimeout(function() { // setTimeout(function() {
...@@ -1081,8 +1100,7 @@ export default { ...@@ -1081,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);
...@@ -1156,6 +1174,7 @@ export default { ...@@ -1156,6 +1174,7 @@ export default {
.box-min { .box-min {
height: 106px; height: 106px;
min-width: 1050px; min-width: 1050px;
overflow-x: scroll;
} }
.box-min-2 { .box-min-2 {
height: 106px; height: 106px;
...@@ -1165,7 +1184,7 @@ export default { ...@@ -1165,7 +1184,7 @@ export default {
position: relative; position: relative;
background-color: #F1F7F6; background-color: #F1F7F6;
color: #449284; color: #449284;
width: 32%; width: 23%;
margin-right: 2%; margin-right: 2%;
height: 106px; height: 106px;
float: left; float: left;
...@@ -1231,7 +1250,7 @@ export default { ...@@ -1231,7 +1250,7 @@ export default {
} }
} }
.box-card2 { .box-card2 {
width: 49%; width: 32%;
margin-right: 2%; margin-right: 2%;
} }
.box-last { .box-last {
...@@ -1420,7 +1439,7 @@ export default { ...@@ -1420,7 +1439,7 @@ export default {
.el-radio-button { .el-radio-button {
.el-radio-button__inner { .el-radio-button__inner {
border:0 solid #666666 !important; border:0 solid #666666 !important;
box-shadow: 0; box-shadow: none;
} }
} }
.is-active { .is-active {
...@@ -1430,7 +1449,7 @@ export default { ...@@ -1430,7 +1449,7 @@ export default {
border-radius:10px 10px 0px 0px; border-radius:10px 10px 0px 0px;
background:#DFDFDF !important; background:#DFDFDF !important;
border:0 solid #666666 !important; border:0 solid #666666 !important;
box-shadow: 0; box-shadow: none;
} }
} }
} }
......
<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 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册