报价单优化

This commit is contained in:
xielue 2023-04-20 08:51:33 +08:00
parent a0b91c4e80
commit b30a855f56
34 changed files with 3745 additions and 914 deletions

View File

@ -22,6 +22,7 @@
"core-js": "^3.6.5",
"date-fns": "^2.14.0",
"enquire.js": "^2.1.6",
"hevue-img-preview": "^6.1.0",
"highlight.js": "^10.2.1",
"js-cookie": "^2.2.1",
"json-bigint": "^1.0.0",

3
public/js/axios.min.js vendored Normal file

File diff suppressed because one or more lines are too long

7
public/js/clipboard.min.js vendored Normal file

File diff suppressed because one or more lines are too long

8
public/js/data-set.min.js vendored Normal file

File diff suppressed because one or more lines are too long

8
public/js/js.cookie.min.js vendored Normal file
View File

@ -0,0 +1,8 @@
/**
* Minified by jsDelivr using Terser v3.14.1.
* Original file: /npm/js-cookie@2.2.1/src/js.cookie.js
*
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
*/
!function(e){var n;if("function"==typeof define&&define.amd&&(define(e),n=!0),"object"==typeof exports&&(module.exports=e(),n=!0),!n){var t=window.Cookies,o=window.Cookies=e();o.noConflict=function(){return window.Cookies=t,o}}}(function(){function e(){for(var e=0,n={};e<arguments.length;e++){var t=arguments[e];for(var o in t)n[o]=t[o]}return n}function n(e){return e.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent)}return function t(o){function r(){}function i(n,t,i){if("undefined"!=typeof document){"number"==typeof(i=e({path:"/"},r.defaults,i)).expires&&(i.expires=new Date(1*new Date+864e5*i.expires)),i.expires=i.expires?i.expires.toUTCString():"";try{var c=JSON.stringify(t);/^[\{\[]/.test(c)&&(t=c)}catch(e){}t=o.write?o.write(t,n):encodeURIComponent(String(t)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=encodeURIComponent(String(n)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var f="";for(var u in i)i[u]&&(f+="; "+u,!0!==i[u]&&(f+="="+i[u].split(";")[0]));return document.cookie=n+"="+t+f}}function c(e,t){if("undefined"!=typeof document){for(var r={},i=document.cookie?document.cookie.split("; "):[],c=0;c<i.length;c++){var f=i[c].split("="),u=f.slice(1).join("=");t||'"'!==u.charAt(0)||(u=u.slice(1,-1));try{var a=n(f[0]);if(u=(o.read||o)(u,a)||n(u),t)try{u=JSON.parse(u)}catch(e){}if(r[a]=u,e===a)break}catch(e){}}return e?r[e]:r}}return r.set=i,r.get=function(e){return c(e,!1)},r.getJSON=function(e){return c(e,!0)},r.remove=function(n,t){i(n,"",e(t,{expires:-1}))},r.defaults={},r.withConverter=t,r}(function(){})});
//# sourceMappingURL=/sm/b0ce608ffc029736e9ac80a8dd6a7db2da8e1d45d2dcfc92043deb2214aa30d8.map

8
public/js/nprogress.min.js vendored Normal file
View File

@ -0,0 +1,8 @@
/**
* Minified by jsDelivr using UglifyJS v3.4.4.
* Original file: /npm/nprogress@0.2.0/nprogress.js
*
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
*/
!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():e.NProgress=n()}(this,function(){var n,t,o={version:"0.2.0"},a=o.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function u(e,n,t){return e<n?n:t<e?t:e}function c(e){return 100*(-1+e)}o.configure=function(e){var n,t;for(n in e)void 0!==(t=e[n])&&e.hasOwnProperty(n)&&(a[n]=t);return this},o.status=null,o.set=function(n){var e=o.isStarted();n=u(n,a.minimum,1),o.status=1===n?null:n;var t=o.render(!e),r=t.querySelector(a.barSelector),i=a.speed,s=a.easing;return t.offsetWidth,l(function(e){""===a.positionUsing&&(a.positionUsing=o.getPositioningCSS()),f(r,function(e,n,t){var r;r="translate3d"===a.positionUsing?{transform:"translate3d("+c(e)+"%,0,0)"}:"translate"===a.positionUsing?{transform:"translate("+c(e)+"%,0)"}:{"margin-left":c(e)+"%"};return r.transition="all "+n+"ms "+t,r}(n,i,s)),1===n?(f(t,{transition:"none",opacity:1}),t.offsetWidth,setTimeout(function(){f(t,{transition:"all "+i+"ms linear",opacity:0}),setTimeout(function(){o.remove(),e()},i)},i)):setTimeout(e,i)}),this},o.isStarted=function(){return"number"==typeof o.status},o.start=function(){o.status||o.set(0);var e=function(){setTimeout(function(){o.status&&(o.trickle(),e())},a.trickleSpeed)};return a.trickle&&e(),this},o.done=function(e){return e||o.status?o.inc(.3+.5*Math.random()).set(1):this},o.inc=function(e){var n=o.status;return n?("number"!=typeof e&&(e=(1-n)*u(Math.random()*n,.1,.95)),n=u(n+e,0,.994),o.set(n)):o.start()},o.trickle=function(){return o.inc(Math.random()*a.trickleRate)},t=n=0,o.promise=function(e){return e&&"resolved"!==e.state()&&(0===t&&o.start(),n++,t++,e.always(function(){0==--t?(n=0,o.done()):o.set((n-t)/n)})),this},o.render=function(e){if(o.isRendered())return document.getElementById("nprogress");d(document.documentElement,"nprogress-busy");var n=document.createElement("div");n.id="nprogress",n.innerHTML=a.template;var t,r=n.querySelector(a.barSelector),i=e?"-100":c(o.status||0),s=document.querySelector(a.parent);return f(r,{transition:"all 0 linear",transform:"translate3d("+i+"%,0,0)"}),a.showSpinner||(t=n.querySelector(a.spinnerSelector))&&m(t),s!=document.body&&d(s,"nprogress-custom-parent"),s.appendChild(n),n},o.remove=function(){r(document.documentElement,"nprogress-busy"),r(document.querySelector(a.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&m(e)},o.isRendered=function(){return!!document.getElementById("nprogress")},o.getPositioningCSS=function(){var e=document.body.style,n="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return n+"Perspective"in e?"translate3d":n+"Transform"in e?"translate":"margin"};var l=function(){var n=[];function t(){var e=n.shift();e&&e(t)}return function(e){n.push(e),1==n.length&&t()}}(),f=function(){var s=["Webkit","O","Moz","ms"],n={};function r(e){return e=e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,n){return n.toUpperCase()}),n[e]||(n[e]=function(e){var n=document.body.style;if(e in n)return e;for(var t,r=s.length,i=e.charAt(0).toUpperCase()+e.slice(1);r--;)if((t=s[r]+i)in n)return t;return e}(e))}function o(e,n,t){n=r(n),e.style[n]=t}return function(e,n){var t,r,i=arguments;if(2==i.length)for(t in n)void 0!==(r=n[t])&&n.hasOwnProperty(t)&&o(e,t,r);else o(e,i[1],i[2])}}();function i(e,n){return 0<=("string"==typeof e?e:s(e)).indexOf(" "+n+" ")}function d(e,n){var t=s(e),r=t+n;i(t,n)||(e.className=r.substring(1))}function r(e,n){var t,r=s(e);i(e,n)&&(t=r.replace(" "+n+" "," "),e.className=t.substring(1,t.length-1))}function s(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function m(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return o});
//# sourceMappingURL=/sm/214fc7fb47eb8acd8c0acd7dd29f0480aef824549679beef626bf06f9e7a8fd7.map

6
public/js/vue-router.min.js vendored Normal file

File diff suppressed because one or more lines are too long

6
public/js/vue.min.js vendored Normal file

File diff suppressed because one or more lines are too long

6
public/js/vuex.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -59,7 +59,12 @@ export default {
},
methods: {
showCropper() {
if(this.value){
this.$hevueImgPreview(this.value)
}else{
this.$refs.cropper.show();
}
},
delFile(){
this.showUrl = "";

View File

@ -0,0 +1,56 @@
<template>
<div>
<input autocomplete="off" class="readonlytext" type="text" :value="value" />
</div>
</template>
<script>
export default {
name: 'MkFormInputShow',
components: {
},
props: {
value: {
type: String
}
},
data () {
return {
}
},
methods: {
},
watch: {
}
}
</script>
<style>
.readonlytext{
width: 100%;
height: 100%;
border-radius: 4px;
outline: 0;
margin: 0;
font-size: inherit;
font-family: inherit;
line-height: inherit;
padding: 0 0.6em;
color: #606266;
border: 1px solid #dcdfe6;
background-color: #fff;
-webkit-box-shadow: none;
box-shadow: none;
border:none;
border-bottom: 1px solid #d3d3d3;
}
</style>

View File

@ -8,6 +8,7 @@ import VXETable from 'vxe-table' // 加载vxe-table
import MkPrinter from './components/editors/MkPrinter.vue'
import MkCropper from './components/editors/MkCropper.vue'
import MkFormCropper from './components/editors/MkFormCropper.vue'
import MkFormInputShow from './components/editors/MkFormInputShow.vue'
import MkGridSelect from './components/editors/MkGridSelect.vue' // 加载下拉表格
import MkGridDataSelector from './components/editors/MkGridDataSelector.vue' // 加载下拉表格
import MkFormDataSelector from './components/editors/MkFormDataSelector.vue' // 加载下拉表单
@ -15,6 +16,7 @@ import switchCompany from './components/switchCompany/switchCompany' // 加载
import XEUtils from 'xe-utils' // 加载xe-utils
import MkFormUploader from './components/editors/MkFormUploader.vue'
import MkFormEditor from './components/editors/MkFormEditor.vue'
import hevueImgPreview from 'hevue-img-preview'
// 创建一个下拉表格渲染
VXETable.renderer.add('MkGridDataSelector', { // 创建一个下拉表格渲染
@ -39,7 +41,14 @@ VXETable.renderer.add('MkFormDataSelector', {
return <mk-form-data-selector v-model={data[field]} {...{ props }}></mk-form-data-selector>
}
})
VXETable.renderer.add('MkFormInputShow', {
// 项内容模板
renderItemContent(h, renderOpts, params) {
const { data, field } = params
const props = renderOpts.props || {}
return <mk-form-input-show v-model={data[field]} {...{ props }}></mk-form-input-show>
}
})
@ -161,6 +170,12 @@ var mk = {
Vue.component(MkFormUploader.name,MkFormUploader);
Vue.component(MkFormEditor.name,MkFormEditor);
Vue.component(MkFormCropper.name,MkFormCropper);
Vue.component(MkFormInputShow.name,MkFormInputShow);
//图片预览组件
//使用方法this.$hevueImgPreview(url)
Vue.use(hevueImgPreview)
},

View File

@ -29,7 +29,7 @@
vertical-align: middle;
}
img{
max-width: 45px;
max-width: 40px;
max-height: 40px;
vertical-align: middle;

View File

@ -1,5 +1,4 @@
<template>
<page-layout :desc="desc">
<div class="page-body">
<vxe-form :data="formOptions.data" ref="xForm" :title-width="formOptions.titleWidth"
@ -19,19 +18,17 @@
</div>
</div>
</page-layout>
</template>
<script>
import BASE_URL from '@/services/Middle/bathroom/BathroomFittings/api.js';
import PageLayout from '@/layouts/PageLayout'
export default {
name: 'BathroomFittingsUpdate',
i18n: require('./i18n'),
components: { PageLayout },
components: { },
props: {
pageMode: {
type: String,

View File

@ -99,13 +99,13 @@ export default {
},
//
searchRules: [
{ key: "title", mode: "like" },
{ key: "desc", mode: "like" }
{ key: "name", mode: "like" },
{ key: "model", mode: "like" }
],
//
searchFormItems: [ //
{ field: 'title', title: '标题', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入标题' } } },
{ field: 'desc', title: '描述', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入描述' } } },
{ field: 'name', title: '部件名', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入部件名' } } },
{ field: 'model', title: '型号', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入型号' } } },
{ span: 8, slots: { default: 'date' } }, //
{
align: 'right', span: 4, itemRender: { //
@ -196,7 +196,9 @@ export default {
computed: {
//
desc() {
return this.$t('pageDesc')
let desc = this.$t('pageDesc');
if(desc == ' ') return '';
return desc;
}
},

View File

@ -1,13 +1,13 @@
module.exports = {
messages: {
CN: {
pageDesc: '描述内容',
pageDesc: ' ',
},
HK: {
pageDesc: '描述内容',
pageDesc: ' ',
},
US: {
pageDesc: 'Form pages are used to collect or verify information to users, and basic forms are common in scenarios where there are fewer data items.',
pageDesc: ' ',
}
}

View File

@ -1,5 +1,4 @@
<template>
<page-layout :desc="desc">
<div class="page-body">
<vxe-form :data="formOptions.data" ref="xForm" :title-width="formOptions.titleWidth"
@ -19,19 +18,18 @@
</div>
</div>
</page-layout>
</template>
<script>
import BASE_URL from '@/services/Middle/bathroom/BathroomMaterial/api.js';
import PageLayout from '@/layouts/PageLayout'
export default {
name: 'BathroomMaterialUpdate',
i18n: require('./i18n'),
components: { PageLayout },
components: { },
props: {
pageMode: {
type: String,
@ -113,11 +111,11 @@ export default {
// =============================== Start ===============================
{ field: 'name', title: '材料名称', span: 12, itemRender: { name: '$input' } },
{ field: 'spec', title: '厚度', span: 12, itemRender: { name: '$input', props: { type: 'number' } } },
{ field: 'code', title: '编码', span: 12, itemRender: { name: '$input' } },
{ field: 'type', title: '材料类型', span: 12, itemRender: { name: '$input' } },
{ field: 'spec', title: '材料规格', span: 12, itemRender: { name: '$input' } },
{ field: 'unit', title: '单位', span: 12, itemRender: { name: '$input' } },
{ field: 'image', title: '图片', span: 12, itemRender: { name: '$input' } },
//{ field: 'image', title: '', span: 12, itemRender: { name: '$input' } },
{ field: 'remark', title: '备注', span: 12, itemRender: { name: '$input' } },
// =============================== End ===============================

View File

@ -99,13 +99,13 @@ export default {
},
//
searchRules: [
{ key: "title", mode: "like" },
{ key: "desc", mode: "like" }
{ key: "name", mode: "like" },
{ key: "spec", mode: "like" }
],
//
searchFormItems: [ //
{ field: 'title', title: '标题', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入标题' } } },
{ field: 'desc', title: '描述', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入描述' } } },
{ field: 'name', title: '材料名', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入材料名' } } },
{ field: 'spec', title: '规格', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入规格' } } },
{ span: 8, slots: { default: 'date' } }, //
{
align: 'right', span: 4, itemRender: { //
@ -169,7 +169,7 @@ export default {
{ field: 'type', sortable: true, title: '材料类型', width: 250 }, //
{ field: 'spec', sortable: true, title: '材料规格', width: 250 }, //
{ field: 'unit', sortable: true, title: '单位', width: 250 }, //
{ field: 'image', sortable: true, title: '图片', width: 250 }, //
// { field: 'image', sortable: true, title: '', width: 250 }, //
{ field: 'create_time', formatter: 'formatDate', width: 160, sortable: true, title: '创建时间', showHeaderOverflow: true }, //
{ field: 'update_time', formatter: 'formatDate', width: 160, sortable: true, title: '更新时间', showHeaderOverflow: true }, //

View File

@ -4,15 +4,31 @@
<div class="topbar">
<a-button type="primary" @click="ok">保存</a-button>
<a-button @click="selectScheme">选择主柜/抽屉</a-button>
<a-button @click="print">打印</a-button>
<a-button @click="cancel">取消</a-button>
<a-button @click="toggleAll">收缩/展开</a-button>
<vxe-switch v-model="showExp" open-label="显示公式" :open-value="true" close-label="显示数值"
:close-value="false"></vxe-switch>
<a-radio-group :value="showType" @change="showTypeChange">
<a-radio-button value="1">
显示全部
</a-radio-button>
<a-radio-button value="2">
免漆
</a-radio-button>
<a-radio-button value="3">
油漆
</a-radio-button>
</a-radio-group>
</div>
<a-tabs v-model="tabKey" hide-add @edit="onTabEdit" @change="tabChange">
<a-tab-pane key="main" tab="整装">
<a-collapse v-model="groupbox1_activeKey">
<a-collapse-panel key="1" header="基本信息">
@ -22,7 +38,15 @@
</a-collapse-panel>
<a-collapse-panel key="2" header="材料部分">
<vxe-table border show-overflow keep-source ref="fittings_xTable" :data="fittings_detailsData" :keyboard-config="{
<div slot="extra">
合计板材数量{{ parseFloat(formOptions.data.fittings_total_quantity || 0).toFixed(0) }}
封边用量{{ parseFloat(formOptions.data.fittings_total_seal || 0).toFixed(2) }}
板材用量{{ parseFloat(formOptions.data.fittings_total_board_length || 0).toFixed(3) }}
油漆面积{{ parseFloat(formOptions.data.fittings_total_paint_area || 0).toFixed(3) }}
</div>
<vxe-table border show-overflow keep-source ref="fittings_xTable" :data="fittings_detailsData"
:keyboard-config="{
isArrow: true, isDel: true,
isEnter: false, isTab: true, isEdit: true, isChecked: true
}" :mouse-config="{ selected: true }" @pulldownSelected="fittings_onPulldownSelected" show-footer
@ -119,7 +143,8 @@
:edit-render="{ name: '$input', props: { type: 'number' } }"></vxe-column>
<vxe-column field="paint_number" title="油漆面" width="80"
:edit-render="{ name: '$input', props: { type: 'number' } }"></vxe-column>
<vxe-column field="board_length_formula" title="板材用量(块)" width="220" :edit-render="{ name: 'EditExpressions' }">
<vxe-column field="board_length_formula" title="板材用量(块)" width="220"
:edit-render="{ name: 'EditExpressions' }">
<template #default="{ row }">
<a-tooltip>
<template slot="title">
@ -137,7 +162,8 @@
</vxe-column>
<vxe-column field="real_quantity" title="实木用量(立方)" width="80"
:edit-render="{ name: '$input', props: { type: 'number' } }"></vxe-column>
<vxe-column field="paint_area_formula" title="油漆面积(㎡)" width="220" :edit-render="{ name: 'EditExpressions' }">
<vxe-column field="paint_area_formula" title="油漆面积(㎡)" width="220"
:edit-render="{ name: 'EditExpressions' }">
<template #default="{ row }">
<a-tooltip>
<template slot="title">
@ -159,6 +185,9 @@
</a-collapse-panel>
<a-collapse-panel key="3" header="配件部分">
<div slot="extra">
合计金额{{ parseFloat(formOptions.data.parts_total_amount || 0).toFixed(2) }}
</div>
<vxe-table border show-overflow keep-source ref="parts_xTable" :data="parts_detailsData" :keyboard-config="{
isArrow: true, isDel: true,
isEnter: false, isTab: true, isEdit: true, isChecked: true
@ -210,8 +239,11 @@
</a-collapse-panel>
<a-collapse-panel key="4" header="包装部分">
<vxe-table border show-overflow keep-source ref="packaging_xTable" :data="packaging_detailsData" :keyboard-config="{
<div slot="extra">
合计金额{{ parseFloat(formOptions.data.packaging_total_amount || 0).toFixed(2) }}
</div>
<vxe-table border show-overflow keep-source ref="packaging_xTable" :data="packaging_detailsData"
:keyboard-config="{
isArrow: true, isDel: true,
isEnter: false, isTab: true, isEdit: true, isChecked: true
}" :mouse-config="{ selected: true }" @pulldownSelected="packaging_onPulldownSelected"
@ -316,17 +348,47 @@
</a-collapse-panel>
<a-collapse-panel key="5" header="抽屉部分">
<div slot="extra">
合计金额{{ parseFloat(formOptions.data.drawer_total_amount || 0).toFixed(2) }}
</div>
<vxe-table border show-overflow keep-source ref="drawer_xTable" :data="drawer_detailsData" :keyboard-config="{
isArrow: true, isDel: true,
isEnter: false, isTab: true, isEdit: true, isChecked: true
}" :mouse-config="{ selected: true }" @pulldownSelected="drawer_onPulldownSelected"
@popupSelected="drawer_onPopupSelected" :export-config="{}" @edit-closed="drawer_afterEditEvent"
@edit-actived="drawer_beforeEditEvent" show-footer :footer-method="drawer_footerMethod"
:footer-cell-class-name="drawer_footerCellClassName"
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false, beforeEditMethod: drawer_beforeEditMethod }">
<vxe-column field="name" title="抽屉" width="260"></vxe-column>
<vxe-column field="quantity" title="数量" width="200"></vxe-column>
<vxe-column field="expense" formatter="formatNumber" title="单价(免漆)" width="200"></vxe-column>
<vxe-column field="paint_expense" formatter="formatNumber" title="单价(油漆)" width="200"></vxe-column>
<vxe-column field="amount" formatter="formatNumber" title="费用(免漆)" width="200"></vxe-column>
<vxe-column field="paint_amount" formatter="formatNumber" title="费用(油漆)" width="200"></vxe-column>
</vxe-table>
</a-collapse-panel>
</a-collapse>
<div class="groupbox">
<div class="groupbox" v-if="showType == '1' || showType == '2'">
<h3>核算表免漆</h3>
<a-collapse v-model="groupbox2_activeKey">
<a-collapse-panel key="1" header="材料">
<div slot="extra">
合计金额{{ parseFloat(formOptions.data.material_total_amount || 0).toFixed(2) }}
</div>
<vxe-table border show-overflow keep-source ref="material_xTable" :data="material_detailsData" :keyboard-config="{
<vxe-table border show-overflow keep-source ref="material_xTable" :data="material_detailsData"
:keyboard-config="{
isArrow: true, isDel: true,
isEnter: false, isTab: true, isEdit: true, isChecked: true
}" :mouse-config="{ selected: true }" @pulldownSelected="material_onPulldownSelected"
@ -388,6 +450,9 @@
</a-collapse-panel>
<a-collapse-panel key="2" header="人工" :disabled="false">
<div slot="extra">
合计金额{{ parseFloat(formOptions.data.labor_total_amount || 0).toFixed(2) }}
</div>
<vxe-table border show-overflow keep-source ref="labor_xTable" :data="labor_detailsData" :keyboard-config="{
isArrow: true, isDel: true,
isEnter: false, isTab: true, isEdit: true, isChecked: true
@ -436,7 +501,11 @@
<a-collapse-panel key="3" header="费用结算" :disabled="false">
<vxe-table border show-overflow keep-source ref="expense_xTable" :data="expense_detailsData" :keyboard-config="{
<div slot="extra">
合计金额{{ parseFloat(formOptions.data.expense_total_amount || 0).toFixed(2) }}
</div>
<vxe-table border show-overflow keep-source ref="expense_xTable" :data="expense_detailsData"
:keyboard-config="{
isArrow: true, isDel: true,
isEnter: false, isTab: true, isEdit: true, isChecked: true
}" :mouse-config="{ selected: true }" @pulldownSelected="expense_onPulldownSelected"
@ -482,19 +551,21 @@
</div>
<div class="groupbox">
<div class="groupbox" v-if="showType == '1' || showType == '3'">
<h3>核算表油漆</h3>
<a-collapse v-model="groupbox3_activeKey">
<a-collapse-panel key="1" header="材料">
<div slot="extra">
合计金额{{ parseFloat(formOptions.data.paintMaterial_total_amount || 0).toFixed(2) }}
</div>
<vxe-table border show-overflow keep-source ref="paintMaterial_xTable" :data="paintMaterial_detailsData"
:keyboard-config="{
isArrow: true, isDel: true,
isEnter: false, isTab: true, isEdit: true, isChecked: true
}" :mouse-config="{ selected: true }" @pulldownSelected="paintMaterial_onPulldownSelected"
@popupSelected="paintMaterial_onPopupSelected" :export-config="{}" @edit-closed="paintMaterial_afterEditEvent"
show-footer :footer-method="paintMaterial_footerMethod"
@popupSelected="paintMaterial_onPopupSelected" :export-config="{}"
@edit-closed="paintMaterial_afterEditEvent" show-footer :footer-method="paintMaterial_footerMethod"
:footer-cell-class-name="paintMaterial_footerCellClassName"
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false, beforeEditMethod: paintMaterial_beforeEditMethod }">
<vxe-column width="60" v-if="!isReadonly">
@ -551,6 +622,9 @@
</a-collapse-panel>
<a-collapse-panel key="2" header="人工" :disabled="false">
<div slot="extra">
合计金额{{ parseFloat(formOptions.data.paintLabor_total_amount || 0).toFixed(2) }}
</div>
<vxe-table border show-overflow keep-source ref="paintLabor_xTable" :data="paintLabor_detailsData"
:keyboard-config="{
isArrow: true, isDel: true,
@ -598,15 +672,17 @@
</a-collapse-panel>
<a-collapse-panel key="3" header="费用结算" :disabled="false">
<div slot="extra">
合计金额{{ parseFloat(formOptions.data.paintExpense_total_amount || 0).toFixed(2) }}
</div>
<vxe-table border show-overflow keep-source ref="paintExpense_xTable" :data="paintExpense_detailsData"
:keyboard-config="{
isArrow: true, isDel: true,
isEnter: false, isTab: true, isEdit: true, isChecked: true
}" :mouse-config="{ selected: true }" @pulldownSelected="paintExpense_onPulldownSelected"
@popupSelected="paintExpense_onPopupSelected" :export-config="{}" @edit-closed="paintExpense_afterEditEvent"
@edit-actived="paintExpense_beforeEditEvent" show-footer :footer-method="paintExpense_footerMethod"
:footer-cell-class-name="paintExpense_footerCellClassName"
@popupSelected="paintExpense_onPopupSelected" :export-config="{}"
@edit-closed="paintExpense_afterEditEvent" @edit-actived="paintExpense_beforeEditEvent" show-footer
:footer-method="paintExpense_footerMethod" :footer-cell-class-name="paintExpense_footerCellClassName"
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false, beforeEditMethod: paintExpense_beforeEditMethod }">
<vxe-column width="60" v-if="!isReadonly">
<template #default="{ row }">
@ -647,6 +723,24 @@
</div>
</a-tab-pane>
<a-tab-pane v-for="(item, index) in drawer_detailsData" :key="index" :tab="item.name">
<a-button @click="onTabEdit(index)" style="margin-bottom: 5px;">移除</a-button>
<drawer :item="item" ref="drawer" :index="index" @update="calculateAll()"></drawer>
</a-tab-pane>
</a-tabs>
<div class="footerbar">
<a-button type="primary" @click="ok">保存</a-button>
<a-button @click="cancel">关闭</a-button>
</div>
<vxe-modal show-footer class-name="vxe-table--ignore-clear edit-popup-box" title="选择数据" width="800" height="600"
v-model="modalVisible" @confirm="confirmSelectScheme">
<template #default>
@ -676,11 +770,13 @@ VXETable.renderer.add('EditExpressions', {
}
})
import drawer from './drawer'
export default {
name: 'BathroomQuotationUpdate',
i18n: require('./i18n'),
components: {},
components: { drawer },
props: {
pageMode: {
type: String,
@ -698,8 +794,10 @@ export default {
// ID
currentBeid: 0,
tabKey: 'main',
showAll: false,
showExp: false,
showType: "1",
modalVisible: false,
scheme_loading: false, //
scheme_tableData: [], //
@ -719,7 +817,7 @@ export default {
isReadonly: false,
fittings_detailsData: [],
parts_detailsData: [],
drawer_detailsData: [],
editorFittings: {
dataUrl: `${BASE_URL.BASE_URL}/BathroomFittings/v1/bathroom/fittings/list`,
@ -807,7 +905,11 @@ export default {
item_name: "人工费", amount_formula: "{免漆人工总费用}"
},
{
item_name: "制,造,费,用", amount_formula: "({免漆材料总费用}+{配件总费用}+{包装总费用} + {免漆人工总费用})*0.22"
item_name: "抽屉费用", amount_formula: "{免漆抽屉总费用}"
},
{
item_name: "制,造,费,用", amount_formula: "({免漆材料总费用}+{配件总费用}+{包装总费用} + {免漆人工总费用}+{免漆抽屉总费用})*0.22"
}
],
paintExpense_detailsData: [
@ -817,8 +919,12 @@ export default {
{
item_name: "人工费", amount_formula: "{油漆人工总费用}"
},
{
item_name: "制,造,费,用", amount_formula: "({油漆材料总费用}+{配件总费用}+{包装总费用} + {油漆人工总费用})*0.22"
item_name: "抽屉费用", amount_formula: "{油漆抽屉总费用}"
},
{
item_name: "制,造,费,用", amount_formula: "({油漆材料总费用}+{配件总费用}+{包装总费用} + {油漆人工总费用}+{油漆抽屉总费用})*0.22"
}
],
@ -970,8 +1076,8 @@ export default {
{ field: 'expense', title: '总费用(免漆)', span: 8, itemRender: { name: 'input', props: { readonly: true } } },
{ field: 'paint_expense', title: '总费用(油漆)', span: 8, itemRender: { name: 'input', props: { readonly: true } } },
{ field: 'show_expense', title: '总费用(免漆)', span: 8, itemRender: { name: 'MkFormInputShow' } },
{ field: 'show_paint_expense', title: '总费用(油漆)', span: 8, itemRender: { name: 'MkFormInputShow' } },
// =============================== End ===============================
]
@ -1048,42 +1154,15 @@ export default {
this.expense_detailsData = JSON.parse(data.expense_list || "[]");
this.paintExpense_detailsData = JSON.parse(data.paint_expenseList || "[]");
this.drawer_detailsData = JSON.parse(data.drawer_list || "[]");
this.detailDataInit();
this.calculateAll();
/*
for (let xname in this.$refs) {
let table = this.$refs[xname];
if (table.getColumns) {
let columns = table.getColumns();
let newColumns1 = [];
let newColumns2 = [];
columns.forEach(item => {
let field = item.field;
if (field && field.replace) {
field = field.replace("_formula", "");
newColumns1.push({ field: field, text: item.title })
newColumns2.push({ title: item.title, align: 'center', field: field, width: 150, checked: true })
}
})
console.log(xname)
console.log(JSON.stringify(newColumns1))
console.log(JSON.stringify(newColumns2))
}
}
*/
}).catch((a) => {
this.$mk.error(a.data.msg);
});
@ -1106,6 +1185,35 @@ export default {
methods: {
toggleAll() {
if (this.tabKey == "main") {
this.showAll = !this.showAll;
if (this.showAll) {
this.groupbox1_activeKey = ["1", "2", "3", "4", "5"];
this.groupbox2_activeKey = ["1", "2", "3"];
this.groupbox3_activeKey = ["1", "2", "3"];
} else {
this.groupbox1_activeKey = [];
this.groupbox2_activeKey = [];
this.groupbox3_activeKey = [];
}
} else {
let index = parseInt(this.tabKey);
let drawers = this.$refs['drawer'];
if (drawers && drawers[index] && drawers[index].toggleAll) {
drawers[index].toggleAll();
}
}
},
print() {
let hiprint = this.$hiPrint;
@ -1147,6 +1255,23 @@ export default {
return data;
},
showTypeChange(e) {
this.showType = e.target.value;
let drawers = this.$refs['drawer'];
if (drawers) {
drawers.forEach(drawer => {
if (drawer.setShowType) {
drawer.setShowType(this.showType);
}
})
}
},
selectScheme() {
this.modalVisible = true;
this.scheme_load();
@ -1176,6 +1301,23 @@ export default {
paintMaterialList = paintMaterialList.filter(a => a.material && a.material[0]);
if (row.type != settings.schemeType_main) { //
this.drawer_detailsData.push({
name: row.name,
quantity: 1,
fittingsList,
partsList,
packagingList,
laborList,
materialList,
paintLaborList,
paintMaterialList
});
this.$forceUpdate();
} else {
this.addToList({ scheme_id, listData: fittingsList, detailsData: this.fittings_detailsData });
this.addToList({ scheme_id, listData: partsList, detailsData: this.parts_detailsData });
this.addToList({ scheme_id, listData: packagingList, detailsData: this.packaging_detailsData });
@ -1188,6 +1330,9 @@ export default {
this.calculateAll();
}
this.modalVisible = false;
},
@ -1339,6 +1484,10 @@ export default {
}
if (column.field == "material") {
this.resetMaterial();
if(selectedData.spec){
row.height_formula = selectedData.spec;
}
}
},
fittings_onPopupSelected({ rows, name, params }) {
@ -1572,8 +1721,7 @@ export default {
return 'col-blue'
}
},
material_footerMethod({ columns, data }) {
console.log(data)
material_footerMethod({ columns }) {
const sums = []
columns.forEach((column, columnIndex) => {
if (columnIndex === 0) {
@ -1632,8 +1780,7 @@ export default {
return 'col-blue'
}
},
labor_footerMethod({ columns, data }) {
console.log(data)
labor_footerMethod({ columns }) {
const sums = []
columns.forEach((column, columnIndex) => {
if (columnIndex === 0) {
@ -1690,8 +1837,7 @@ export default {
return 'col-blue'
}
},
expense_footerMethod({ columns, data }) {
console.log(data)
expense_footerMethod({ columns }) {
const sums = []
columns.forEach((column, columnIndex) => {
if (columnIndex === 0) {
@ -1754,8 +1900,7 @@ export default {
return 'col-blue'
}
},
paintMaterial_footerMethod({ columns, data }) {
console.log(data)
paintMaterial_footerMethod({ columns }) {
const sums = []
columns.forEach((column, columnIndex) => {
if (columnIndex === 0) {
@ -1812,8 +1957,7 @@ export default {
return 'col-blue'
}
},
paintLabor_footerMethod({ columns, data }) {
console.log(data)
paintLabor_footerMethod({ columns }) {
const sums = []
columns.forEach((column, columnIndex) => {
if (columnIndex === 0) {
@ -1869,8 +2013,7 @@ export default {
return 'col-blue'
}
},
paintExpense_footerMethod({ columns, data }) {
console.log(data)
paintExpense_footerMethod({ columns }) {
const sums = []
columns.forEach((column, columnIndex) => {
if (columnIndex === 0) {
@ -1889,6 +2032,69 @@ export default {
},
drawer_onPulldownSelected({ row, name, params }) {
console.log(row, name, params);
},
drawer_onPopupSelected({ rows, name, params }) {
console.log(rows, name, params);
},
drawer_beforeEditMethod({ column, row }) {
console.log(row, column);
return true;
},
drawer_afterEditEvent({ column, row }) {
console.log(row, column);
this.calculateAll();
},
drawer_beforeEditEvent({ column, row }) {
console.log(row, column);
},
drawer_pageAdd(row) {
const $table = this.$refs.drawer_xTable
const record = {
}
if (row) {
this.drawer_detailsData.splice($table.getRowSeq(row), 0, record);
} else {
this.drawer_detailsData.push(record)
}
},
drawer_pageDelete(row) {
const $table = this.$refs.drawer_xTable;
this.drawer_detailsData.splice($table.getRowSeq(row) - 1, 1);
},
drawer_footerCellClassName({ columnIndex }) {
if (columnIndex === 0) {
return 'col-blue'
}
},
drawer_footerMethod({ columns, data }) {
console.log(data)
const sums = []
columns.forEach((column, columnIndex) => {
if (columnIndex === 0) {
sums.push('')
} else {
let sumCell = ''
switch (column.field) {
case 'amount':
sumCell = parseFloat(this.formOptions.data.drawer_total_amount || 0).toFixed(2)
break
case 'paint_amount':
sumCell = parseFloat(this.formOptions.data.drawer_total_paint_amount || 0).toFixed(2)
break
}
sums.push(sumCell)
}
})
return [sums]
},
formatName(v) {
return (v || "").replace("\r", "").replace("\n", "").replace("\t", "").replace(" ", "");
},
@ -2077,6 +2283,7 @@ export default {
postdata.expense = this.formOptions.data.expense_total_amount;
postdata.paint_expense = this.formOptions.data.paintExpense_total_amount;
this.formatDetailsData(postdata.fittingsList);
this.formatDetailsData(postdata.partsList);
this.formatDetailsData(postdata.packagingList);
@ -2099,6 +2306,7 @@ export default {
postdata.paint_expenseList = JSON.stringify(postdata.paint_expenseList);
postdata.drawer_list = JSON.stringify(this.drawer_detailsData);
//
this.$mk.formatFormData({ data: postdata, rules: this.formOptions.items });
@ -2139,6 +2347,26 @@ export default {
this.back();
},
onTabEdit(index) {
this.drawer_detailsData.splice(index, 1);
this.calculateAll();
},
tabChange() {
setTimeout(() => {
let drawers = this.$refs['drawer'];
if (drawers) {
drawers.forEach(drawer => {
if (drawer.setShowType) {
drawer.setShowType(this.showType);
}
})
}
}, 500);
},
getExpressionItemValue({ name, row, defaultValue }) {
@ -2206,6 +2434,9 @@ export default {
},
_calculateAll() {
this.totalRows({ detailsData: this.drawer_detailsData, names: ["amount", "paint_amount"], totalPrev: "drawer" });
this.calculateRows({ detailsData: this.fittings_detailsData, names: ["long", "width", "height", "seal", "board_length", "paint_area"], totalPrev: "fittings" });
this.totalRows({ detailsData: this.fittings_detailsData, names: ["quantity"], totalPrev: "fittings" });
@ -2224,13 +2455,14 @@ export default {
this.calculateRows({ detailsData: this.expense_detailsData, names: ["amount"], totalPrev: "expense" });
this.calculateRows({ detailsData: this.paintExpense_detailsData, names: ["amount"], totalPrev: "paintExpense" });
console.log("this.formOptions.data.expense_total_amount:" + this.formOptions.data.expense_total_amount)
this.formOptions.data.expense = this.formOptions.data.expense_total_amount;
this.formOptions.data.paint_expense = this.formOptions.data.paintExpense_total_amount;
this.formOptions.data.expense = parseFloat(this.formOptions.data.expense || 0).toFixed(2);
this.formOptions.data.paint_expense = parseFloat(this.formOptions.data.paint_expense || 0).toFixed(2);
this.formOptions.data.show_expense = parseFloat(this.formOptions.data.expense || 0).toFixed(2);
this.formOptions.data.show_paint_expense = parseFloat(this.formOptions.data.paint_expense || 0).toFixed(2);
this.formOptions.data = JSON.parse(JSON.stringify(this.formOptions.data))
},

File diff suppressed because it is too large Load Diff

View File

@ -584,29 +584,29 @@ export default {
{
title: '左侧',
span: 18,
span: 16,
children: [
{ field: 'name', title: '设计方案名称', span: 12, itemRender: { name: '$input' } },
{ field: 'code', title: '编码', span: 12, itemRender: { name: '$input' } },
{ field: 'model', title: '型号', span: 12, itemRender: { name: '$input' } },
{ field: 'type', title: '类型', span: 12, itemRender: { name: '$radio', options: settings.options_schemeType } },
{ field: 'name', title: '设计方案名称', span: 24, itemRender: { name: '$input' } },
{ field: 'code', title: '编码', span: 24, itemRender: { name: '$input' } },
{ field: 'model', title: '型号', span: 24, itemRender: { name: '$input' } },
{ field: 'type', title: '类型', span: 24, itemRender: { name: '$radio', options: settings.options_schemeType } },
{ field: 'description', title: '描述', span: 24, itemRender: { name: '$input' } },
]
},
{
title: '右侧',
span: 6,
span: 8,
children: [
{
field: 'image', title: '设计图', span: 12, itemRender: {
field: 'image', span: 24, itemRender: {
name: 'MkFormCropper', props: {
}
}
},
]
},
{ field: 'description', title: '描述', span: 24, itemRender: { name: '$input' } },
]
},
@ -782,6 +782,11 @@ export default {
}
if (column.field == "material") {
this.resetMaterial();
if(selectedData.spec){
row.height_formula = selectedData.spec;
}
}
},
fittings_onPopupSelected({ rows, name, params }) {

View File

@ -0,0 +1,461 @@
<template>
<div class="page-body">
<a-row type="flex">
<a-col :flex="$mk.config.ui.searchFlex">
<!-- 搜索区 -->
<vxe-form :data="searchFormData" :items="searchFormItems" titleColon @submit="onSearch">
<template #date="{}">
<a-form-item label="创建时间" :style="{ display: 'inline-block', width: 120 }">
</a-form-item>
<a-form-item :style="{ display: 'inline-block', width: 'calc(100% - 120px )' }">
<a-range-picker @change="onDateChange" />
</a-form-item>
</template>
</vxe-form>
</a-col>
<a-col :flex="$mk.config.ui.toolbarFlex">
<!-- 工具条 -->
<mk-toolbar @toolbarClick="toolbarClick"></mk-toolbar>
</a-col>
</a-row>
<vxe-toolbar ref="xToolbar" custom>
<template #buttons>
<a-button type="primary" icon="delete" @click="pageDelete()">批量删除</a-button>
</template>
</vxe-toolbar>
<!-- 表格区 -->
<div class="gridPanel">
<vxe-grid ref='xGrid' v-bind="gridOptions">
<!-- =============================== 表格列 自动生成 Start =============================== -->
<!-- =============================== 表格列 自动生成 End =============================== -->
<template #op="{ row }">
<div class="oplinks">
<a @click.stop="pageEdit(row)" title="编辑"><a-icon type="edit" /></a>
<a @click.stop="pageDelete(row)" title="删除"><a-icon type="delete" /></a>
</div>
</template>
<template #image="{ row }">
<img v-if="row.image" :src="row.image" style="width: 100px;">
<span v-else></span>
</template>
</vxe-grid>
<a-row style="background: white;">
<a-col style="margin-bottom: 8px;" v-for="item in [1,2,3,4,4,4,4,4]" :key="item" :span="6">
<a-card hoverable style="width: 300px">
<img
slot="cover"
alt="example"
src="https://gw.alipayobjects.com/zos/rmsportal/JiqGstEfoWAOHiTxclqi.png"
/>
<template slot="actions" class="ant-card-actions">
<a-icon key="setting" type="setting" />
<a-icon key="edit" type="edit" />
<a-icon key="ellipsis" type="ellipsis" />
</template>
<a-card-meta title="Card title" description="This is the description">
</a-card-meta>
</a-card>
</a-col>
</a-row>
<a-pagination v-model="currentPageIndex" :total="50" show-less-items />
</div>
</div>
</template>
<script>
import BASE_URL from '@/services/Middle/bathroom/BathroomScheme/api.js';
const settings = require('../../basic/settings.js');
export default {
name: 'BathroomSchemeList',
i18n: require('./i18n'), //
props: {
pageMode: {
type: String,
default: "edit"
}
},
data() {
const listFieldName = 'BathroomScheme';
//
var pageData = { //
keyName: 'id', //
currentPageIndex:1,
//
actions: { // Api
// =============================== Start ===============================
BathroomSchemeList: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/list`, //
BathroomSchemeDetail: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/detail`, //
BathroomSchemeCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/create`, //
BathroomSchemeUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/update`, //
BathroomSchemeDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/detele`, //
BathroomSchemeBatchDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/batchDelete`, //
BathroomSchemeBatchUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/batchUpdate`, //
BathroomSchemeBatchCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/batchCreate`, //
BathroomSchemeExportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/export/excel`, // EXCEL
BathroomSchemeImportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/import/excel`, // EXCEL
BathroomSchemeFittingsList: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/fittings/list`, //
BathroomSchemeFittingsDetail: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/fittings/detail`, //
BathroomSchemeFittingsCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/fittings/create`, //
BathroomSchemeFittingsUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/fittings/update`, //
BathroomSchemeFittingsDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/fittings/detele`, //
BathroomSchemeFittingsBatchDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/fittings/batchDelete`, //
BathroomSchemeFittingsBatchUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/fittings/batchUpdate`, //
BathroomSchemeFittingsBatchCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/fittings/batchCreate`, //
BathroomSchemeFittingsExportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/fittings/export/excel`, // EXCEL
BathroomSchemeFittingsImportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/fittings/import/excel`, // EXCEL
BathroomSchemePartsList: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/parts/list`, //
BathroomSchemePartsDetail: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/parts/detail`, //
BathroomSchemePartsCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/parts/create`, //
BathroomSchemePartsUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/parts/update`, //
BathroomSchemePartsDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/parts/detele`, //
BathroomSchemePartsBatchDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/parts/batchDelete`, //
BathroomSchemePartsBatchUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/parts/batchUpdate`, //
BathroomSchemePartsBatchCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/parts/batchCreate`, //
BathroomSchemePartsExportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/parts/export/excel`, // EXCEL
BathroomSchemePartsImportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/parts/import/excel`, // EXCEL
BathroomSchemeMaterialList: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/material/list`, //
BathroomSchemeMaterialDetail: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/material/detail`, //
BathroomSchemeMaterialCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/material/create`, //
BathroomSchemeMaterialUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/material/update`, //
BathroomSchemeMaterialDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/material/detele`, //
BathroomSchemeMaterialBatchDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/material/batchDelete`, //
BathroomSchemeMaterialBatchUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/material/batchUpdate`, //
BathroomSchemeMaterialBatchCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/material/batchCreate`, //
BathroomSchemeMaterialExportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/material/export/excel`, // EXCEL
BathroomSchemeMaterialImportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/material/import/excel`, // EXCEL
BathroomSchemeLaborList: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/labor/list`, //
BathroomSchemeLaborDetail: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/labor/detail`, //
BathroomSchemeLaborCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/labor/create`, //
BathroomSchemeLaborUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/labor/update`, //
BathroomSchemeLaborDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/labor/detele`, //
BathroomSchemeLaborBatchDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/labor/batchDelete`, //
BathroomSchemeLaborBatchUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/labor/batchUpdate`, //
BathroomSchemeLaborBatchCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/labor/batchCreate`, //
BathroomSchemeLaborExportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/labor/export/excel`, // EXCEL
BathroomSchemeLaborImportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/labor/import/excel`, // EXCEL
BathroomSchemeProcessList: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/process/list`, //
BathroomSchemeProcessDetail: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/process/detail`, //
BathroomSchemeProcessCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/process/create`, //
BathroomSchemeProcessUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/process/update`, //
BathroomSchemeProcessDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/process/detele`, //
BathroomSchemeProcessBatchDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/process/batchDelete`, //
BathroomSchemeProcessBatchUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/process/batchUpdate`, //
BathroomSchemeProcessBatchCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/process/batchCreate`, //
BathroomSchemeProcessExportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/process/export/excel`, // EXCEL
BathroomSchemeProcessImportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/process/import/excel`, // EXCEL
BathroomSchemePackagingList: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/packaging/list`, //
BathroomSchemePackagingDetail: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/packaging/detail`, //
BathroomSchemePackagingCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/packaging/create`, //
BathroomSchemePackagingUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/packaging/update`, //
BathroomSchemePackagingDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/packaging/detele`, //
BathroomSchemePackagingBatchDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/packaging/batchDelete`, //
BathroomSchemePackagingBatchUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/packaging/batchUpdate`, //
BathroomSchemePackagingBatchCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/packaging/batchCreate`, //
BathroomSchemePackagingExportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/packaging/export/excel`, // EXCEL
BathroomSchemePackagingImportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/packaging/import/excel`, // EXCEL
BathroomSchemeOutsourcingList: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/outsourcing/list`, //
BathroomSchemeOutsourcingDetail: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/outsourcing/detail`, //
BathroomSchemeOutsourcingCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/outsourcing/create`, //
BathroomSchemeOutsourcingUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/outsourcing/update`, //
BathroomSchemeOutsourcingDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/outsourcing/detele`, //
BathroomSchemeOutsourcingBatchDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/outsourcing/batchDelete`, //
BathroomSchemeOutsourcingBatchUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/outsourcing/batchUpdate`, //
BathroomSchemeOutsourcingBatchCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/outsourcing/batchCreate`, //
BathroomSchemeOutsourcingExportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/outsourcing/export/excel`, // EXCEL
BathroomSchemeOutsourcingImportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/outsourcing/import/excel`, // EXCEL
BathroomSchemePaintList: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/paint/list`, //
BathroomSchemePaintDetail: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/paint/detail`, //
BathroomSchemePaintCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/paint/create`, //
BathroomSchemePaintUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/paint/update`, //
BathroomSchemePaintDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/paint/detele`, //
BathroomSchemePaintBatchDelete: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/paint/batchDelete`, //
BathroomSchemePaintBatchUpdate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/paint/batchUpdate`, //
BathroomSchemePaintBatchCreate: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/paint/batchCreate`, //
BathroomSchemePaintExportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/paint/export/excel`, // EXCEL
BathroomSchemePaintImportExcel: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/paint/import/excel`, // EXCEL
// =============================== End ===============================
},
start_time: 0, //
end_time: 0, //
//
searchFormData: {
title: '',
desc: '',
},
//
searchRules: [
{ key: "title", mode: "like" },
{ key: "desc", mode: "like" }
],
//
searchFormItems: [ //
{ field: 'title', title: '标题', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入标题' } } },
{ field: 'desc', title: '描述', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入描述' } } },
{ span: 8, slots: { default: 'date' } }, //
{
align: 'right', span: 4, itemRender: { //
name: '$buttons', children: [{ props: { type: 'submit', content: '搜索', status: 'primary' } }, //
{ props: { type: 'reset', content: '重置' } }]
}
}
],
//
gridOptions: { //
height: '100%', // 100%
stripe: true, //
id: 'datagrid_1', //
//
proxyConfig: { //
sort: true, // query
filter: true, // query
props: {
result: listFieldName, //
total: 'total' //
},
// Promise
ajax: {
// queryreload
query: (options) => { // options
const { page, sorts } = options; //
var params = {}; //
params.page = page.currentPage; //
params.limit = page.pageSize; //
params.order_bys = []; //
params.search_rules = this.getSearchParms(); //
if (sorts) { //
sorts.forEach((v) => { //
params.order_bys.push({ //
column: v.property, //
order: v.order //
})
});
}
return this.loadData({ params }); //
}
}
},
//
columns: [
{ type: 'checkbox', width: 50 }, //
{ title: '操作', slots: { default: 'op' }, width: 120 },
{ type: 'seq', width: 30 }, //
// =============================== Start ===============================
{ field: 'type', sortable: true, title: '类型', params:settings.options_schemeType, formatter: 'formatEnum', width: 250 }, // :1.,2.
{ field: 'name', sortable: true, title: '设计方案名称', width: 250 }, //
//{ field: 'code', sortable: true, title: '', width: 250 }, //
{ field: 'model', sortable: true, title: '型号', width: 250 }, //
//{ field: 'description', sortable: true, title: '', width: 250 }, //
{ field: 'image', sortable: true, title: '主图', width: 250 , slots: { default: 'image' } }, //
{ field: 'create_time', formatter: 'formatDate', width: 160, sortable: true, title: '创建时间', showHeaderOverflow: true }, //
{ field: 'update_time', formatter: 'formatDate', width: 160, sortable: true, title: '更新时间', showHeaderOverflow: true }, //
// =============================== Start ===============================
]
}
};
pageData.actions.getList = pageData.actions.BathroomSchemeList;
pageData.actions.delete = pageData.actions.BathroomSchemeBatchDelete;
pageData.gridOptions = Object.assign({}, this.$mk.config.defaults.gridOptions, pageData.gridOptions); //
return pageData; //
},
//
computed: {
//
desc() {
return this.$t('pageDesc')
}
},
//
created() {
this.$nextTick(() => { // DOM
//
this.$refs.xGrid.connect(this.$refs.xToolbar) //
});
},
//
onLoad() {
},
//
methods: {
// =============================== status Start ===============================
// =============================== status End ===============================
//
onDateChange(date) { //
if (date && date.length) { //
this.start_time = parseInt(date[0]._d.getTime() / 1000); //
this.end_time = parseInt(date[1]._d.getTime() / 1000); //
} else { //
this.start_time = 0; //
this.end_time = 0; //
}
},
//
getSearchParms() { //
var rules = []; //
let findMode = k => { //
for (let i in this.searchRules) { //
if (this.searchRules[i].key == k) return this.searchRules[i].mode; //
}
return "equal"; //
};
for (let key in this.searchFormData) { //
let value = this.searchFormData[key]; //
if (value) { //
let mode = findMode(key); //
if (mode == "like") { //
value = "%" + value + "%"; // %
}
rules.push({ //
column: key, //
mode: mode, //
value: value //
});
}
}
return rules; //
},
//
getSelectdRow() { //
let row = this.$refs.xGrid.getCurrentRecord(); //
if (!row) { //
let rows = this.$refs.xGrid.getCheckboxRecords(); //
if (rows && rows.length) { row = rows[0]; } //
}
return row; //
},
//
loadData({ params }) {
params.start_time = this.start_time; //
params.end_time = this.end_time; //
this.$mk.getPagedData({ url: this.actions.getList, data: params }).then(r=>{
console.log(r);
})
},
// add / log / setting
toolbarClick(e) {
if (e.name == "add") { //
this.$openPage("/BathroomScheme/BathroomSchemeAdd"); //
}
},
//
pageEdit(row) {
if (!row) { //
this.$mk.msg("请选择行"); //
return; //
}
this.$openPage("/BathroomScheme/BathroomSchemeUpdate/" + row[this.keyName]); //
},
//
pageDelete(row) {
let rows = row ? [row] : this.$refs.xGrid.getCheckboxRecords(); //
let ids = []; // id
rows.forEach((row) => { //
ids.push(row[this.keyName]); // idid
});
if (!ids.length) { //
this.$mk.error("请选择行"); //
return;
}
this.$mk.confirm('您确定要删除吗?').then(type => { //
if (type == 'confirm') { //
this.$mk.post({
url: this.actions.delete, //
loading: "删除中...", //
data: {
ids: ids // id
},
useBigInt : true
}).then(() => { //
this.$mk.success("删除成功"); //
this.onSearch(); //
}).catch((a) => { //
this.$mk.error(a.data.msg); //
});
}
});
},
//
onSearch() {
this.$refs.xGrid.commitProxy('query') //
},
},
//
watch: {
}
};
</script>
<style scoped lang="less">
.page-body {
padding: 30px;
background: @base-bg-color;
}
.gridPanel {
height: calc(100vh - 400px);
}
</style>
<style>
.oplinks svg {
width: 22px;
height: 22px;
margin: 0 5px 0 0;
}
</style>

View File

@ -23,27 +23,26 @@
<vxe-toolbar ref="xToolbar" custom>
<template #buttons>
<a-button type="primary" icon="delete" @click="pageDelete()">批量删除</a-button>
</template>
</vxe-toolbar>
<!-- 表格区 -->
<div class="gridPanel">
<vxe-grid ref='xGrid' v-bind="gridOptions">
<div class="cardPanel">
<!-- =============================== 表格列 自动生成 Start =============================== -->
<!-- =============================== 表格列 自动生成 End =============================== -->
<template #op="{ row }">
<div class="oplinks">
<a @click.stop="pageEdit(row)" title="编辑"><a-icon type="edit" /></a>
<a @click.stop="pageDelete(row)" title="删除"><a-icon type="delete" /></a>
</div>
<a-row style="background: white;">
<a-col style="margin-bottom: 12px;margin-right: 12px;" v-for="(item,index) in listData" :key="index" :span="5">
<a-card hoverable>
<img class="scheme-img" slot="cover" alt="example" :src="item.image || defaultImage" />
<template slot="actions" class="ant-card-actions">
<a-icon key="edit" type="edit" @click="pageEdit(item)" />
<a-icon key="delete" type="delete" @click="pageDelete(item)" />
</template>
<a-card-meta :title="item.name" :description="item.description">
</a-card-meta>
</a-card>
</a-col>
</a-row>
<a-pagination :show-total="total => `${total} 条记录`" v-model="currentPageIndex" :pageSize="pageSize" :total="listTotal" @change="pageChange" show-less-items />
</vxe-grid>
</div>
@ -52,7 +51,6 @@
<script>
import BASE_URL from '@/services/Middle/bathroom/BathroomScheme/api.js';
const settings = require('../../basic/settings.js');
export default {
name: 'BathroomSchemeList',
@ -65,12 +63,15 @@ export default {
},
data() {
const listFieldName = 'BathroomScheme';
//
var pageData = { //
keyName: 'id', //
defaultImage:"http://zhengjiguangdong.oss-cn-beijing.aliyuncs.com/2023/16811166643739833.png",
currentPageIndex: 1,
pageSize: 8,
listData:[],
listTotal:0,
//
actions: { // Api
@ -180,13 +181,12 @@ export default {
},
//
searchRules: [
{ key: "title", mode: "like" },
{ key: "name", mode: "like" },
{ key: "desc", mode: "like" }
],
//
searchFormItems: [ //
{ field: 'title', title: '标题', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入标题' } } },
{ field: 'desc', title: '描述', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入描述' } } },
{ field: 'name', title: '设计方案名', span: 5, itemRender: { name: '$input', props: { placeholder: '请输入设计方案名' } } },
{ span: 8, slots: { default: 'date' } }, //
{
align: 'right', span: 4, itemRender: { //
@ -197,73 +197,10 @@ export default {
],
//
gridOptions: { //
height: '100%', // 100%
stripe: true, //
id: 'datagrid_1', //
//
proxyConfig: { //
sort: true, // query
filter: true, // query
props: {
result: listFieldName, //
total: 'total' //
},
// Promise
ajax: {
// queryreload
query: (options) => { // options
const { page, sorts } = options; //
var params = {}; //
params.page = page.currentPage; //
params.limit = page.pageSize; //
params.order_bys = []; //
params.search_rules = this.getSearchParms(); //
if (sorts) { //
sorts.forEach((v) => { //
params.order_bys.push({ //
column: v.property, //
order: v.order //
})
});
}
return this.loadData({ params }); //
}
}
},
//
columns: [
{ type: 'checkbox', width: 50 }, //
{ title: '操作', slots: { default: 'op' }, width: 120 },
{ type: 'seq', width: 30 }, //
// =============================== Start ===============================
{ field: 'type', sortable: true, title: '类型', params:settings.options_schemeType, formatter: 'formatEnum', width: 250 }, // :1.,2.
{ field: 'name', sortable: true, title: '设计方案名称', width: 250 }, //
//{ field: 'code', sortable: true, title: '', width: 250 }, //
{ field: 'model', sortable: true, title: '型号', width: 250 }, //
//{ field: 'description', sortable: true, title: '', width: 250 }, //
//{ field: 'image', sortable: true, title: '', width: 250 , formatter:"formatImage" }, //
{ field: 'create_time', formatter: 'formatDate', width: 160, sortable: true, title: '创建时间', showHeaderOverflow: true }, //
{ field: 'update_time', formatter: 'formatDate', width: 160, sortable: true, title: '更新时间', showHeaderOverflow: true }, //
// =============================== Start ===============================
]
}
};
pageData.actions.getList = pageData.actions.BathroomSchemeList;
pageData.actions.delete = pageData.actions.BathroomSchemeBatchDelete;
pageData.gridOptions = Object.assign({}, this.$mk.config.defaults.gridOptions, pageData.gridOptions); //
return pageData; //
},
@ -278,22 +215,20 @@ export default {
//
created() {
this.$nextTick(() => { // DOM
//
this.$refs.xGrid.connect(this.$refs.xToolbar) //
});
this.loadData();
},
//
onLoad() {
},
//
methods: {
// =============================== status Start ===============================
// =============================== status End ===============================
pageChange(){
this.loadData();
},
//
onDateChange(date) { //
@ -340,13 +275,29 @@ export default {
}
return row; //
},
//
loadData({ params }) {
loadData() {
var params = {}; //
params.page = this.currentPageIndex;
params.limit = this.pageSize; //
params.order_bys = []; //
params.search_rules = this.getSearchParms(); //
params.start_time = this.start_time; //
params.end_time = this.end_time; //
return this.$mk.getPagedData({ url: this.actions.getList, data: params }); //
this.$mk.getPagedData({ url: this.actions.getList, data: params }).then(r => {
this.listData = r.BathroomScheme;
this.listTotal = r.total;
})
},
// add / log / setting
toolbarClick(e) {
if (e.name == "add") { //
@ -365,7 +316,7 @@ export default {
//
pageDelete(row) {
let rows = row ? [row] : this.$refs.xGrid.getCheckboxRecords(); //
let rows =[row]; //
let ids = []; // id
rows.forEach((row) => { //
ids.push(row[this.keyName]); // idid
@ -397,7 +348,7 @@ export default {
//
onSearch() {
this.$refs.xGrid.commitProxy('query') //
this.loadData();
},
@ -418,12 +369,14 @@ export default {
.gridPanel {
height: calc(100vh - 400px);
}
</style>
<style>
.oplinks svg {
width: 22px;
height: 22px;
margin: 0 5px 0 0;
}
.scheme-img{
width:100%;height:300px;
}
</style>

View File

@ -1,4 +1,7 @@
var config = {
schemeType_main : "1",
options_schemeType: [
{ label: '主柜', value: '1' }, { label: '抽屉', value: '2' }
],
@ -19,6 +22,19 @@ var config = {
},
"抽屉长度": ({ data }) => {
return data.long;
},
"抽屉宽度": ({ data }) => {
return data.width;
},
"抽屉高度": ({ data }) => {
return data.height;
},
"部件的数量": ({ row }) => {
return row.quantity;
},
@ -71,6 +87,14 @@ var config = {
return data.paintLabor_total_amount;
},
"免漆抽屉总费用": ({ data }) => {
return data.drawer_total_amount;
},
"油漆抽屉总费用": ({ data }) => {
return data.drawer_total_paint_amount;
},
"包装的长": ({ row }) => {
return row.long;
},

View File

@ -23,6 +23,9 @@ const BaseAdminRouterMap = {
name: '用户管理',
icon: 'idcard',
path: '/BaseAdmin/BaseAdminList',
meta: {
invisible: true
},
component: () => import('@/pages/Middle/Base/BaseAdmin/BaseAdmin/list'),
authority: {

View File

@ -17,7 +17,7 @@ const routerMap = {
routerMap[FunName]= {
name: FunTitle,
icon: 'idcard',
component: view.page,
component: view.blank,
meta: {
},
authority: {

View File

@ -17,7 +17,7 @@ const routerMap = {
routerMap[FunName]= {
name: FunTitle,
icon: 'idcard',
component: view.page,
component: view.blank,
meta: {
},
authority: {

View File

@ -17,7 +17,7 @@ const routerMap = {
routerMap[FunName]= {
name: FunTitle,
icon: 'idcard',
component: view.page,
component: view.blank,
meta: {
},
authority: {

View File

@ -16,7 +16,7 @@ const routerMap = {
routerMap[FunName]= {
name: FunTitle,
icon: 'idcard',
component: view.page,
component: view.blank,
meta: {
},
authority: {

View File

@ -168,6 +168,7 @@ function loadRoutes(routesConfig) { // 加载路由
formatRoutes(finalRoutes)
console.log('最终路由表finalRoutes:', finalRoutes) // 最终路由表
router.options = { ...router.options, routes: finalRoutes } // 路由配置
console.log(router.options)
router.matcher = new Router({ ...router.options, routes: [] }).matcher // 重置路由
router.addRoutes(finalRoutes) // 添加路由

View File

@ -23,14 +23,14 @@ const assetsCDN = { // 静态资源CDN地址
css: [
],
js: [
'//cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js',
'//cdn.jsdelivr.net/npm/vue-router@3.3.4/dist/vue-router.min.js',
'//cdn.jsdelivr.net/npm/vuex@3.4.0/dist/vuex.min.js',
'//cdn.jsdelivr.net/npm/axios@0.19.2/dist/axios.min.js',
'//cdn.jsdelivr.net/npm/nprogress@0.2.0/nprogress.min.js',
'//cdn.jsdelivr.net/npm/clipboard@2.0.6/dist/clipboard.min.js',
'//cdn.jsdelivr.net/npm/@antv/data-set@0.11.4/build/data-set.min.js',
'//cdn.jsdelivr.net/npm/js-cookie@2.2.1/src/js.cookie.min.js'
'/js/vue.min.js',
'/js/vue-router.min.js',
'/js/vuex.min.js',
'/js/axios.min.js',
'/js/nprogress.min.js',
'/js/clipboard.min.js',
'/js/data-set.min.js',
'/js/js.cookie.min.js'
]
}

View File

@ -5542,6 +5542,11 @@
"resolved" "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz"
"version" "1.2.0"
"hevue-img-preview@^6.1.0":
"integrity" "sha512-2KrbKUUGUbwYR6MuKVeBghPIywTBYFr0XMoJADoZ33cQHDT0x1A7B4g8EwL1zXK6eyk1low5kefmUw2q+yIfvw=="
"resolved" "https://registry.npmmirror.com/hevue-img-preview/-/hevue-img-preview-6.1.0.tgz"
"version" "6.1.0"
"hex-color-regex@^1.1.0":
"integrity" "sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4="
"resolved" "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz"