Commit 4d0d9ec2 authored by 罗超's avatar 罗超

临时提交

parent 3e0854f4
......@@ -15,6 +15,18 @@
"@hcaptcha/vue3-hcaptcha": "^1.3.0",
"@icon-park/vue-next": "^1.4.2",
"@mapbox/mapbox-gl-language": "^1.0.1",
"@tiptap/extension-blockquote": "^2.8.0",
"@tiptap/extension-bubble-menu": "^2.9.1",
"@tiptap/extension-heading": "^2.8.0",
"@tiptap/extension-highlight": "^2.8.0",
"@tiptap/extension-horizontal-rule": "^2.8.0",
"@tiptap/extension-link": "^2.9.1",
"@tiptap/extension-text-align": "^2.8.0",
"@tiptap/extension-typography": "^2.7.4",
"@tiptap/extension-underline": "^2.8.0",
"@tiptap/pm": "^2.7.4",
"@tiptap/starter-kit": "^2.7.4",
"@tiptap/vue-3": "^2.7.4",
"@types/ali-oss": "^6.16.11",
"@types/opentype.js": "^1.3.8",
"@types/psd": "^3.4.3",
......@@ -64,7 +76,7 @@
"svg-pathdata": "^6.0.3",
"tinycolor2": "^1.6.0",
"tippy.js": "^6.3.7",
"vue": "^3.4.21",
"vue": "^3.5.9",
"vue-konva": "^3.0.2",
"vue-picture-cropper": "^0.7.0",
"vue-router": "^4.0.13",
......
......@@ -75,6 +75,21 @@ page {
line-height: 1.375rem;
letter-spacing: 0.00714em;
}
h3{
font-size: 18px !important;
}
hr{
border: none;
border-top: 1px solid #e0e0e0 !important;
}
blockquote {
border-left: 5px solid #e6e7e8 !important;
padding-left: 30px!important;
margin: 16px 0!important;
font-size: 14px !important;
color: #999 !important;
font-style: normal !important;
}
.text-success{
color: #20af6e !important;
}
......@@ -202,6 +217,38 @@ page {
.borders-light{
border:1px solid #F1f2f4;
}
.card-h2{
margin: 0;
color: #000E1A;
font-weight: 700;
font-size: 24px;
line-height: 32px;
}
.draw-close{
position: absolute;
width: 54px;
height: 54px;
line-height: 54px;
text-align: center;
cursor: pointer;
border-top-left-radius: 8px;
border-bottom-left-radius: 8px;
background-color: var(--el-color-primary);
left: -54px;
top: 100px;
font-size: 30px;
color: #f1f2f4;
}
.customer-drawer{
overflow: unset !important;
}
.customer-drawer .el-drawer__header{
margin: 0;
padding: 20px;
}
.customer-drawer .el-drawer__body{
padding: 0px;
}
.transparent-borders{
border:1px solid transparent;
}
......@@ -313,6 +360,10 @@ page {
.q-pa-xl{
padding: 30px;
}
.q-pa-none{
padding: 0px !important;
}
.display-none{
display: none;
}
......@@ -371,6 +422,9 @@ page {
.q-ma-no{
padding:0 !important
}
.q-ma-none{
margin: 0 !important;
}
.q-ma-md{
margin:10px
}
......
......@@ -22,6 +22,7 @@ import router from './router'
import ElementPlus from 'element-plus'
import zhCn from 'element-plus/es/locale/lang/zh-cn'
const app = createApp(App)
app.use(router)
const pinia = createPinia()
......
[{"id":"import-slide-47","pageType":1,"elements":[{"id":"img_1973","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171025246.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":-45,"width":1344,"top":-36,"height":1790,"rotate":0,"lock":false,"layerName":"editor_1","groupId":""},{"id":"img_1974","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171025615.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":57,"width":364,"top":1436,"height":185,"rotate":0,"lock":false,"layerName":"editor_2","groupId":""},{"id":"img_1976","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171025923.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":827,"width":366,"top":1435,"height":187,"rotate":0,"lock":false,"layerName":"editor_4","groupId":""},{"type":"image","id":"vmQd0-iHiK","src":"https://im.oytour.com/pptist/desgin/1709032073245.png","width":1293.5032729111272,"height":1651.0132052851748,"left":-5.75163645556354,"top":-9.337076739833236,"fixedRatio":true,"rotate":0},{"type":"image","id":"W9PZ6KVTEA","src":"https://imgfile.oytour.com/Upload/DMC/KaTTQEQEGkT3S55RTFT4xcBKJ7PANHCw.png","width":365.97321401869647,"height":217.78774085775188,"left":62.96685383699166,"top":1419.606129571124,"fixedRatio":true,"rotate":0},{"type":"image","id":"HfWTgA5iaQ","src":"https://imgfile.oytour.com/Upload/DMC/20190504104619430.jpg","width":370.2733197209461,"height":231.9317452214849,"left":835.8589926833419,"top":1416.6123589132776,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[0,8.256880733944955],[100,100]]}},{"type":"image","id":"yiPn-S6HG6","src":"https://imgfile.oytour.com/Upload/DMC/M3szSQeJ4Xwm6Mfh44CiihjmFDr6ACPd.jpg","width":389.7179853666837,"height":209.09373263002672,"left":446.14100731665815,"top":1423.9531336849866,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[0,19.354838709677416],[100,100]]}},{"id":"img_1977","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171026002.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":-5.499999999999956,"width":1265,"top":1166.1491577335375,"height":587.8508422664625,"rotate":0,"lock":false,"layerName":"bg","groupId":"","flipH":false,"flipV":false},{"id":"img_1982","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171026166.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":311,"width":640,"top":659,"height":5,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"img_1983","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171026189.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":311,"width":640,"top":720,"height":5,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"img_1984","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171026224.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":436,"width":410,"top":1659,"height":60,"rotate":0,"lock":true,"layerName":"logo","groupId":""},{"id":"img_1985","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171026251.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":327.41077441077437,"width":213.50000000000003,"top":659,"height":61.00000000000001,"rotate":0,"lock":false,"layerName":"bg","groupId":""},{"id":"text_1988","type":"text","left":170,"width":227,"top":435,"height":198,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 178px;\">京</span></p>","defaultFontName":"SourceHanSerifCN-Regular,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(55,3,3,1.00)","fill":"","lineHeight":1,"wordSpace":9,"vertical":false,"contentStr":"心","layerName":"心","groupId":"","clip":false,"stroke":""},{"id":"text_1989","type":"text","left":589,"width":213.99999999999994,"top":450,"height":198,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 178px;\">双</span></p>","defaultFontName":"SourceHanSerifCN-Regular,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(228,56,56,1.00)","fill":"","lineHeight":1,"wordSpace":9,"vertical":false,"contentStr":"新","layerName":"新","groupId":"","clip":false,"stroke":""},{"id":"text_1992","type":"text","left":768,"width":186.6672504708098,"top":485.505,"height":164.984375,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 144.01px;\">宿</span></p>","defaultFontName":"SourceHanSerifCN-Regular,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(55,3,3,1.00)","fill":"","lineHeight":1.0067803575097596,"wordSpace":7.3004999999999995,"vertical":false,"contentStr":"西","layerName":"西","groupId":"","clip":false,"stroke":""},{"id":"text_1994","type":"text","left":343,"width":278.5216572504708,"top":367,"height":263,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 243px;\">都</span></p>","defaultFontName":"SourceHanSerifCN-Bold,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(55,3,3,1.00)","fill":"","lineHeight":1,"wordSpace":12.25,"vertical":false,"contentStr":"悦","layerName":"悦","groupId":"","clip":false,"stroke":""},{"id":"text_1995","type":"text","left":155.04410413476265,"width":879.5912880721456,"top":737.0058873574953,"height":70.390625,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 42px;\">双温泉+双京都+独家安排:京都古街夜游</span></p>","defaultFontName":"SourceHanSerifCN-SemiBold,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(255,255,255,1.00)","fill":"","lineHeight":1.2,"wordSpace":6,"vertical":false,"contentStr":"基督城·后镇·但尼丁·罗托鲁阿·奥克兰","layerName":"基督城·后镇·但尼丁·罗托鲁阿·奥克兰","groupId":"","clip":false,"stroke":""},{"id":"text_1998","type":"text","left":303.1163427865363,"width":754.618487909397,"top":795.8125,"height":63.1875,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 24px;\">绝景氛围 (百万湛藍粉蝶花+梦幻海洋紫藤花+富士山芝樱庆典)</span></p>","defaultFontName":"SourceHanSerifCN-ExtraLight,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(255,255,255,1.00)","fill":"","lineHeight":1.8,"wordSpace":2,"vertical":false,"contentStr":"Professional small package group to enjoy the vacation time","layerName":"Professional small package group to enjoy the vacation time","groupId":"","clip":false,"stroke":""},{"type":"text","id":"ucjUS7lhJA","left":385.27122742577285,"top":648.0078125,"width":155.63954698500152,"height":83,"content":"<p style=\"\"><span style=\"font-size: 42px;\"><span style=\"color: #ffffff;\">7日游</span></span></p>","rotate":0,"defaultFontName":"Microsoft Yahei","defaultColor":"#333","vertical":false}],"background":{"type":"solid","color":"#ffffff"},"isTripItems":false},{"id":"import-slide-28","pageType":1,"elements":[{"id":"img_1927","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171026821.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":810,"width":384,"top":116,"height":316,"rotate":0,"lock":false,"layerName":"editor_2","groupId":""},{"id":"img_1928","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171026881.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":57,"width":385,"top":118,"height":310,"rotate":0,"lock":false,"layerName":"editor_1","groupId":""},{"id":"img_1929","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171026948.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":433,"width":381,"top":420,"height":310,"rotate":0,"lock":false,"layerName":"editor_3","groupId":""},{"id":"img_1930","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171026994.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":93,"width":527,"top":1056,"height":540,"rotate":0,"lock":false,"layerName":"editor_4","groupId":""},{"type":"image","id":"p8kUvw0ImC","src":"https://imgfile.oytour.com/Upload/DMC/202211220629368950000000072.jpg","width":562.5522538109676,"height":315.2466736331992,"left":352.9307696462404,"top":420,"fixedRatio":true,"rotate":0},{"id":"img_1931","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027065.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":628,"width":530,"top":1055,"height":540,"rotate":0,"lock":false,"layerName":"editor_5","groupId":""},{"type":"image","id":"ic-DQtai00","src":"https://imgfile.oytour.com/Upload/DMC/zPSFeKDhBFSABaDNknzdGwRr6DSSjahk.jpg","width":1075,"height":640.6565656565656,"left":82.5,"top":988.3418506274869,"fixedRatio":true,"rotate":0},{"type":"image","id":"Hbqb0hwyuQ","src":"https://imgfile.oytour.com/Upload/DMC/S7mXzaT6AweBhSQPx2dD4NYKdTMZcX8G.png","width":413.7872340425531,"height":312,"left":815.473951637588,"top":116,"fixedRatio":true,"rotate":0},{"type":"image","id":"WA6HEzvyXC","src":"https://imgfile.oytour.com/Upload/DMC/20200225044709684.jpg","width":455.77745241581255,"height":304,"left":47.8579795021962,"top":116,"fixedRatio":true,"rotate":0},{"id":"img_1932","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027146.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":-78,"width":1344,"top":-18,"height":1790,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"img_1933","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027269.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":634,"width":534,"top":1059,"height":521,"rotate":0,"lock":true,"layerName":"editor_5_before_1","groupId":""},{"id":"img_1934","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027286.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":82,"width":535,"top":1059,"height":521,"rotate":0,"lock":true,"layerName":"editor_4_before_1","groupId":""},{"id":"img_1935","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027309.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":433,"width":381,"top":417,"height":313,"rotate":0,"lock":true,"layerName":"editor_3_before_1","groupId":""},{"id":"img_1936","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027336.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":807,"width":390,"top":109,"height":317,"rotate":0,"lock":true,"layerName":"editor_2_before_1","groupId":""},{"id":"img_1937","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027363.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":54,"width":388,"top":113,"height":323,"rotate":0,"lock":true,"layerName":"editor_1_before_1","groupId":""},{"id":"img_1938","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027381.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":442,"width":410,"top":1655,"height":60,"rotate":0,"lock":true,"layerName":"logo","groupId":""},{"id":"img_1939","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027414.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":600,"width":51,"top":176,"height":51,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"img_1940","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027437.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":62,"width":1125,"top":748,"height":4,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"img_1941","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027456.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":607,"width":36,"top":182,"height":33,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"img_1942","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027476.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":218,"width":51,"top":471,"height":51,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"img_1943","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027498.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":225,"width":36,"top":477,"height":33,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"img_1944","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027520.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":980,"width":51,"top":471,"height":51,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"img_1945","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027538.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":987,"width":36,"top":477,"height":33,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"img_1946","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027560.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":275,"width":713,"top":926,"height":5,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"text_1947","type":"text","left":230,"width":870,"top":794,"height":89.59375,"rotate":0,"opacity":1,"content":"<p><span style=\"text-align:left; font-size:58px; font-weight:normal;text-decoration:none ;\">温馨酒店·奢华与舒适并存</span></p>","defaultFontName":"SourceHanSerifCN-Heavy,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(77,58,65,1.00)","fill":"","lineHeight":1.2,"wordSpace":12,"vertical":false,"contentStr":"温馨酒店·奢华与舒适并存","layerName":"温馨酒店·奢华与舒适并存","groupId":"","clip":false,"stroke":""},{"id":"text_1949","type":"text","left":510.2068965517242,"width":247.99999999999997,"top":283.8490358126722,"height":119.140625,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 22px;\">京都二条Urban高级酒店或京都地区酒店或</span><span style=\"font-size: 20px;\">同级</span></p>","defaultFontName":"SourceHanSerifCN-Regular,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(58,20,40,1.00)","fill":"","lineHeight":1.5,"wordSpace":1.8,"vertical":false,"contentStr":"四星酒店Copthorne或 HolidayInn 同级","layerName":"四星酒店Copthorne或 HolidayInn 同级","groupId":"","clip":false,"stroke":""},{"id":"text_1951","type":"text","left":886,"width":289.9438078784766,"top":522,"height":53.046875,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 22px;\">成田希尔顿/日航酒店</span></p>","defaultFontName":"SourceHanSerifCN-Heavy,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(77,58,65,1.00)","fill":"","lineHeight":1.5,"wordSpace":4.800000000000001,"vertical":false,"contentStr":"享受五星特有的集\r“宿、食、行、餐”","layerName":"享受五星特有的集 “宿、食、行、餐”","groupId":"","clip":false,"stroke":""},{"id":"text_1952","type":"text","left":140,"width":232,"top":524,"height":53.046875,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 22px;\">富士山温泉酒店</span></p>","defaultFontName":"SourceHanSerifCN-Heavy,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(58,20,40,1.00)","fill":"","lineHeight":1.5,"wordSpace":2.4000000000000004,"vertical":false,"contentStr":"让您尽享温馨舒适\r享安全的住宿环境","layerName":"让您尽享温馨舒适 享安全的住宿环境","groupId":"","clip":false,"stroke":""},{"id":"text_1953","type":"text","left":118.34858757062148,"width":262.30282485875705,"top":577.6233368165996,"height":110,"rotate":0,"opacity":1,"content":"<p style=\"text-align: center;\"><span style=\"font-size: 20px;\">富士山石和本栖酒店或富士山春日局温泉酒店或富士山地区温泉酒店或同级</span></p>","defaultFontName":"SourceHanSerifCN-Regular,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(58,20,40,1.00)","fill":"","lineHeight":1.5,"wordSpace":1.8,"vertical":false,"contentStr":"四星酒店AucklandCity Hotel或同级","layerName":"四星酒店AucklandCity Hotel或同级","groupId":"","clip":false,"stroke":""},{"id":"text_1954","type":"text","left":873,"width":284.9999999999999,"top":595,"height":86.65625,"rotate":0,"opacity":1,"content":"<p style=\"text-align: center;\"><span style=\"font-size: 20px;\">四成田日航酒店或成田希尔顿酒店或成田地区酒店 或同级</span></p>","defaultFontName":"SourceHanSerifCN-Regular,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(77,58,65,1.00)","fill":"","lineHeight":1.6666666666666667,"wordSpace":0,"vertical":false,"contentStr":"四星酒店CopthorneHotel\rRotorua 或同级","layerName":"四星酒店CopthorneHotel Rotorua 或同级","groupId":"","clip":false,"stroke":""},{"id":"text_1955","type":"text","left":369.00000000000006,"width":556,"top":917.5827976737068,"height":64.796875,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 28px;\">日式四-五星酒店+2晚温泉酒店</span></p>","defaultFontName":"SourceHanSerifCN-SemiBold,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(77,58,65,1.00)","fill":"","lineHeight":1.6,"wordSpace":6,"vertical":false,"contentStr":"品质三星&四星酒店,2 晚皇后镇\r尽享温馨舒适安全的住宿环境","layerName":"品质三星&四星酒店,2 晚皇后镇 尽享温馨舒适安全的住宿环境","groupId":"","clip":false,"stroke":""},{"type":"text","id":"6ECy0jAh7S","left":373.9400367309458,"top":867.7337618610346,"width":499.11992653810836,"height":74,"content":"<p style=\"\"><span style=\"font-size: 36px;\"><span style=\"font-family: Microsoft Yahei;\"><span style=\"color: #333;\">印象独家安排:2晚京都酒店</span></span></span></p>","rotate":0,"defaultFontName":"Microsoft Yahei","defaultColor":"#333","vertical":false},{"type":"text","id":"4ptzxJ32Rd","left":551.5819807268084,"top":230.5,"width":206.62491582491583,"height":68.75,"content":"<p style=\"\"><span style=\"font-size: 32px;\"><span style=\"font-family: SourceHanSerifCN-Heavy,AdobeInvisFont,AdobeHeitiStd-Regular;\"><span style=\"color: rgba(58,20,40,1.00);\">京都酒店</span></span></span></p>","rotate":0,"defaultFontName":"Microsoft Yahei","defaultColor":"#333","vertical":false}],"background":{"type":"solid","color":"#ffffff"},"isTripItems":false},{"id":"import-slide-54","pageType":1,"elements":[{"type":"image","id":"FbwaXRkvZX","src":"https://imgfile.oytour.com/Upload/DMC/weHP5T6ky4WQpRsSGEt4znHPkrb72hcz.jpg","width":1250.1566862344735,"height":936.1547728432873,"left":-1.0082380659528498,"top":-33.68511145142074,"fixedRatio":true,"rotate":0},{"id":"img_1896","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171028119.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":-1.0082380659528498,"width":1228.5992738056125,"top":1005.7424979293471,"height":751.1388188410915,"rotate":0,"lock":false,"layerName":"editor_1_before_1","groupId":""},{"id":"img_1892","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027869.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":623,"width":540,"top":775,"height":467,"rotate":0,"lock":false,"layerName":"editor_4","groupId":""},{"id":"img_1893","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171027954.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":82,"width":551,"top":1284,"height":372,"rotate":0,"lock":false,"layerName":"editor_5","groupId":""},{"id":"img_1897","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171028143.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":80,"width":548,"top":1274,"height":330,"rotate":0,"lock":true,"layerName":"editor_5_before_1","groupId":""},{"id":"img_1898","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171028171.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":629,"width":544,"top":774,"height":482,"rotate":0,"lock":true,"layerName":"editor_4_before_1","groupId":""},{"id":"img_1899","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171028200.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":80,"width":548,"top":484,"height":447,"rotate":0,"lock":true,"layerName":"editor_3_before_1","groupId":""},{"type":"shape","id":"PZn11z-BVn","left":-6.500000000000009,"top":161.14999999999995,"width":1259,"height":781.7,"viewBox":[200,200],"path":"M 0 0 L 200 0 L 200 200 L 0 200 Z","fill":"#ffffff","fixedRatio":false,"rotate":0},{"type":"image","id":"yYImMyrNkF","src":"https://imgfile.oytour.com/Upload/DMC/20191108065758663.jpg","width":608.8477271672596,"height":605.7706304322148,"left":14.152272832740415,"top":190.72415731621047,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[0,0],[66.66666666666666,100]]}},{"type":"image","id":"vTNaeI6M2O","src":"https://imgfile.oytour.com/Upload/DMC/ahjytsj2ETSENYZTG7QyAb667kPyyDHK.jpg","width":568.3999999999999,"height":382,"left":64.60000000000014,"top":1274,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[0,0],[95.23809523809523,100]]}},{"id":"img_1901","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171028241.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":439,"width":410,"top":1661,"height":60,"rotate":0,"lock":true,"layerName":"logo","groupId":""},{"type":"image","id":"mqTaKeCGoc","src":"https://imgfile.oytour.com/Upload/DMC/202309200427055240000000240.jpg","width":540.0375003861241,"height":482.9999999999999,"left":623,"top":785.7337618610346,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[5.042016806722689,0],[89.07563025210084,100]]}},{"id":"img_1902","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171028272.png","fixedRatio":true,"filters":{"opacity":"0.50"},"left":80.29139883685339,"width":533,"top":807,"height":74,"rotate":0,"lock":false,"layerName":"bg","groupId":""},{"id":"img_1903","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171028293.png","fixedRatio":true,"filters":{"opacity":"0.50"},"left":631,"width":533,"top":1164,"height":79,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"img_1904","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171028325.png","fixedRatio":true,"filters":{"opacity":"0.50"},"left":88,"width":533,"top":1549,"height":57,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"img_1905","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171028350.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":82,"width":540,"top":361,"height":4,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"text_1909","type":"text","left":-1.0082380659528498,"width":364,"top":11.375565764846044,"height":60,"rotate":0,"opacity":1,"content":"<p><span style=\"text-align:left; font-size:16px; font-weight:normal;text-decoration:none ;\">ACFEAST FOR YOUR TASTE BUDS</span></p>","defaultFontName":"SourceHanSerifCN-Light,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(77,58,65,1.00)","fill":"","lineHeight":2,"wordSpace":1.8,"vertical":false,"contentStr":"ACFEAST FOR YOUR TASTE BUDS","layerName":"ACFEAST FOR YOUR TASTE BUDS","groupId":"","clip":false,"stroke":""},{"id":"text_1910","type":"text","left":623,"width":573.3867959843458,"top":217.41432703760427,"height":95,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 60px;\"><span style=\"color: #ffffff;\"><span style=\"background-color: rgba(101,78,87,1);\">属于你的味蕾盛宴</span></span></span></p>","defaultFontName":"SourceHanSerifCN-SemiBold,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(77,58,65,1.00)","fill":"","lineHeight":1.25,"wordSpace":4.800000000000001,"vertical":false,"contentStr":"属于你的味蕾盛宴","layerName":"属于你的味蕾盛宴","groupId":"","clip":false,"stroke":""},{"id":"text_1913","type":"text","left":170.63075604530155,"width":391.618487909397,"top":817.203125,"height":53.59375,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 28px;\">温泉百汇料理/迎宾料理</span></p>","defaultFontName":"SourceHanSerifCN-Medium,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(255,255,255,1.00)","fill":"","lineHeight":1.2,"wordSpace":6,"vertical":false,"contentStr":"南岛的风景尊滴很美","layerName":"南岛的风景尊滴很美","groupId":"","clip":false,"stroke":""},{"id":"img_1916","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171028435.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":669,"width":40,"top":519,"height":33,"rotate":0,"lock":true,"layerName":"美食","groupId":""},{"id":"img_1917","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171028452.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":720,"width":40,"top":1310,"height":33,"rotate":0,"lock":true,"layerName":"美食 拷贝 2","groupId":""},{"id":"img_1918","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171028473.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":117,"width":40,"top":940,"height":33,"rotate":0,"lock":true,"layerName":"美食 拷贝","groupId":""},{"id":"text_1919","type":"text","left":169.94000000000005,"width":393,"top":931,"height":82.59375,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 28px;\">正统京风汤豆腐迎宾料理</span></p><p style=\"\"><span style=\"font-size: 28px;\"> </span></p>","defaultFontName":"SourceHanSerifCN-Bold,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(77,58,65,1.00)","fill":"","lineHeight":1.2,"wordSpace":3,"vertical":false,"contentStr":"SKYLINE 山顶自助晚餐","layerName":"SKYLINE 山顶自助晚餐","groupId":"","clip":false,"stroke":""},{"id":"text_1921","type":"text","left":48.1214905564064,"width":525.2376382508082,"top":995.9999999999999,"height":212,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 24px;\">到了京都不得不提的就是京都名物「湯豆腐」。自江户时代起,豆腐就已闻名全国。当时的在江户上演的歌舞伎甚至也有提及南禅寺汤豆腐的场面,而与其相关的浮世绘也流传至今。</span></p>","defaultFontName":"SourceHanSerifCN-Light,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(77,58,65,1.00)","fill":"","lineHeight":2,"wordSpace":null,"vertical":false,"contentStr":"晚餐部分 强烈建议 2点半之后上山 这样可以看到山顶由白天转成夜晚 而且在山上看落日 简直不敢相信。5次 luge+ 缆车+dinner是137 但是只要30块 就可以升级成靠窗边的位置 并且送一杯鸡尾酒","layerName":"晚餐部分 强烈建议 2点半之后上山 这样可以看到山顶由白天转成夜晚 而且在山上看落日 简直不敢相信。5次 luge+ 缆车+d","groupId":"","clip":false,"stroke":""},{"id":"text_1922","type":"text","left":736,"width":381.58568738229775,"top":1182,"height":53.59375,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 28px;\">山梨~河口湖餺飥套餐</span></p>","defaultFontName":"SourceHanSerifCN-Medium,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(255,255,255,1.00)","fill":"","lineHeight":1.2,"wordSpace":6,"vertical":false,"contentStr":"吃着晚餐看落日余辉","layerName":"吃着晚餐看落日余辉","groupId":"","clip":false,"stroke":""},{"id":"text_1923","type":"text","left":774.0000000000001,"width":343.5856873822977,"top":1299.703125,"height":53.59375,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 28px;\">山梨~河口湖餺飥套餐</span></p>","defaultFontName":"SourceHanSerifCN-Bold,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(77,58,65,1.00)","fill":"","lineHeight":1.2,"wordSpace":3,"vertical":false,"contentStr":"绿龙酒馆自助餐","layerName":"绿龙酒馆自助餐","groupId":"","clip":false,"stroke":""},{"id":"text_1924","type":"text","left":150,"width":423,"top":1549,"height":53.59375,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 28px;\">正统京风汤豆腐迎宾料理</span></p>","defaultFontName":"SourceHanSerifCN-Medium,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(255,255,255,1.00)","fill":"","lineHeight":1.2,"wordSpace":3,"vertical":false,"contentStr":"龙虾鲍鱼是凯库拉当天打捞","layerName":"龙虾鲍鱼是凯库拉当天打捞","groupId":"","clip":false,"stroke":""},{"id":"text_1925","type":"text","left":710.2071563088513,"width":381.58568738229764,"top":1366.3947727574136,"height":260,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 24px;\">富士山餺飥面(ほうとう)绝对就是当地美食尝鲜的首选。餺飥面这个山梨县、河口湖最具代表性的乡土料理,究竟有什么独特魅力吸引人手一碗</span></p>","defaultFontName":"SourceHanSerifCN-Regular,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(77,58,65,1.00)","fill":"","lineHeight":2,"wordSpace":1.8,"vertical":false,"contentStr":"绿龙酒馆marquee的午餐是自助餐的形式,一般是有supervisor依次去每桌介绍用餐规则和其他事项,然后一桌一桌前往取餐区。","layerName":"绿龙酒馆marquee的午餐是自助餐的形式,一般是有supervisor依次去每桌介绍用餐规则和其他事项,然后一桌一桌前往取餐","groupId":"","clip":false,"stroke":""},{"type":"image","id":"ItHYHxIO3k","src":"https://imgfile.oytour.com/Upload/DMC/w8kwNTxbxA46MRsbNskRfdW8d8WpnTX8.png","width":530,"height":388.6809237593054,"left":633,"top":361,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[0.9090909090909091,0],[91.81818181818181,100]]}}],"background":{"type":"solid","color":"#ffffff"},"isTripItems":false},{"id":"import-slide-51","pageType":1,"elements":[{"id":"img_1810","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171029321.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":80,"width":652,"top":1301.6851114514209,"height":370,"rotate":0,"lock":false,"layerName":"editor_6","groupId":""},{"id":"img_1811","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171029391.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":417,"width":343,"top":712,"height":242,"rotate":0,"lock":false,"layerName":"editor_3","groupId":""},{"id":"img_1812","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171029436.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":57,"width":349,"top":712,"height":245,"rotate":0,"lock":false,"layerName":"editor_2","groupId":""},{"id":"img_1813","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171029487.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":827,"width":365,"top":965,"height":249,"rotate":0,"lock":false,"layerName":"editor_5","groupId":""},{"id":"img_1814","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171029527.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":503,"width":417,"top":405,"height":221,"rotate":0,"lock":false,"layerName":"editor_1","groupId":""},{"id":"img_1815","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171029571.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":478,"width":349,"top":998,"height":247,"rotate":0,"lock":false,"layerName":"editor_4","groupId":""},{"id":"img_1816","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171029615.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":718,"width":470,"top":1236,"height":375,"rotate":0,"lock":false,"layerName":"editor_7","groupId":""},{"id":"img_1817","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171029682.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":-41.10064279155189,"width":1327,"top":-520.5,"height":2273,"rotate":0,"lock":false,"layerName":"bg","groupId":""},{"id":"img_1818","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171029953.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":711,"width":470,"top":1245,"height":362,"rotate":0,"lock":true,"layerName":"editor_7_before_1","groupId":""},{"type":"image","id":"WnlALXLtvn","src":"https://im.oytour.com/pptist/desgin/1709033848116.png","width":1371.9506932369743,"height":1760.6700563207837,"left":-109.719461916956,"top":0,"fixedRatio":true,"rotate":0},{"type":"image","id":"D3kJQxd2bM","src":"https://imgfile.oytour.com/Upload/DMC/202309260358343530000000208.jpg","width":1386.418564795662,"height":1780.3127637825514,"left":-55.57030418341858,"top":-19.642707461767728,"fixedRatio":true,"rotate":0},{"type":"shape","id":"sbYEcqdkeo","left":3.433707673983201,"top":164.99945550450923,"width":1232.155317338778,"height":1270.939867279224,"viewBox":[1232.155317338778,1270.939867279224],"path":"M 0 154.01941466734726 Q 0 0 154.01941466734726 0 L 1078.1359026714308 0 Q 1232.155317338778 0 1232.155317338778 154.01941466734726 L 1232.155317338778 1270.939867279224 L 0 1270.939867279224 Z","fill":"#ffffff","fixedRatio":false,"rotate":0,"pathFormula":"roundRectSameSide","keypoint":0.125},{"id":"img_1821","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030021.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":474,"width":353,"top":998,"height":249,"rotate":0,"lock":false,"layerName":"editor_4_before_1","groupId":""},{"id":"img_1822","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030047.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":416,"width":351,"top":703,"height":253,"rotate":0,"lock":true,"layerName":"editor_3_before_1","groupId":""},{"id":"img_1823","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030079.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":62,"width":352,"top":705,"height":253,"rotate":0,"lock":true,"layerName":"editor_2_before_1","groupId":""},{"id":"img_1824","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030109.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":521,"width":402,"top":401,"height":221,"rotate":0,"lock":true,"layerName":"editor_1_before_1","groupId":""},{"id":"img_1826","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030165.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":798,"width":25,"top":737,"height":40,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"img_1827","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030188.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":95,"width":25,"top":992,"height":40,"rotate":0,"lock":true,"layerName":"bg","groupId":""},{"id":"img_1830","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030297.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":423,"width":410,"top":1657,"height":60,"rotate":0,"lock":true,"layerName":"logo","groupId":""},{"id":"text_1832","type":"text","left":718,"width":459,"top":273.0747883699166,"height":92,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 30px;\"><span style=\"color: rgb(128, 74, 72);\">【人气秘密景点】:大阪舞洲seaside park」</span></span></p>","defaultFontName":"SourceHanSansCN-Heavy,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(255,255,255,1.00)","fill":"","lineHeight":1.2,"wordSpace":6,"vertical":false,"contentStr":"走进新西兰 当一回欢乐旅行人","layerName":"走进新西兰 当一回欢乐旅行人","groupId":"","clip":false,"stroke":""},{"type":"shape","id":"gyTvVuHFUX","left":516,"top":401,"width":404,"height":225,"viewBox":[200,200],"path":"M 0 0 L 200 0 L 200 200 L 0 200 Z","fill":"#ffffff","fixedRatio":false,"rotate":0},{"type":"shape","id":"BgVVlvlihO","left":794.5504669454281,"top":689.5267923793562,"width":340.1106687085247,"height":226.74044580568315,"viewBox":[200,200],"path":"M 0 0 L 200 0 L 200 200 L 0 200 Z","fill":"#ffffff","fixedRatio":false,"rotate":0},{"id":"text_1834","type":"text","left":711.5,"width":524.5890250127615,"top":359,"height":212,"rotate":0,"opacity":1,"content":"<p style=\"text-align: center;\"><span style=\"font-size: 24px;\"><span style=\"background-color: #00000000;\">大阪的舞洲地区“大阪舞洲SeaSide公园”,每到时期,公园内面朝大阪湾的广阔地面上100万株淡蓝色的粉蝶花争相开放。除了在花海里散步,还可以搭乘直升机、滑翔伞从高空俯瞰。</span></span></p>","defaultFontName":"SourceHanSerifCN-Medium,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(101,78,87,1.00)","fill":"","lineHeight":2,"wordSpace":0,"vertical":false,"contentStr":"纯净的空气、湛蓝无垠的大海、牛羊点缀的苍茫草原、皎月深邃的星空、色彩斑斓植被中的城市和乡村……\r新西兰这个不缺蓝天与绿草的国度,会带给你无比的热情和生命力。","layerName":"纯净的空气、湛蓝无垠的大海、牛羊点缀的苍茫草原、皎月深邃的星空、色彩斑斓植被中的城市和乡村…… 新西兰这个不缺蓝天与绿草的国度","groupId":"","clip":false,"stroke":""},{"type":"shape","id":"79zWctwza3","left":51.7,"top":970,"width":411.7,"height":307.3,"viewBox":[200,200],"path":"M 0 0 L 200 0 L 200 200 L 0 200 Z","fill":"#ffffff","fixedRatio":false,"rotate":0},{"id":"text_1839","type":"text","left":774.1325846520333,"width":448.0381997617832,"top":578.4765625,"height":95.046875,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 30px;\"><span style=\"font-family: SourceHanSansCN-Heavy,AdobeInvisFont,AdobeHeitiStd-Regular;\"><span style=\"color: rgb(128, 74, 72);\">【世界唯一】Starbucks·京都二宁板弥荣茶屋店</span></span></span></p>","defaultFontName":"SourceHanSerifCN-Heavy,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(101,78,87,1.00)","fill":"","lineHeight":1.2,"wordSpace":3,"vertical":false,"contentStr":"第一大教堂","layerName":"第一大教堂","groupId":"","clip":false,"stroke":""},{"id":"text_1842","type":"text","left":34.84726048362413,"width":459.5084226646248,"top":1148.2098929822512,"height":83.046875,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 30px;\"><span style=\"font-family: SourceHanSansCN-Heavy,AdobeInvisFont,AdobeHeitiStd-Regular;\"><span style=\"color: rgb(128, 74, 72);\">贝聿铭大作~MIHO美秀美术馆(《桃花源记》照进现实)</span></span></span></p>","defaultFontName":"SourceHanSerifCN-Heavy,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(101,78,87,1.00)","fill":"","lineHeight":1,"wordSpace":3,"vertical":false,"contentStr":"瓦卡蒂普湖","layerName":"瓦卡蒂普湖","groupId":"","clip":false,"stroke":""},{"id":"text_1844","type":"text","left":3.433707673983201,"width":502.9488769780502,"top":1207.5249957461288,"height":236,"rotate":0,"opacity":1,"content":"<p style=\"text-align: center;\"><span style=\"font-size: 24px;\"><span style=\"font-family: SourceHanSerifCN-Medium,AdobeInvisFont,AdobeHeitiStd-Regular;\"><span style=\"color: rgba(101,78,87,1.00);\"><span style=\"background-color: #00000000;\">是世界级建筑大师贝聿铭融合自然与建筑的佳作,光是看建筑,这里就值得您到此走一回!出身纺织世家的小山美秀子本身就是一位收藏家,为了将毕生丰富的收藏与大众分享,便在1990年聘请建筑大师贝聿铭在静谧的山林中兴建美秀美术馆。</span></span></span></span></p>","defaultFontName":"SourceHanSerifCN-Light,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(101,78,87,1.00)","fill":"","lineHeight":1.5,"wordSpace":1.8,"vertical":false,"contentStr":"聆听山与湖与人和谐共处的美好时光。瓦卡蒂普湖由于形状不寻常,而形成了独特“潮汐”","layerName":"聆听山与湖与人和谐共处的美好时光。瓦卡蒂普湖由于形状不寻常,而形成了独特“潮汐”","groupId":"","clip":false,"stroke":""},{"type":"image","id":"e052BwOY9f","src":"https://imgfile.oytour.com/Upload/DMC/2hhJjw6fT8y7wn6ansFXaZY65TrTjZEY.jpg","width":371.15273951637585,"height":268.00820324456686,"left":34.84726048362413,"top":577.9958983777166,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[0,0],[83.33333333333334,90.09009009009009]]}},{"type":"image","id":"PsEXth___R","src":"https://imgfile.oytour.com/Upload/DMC/77hraai8DGEMkcHkT5mj4hYtTrEejxBM.jpg","width":343.5269360269361,"height":270.1640444852567,"left":417,"top":576.9179777573717,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[1.550387596899225,6.422018348623854],[79.06976744186048,98.1651376146789]]}},{"type":"image","id":"wPsXbaMutX","src":"https://im.oytour.com/pptist/desgin/1709042183910.png","width":302.9935199486701,"height":288.9182535608789,"left":42.78408325681053,"top":250.7102202999011,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[0,0],[62.893081761006286,100]]}},{"type":"image","id":"02Pc4QIoDN","src":"https://imgfile.oytour.com/Upload/DMC/y4Y242H7eihSnheRxPQ7PQeHFEadxHRZ.jpg","width":714.1706639267034,"height":535.7497296437188,"left":502.40927972009786,"top":880.3350281603919,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[17.355371900826448,0],[100,85.47008547008546]]}},{"type":"image","id":"GgxGd6mnT6","src":"https://imgfile.oytour.com/Upload/DMC/a227eBsxizWzfBsPNCeQWjtCAH4eMMb6.jpg","width":417.7447448584956,"height":275.67434258573695,"left":35.84331916436537,"top":880.3350281603919,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[0,35.26970954356847],[94.33962264150944,76.76348547717842]]}},{"type":"image","id":"RkQ7OwqdbS","src":"https://im.oytour.com/pptist/desgin/1709044397604.png","width":358.0326016675175,"height":288.91825356087895,"left":353.4673983324825,"top":250.7102202999011,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[14.0625,0],[92.1875,100]]}},{"type":"text","id":"Y0D1ZxKIGZ","left":767,"top":665.953125,"width":444.23616641143445,"height":167.046875,"content":"<p style=\"text-align: center;\"><span style=\"font-size: 24px;\"><span style=\"font-family: SourceHanSerifCN-Medium,AdobeInvisFont,AdobeHeitiStd-Regular;\"><span style=\"color: rgba(101,78,87,1.00);\"><span style=\"background-color: #00000000;\">全球仅此一间,能够体验坐在榻榻米上享用咖啡的新鲜与冲突感,感受一下古色古香的京都二宁坂与求新求变的starbucks咖啡能迸出怎样的新滋味!</span></span></span></span></p>","rotate":0,"defaultFontName":"Microsoft Yahei","defaultColor":"#333","vertical":false},{"type":"text","id":"mNGPGagkZy","left":0,"top":0,"width":600,"height":50,"content":"<div>馆</div>","rotate":0,"defaultFontName":"Microsoft Yahei","defaultColor":"#333","vertical":false}],"background":{"type":"solid","color":"#ffffff"},"isTripItems":false},{"id":"import-slide-87","pageType":1,"elements":[{"id":"img_1777","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030341.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":80,"width":534,"top":332,"height":434,"rotate":0,"lock":false,"layerName":"editor_1","groupId":""},{"id":"img_1778","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030414.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":667.8011230219499,"width":547,"top":359.90056151097497,"height":420,"rotate":0,"lock":false,"layerName":"editor_2","groupId":""},{"id":"img_1779","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030483.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":440,"width":364,"top":1193,"height":393,"rotate":0,"lock":false,"layerName":"editor_4","groupId":""},{"id":"img_1780","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030530.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":69,"width":368,"top":1193,"height":393,"rotate":0,"lock":false,"layerName":"editor_3","groupId":""},{"id":"img_1781","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030577.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":807,"width":369,"top":1196,"height":386,"rotate":0,"lock":false,"layerName":"editor_5","groupId":""},{"id":"img_1782","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030628.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":-59.54129657988787,"width":1328,"top":-1.9999999999999583,"height":1918,"rotate":0,"lock":false,"layerName":"bg","groupId":""},{"id":"img_1783","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030745.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":807,"width":365,"top":1189,"height":397,"rotate":0,"lock":true,"layerName":"editor_5_before_1","groupId":""},{"type":"image","id":"M6EYklfbBH","src":"https://im.oytour.com/pptist/desgin/1709043707203.png","width":1256.8004506638908,"height":1619.3725640315597,"left":0,"top":-1.9999999999999583,"fixedRatio":true,"rotate":0},{"id":"img_1784","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030767.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":442,"width":359,"top":1189,"height":396,"rotate":0,"lock":true,"layerName":"editor_4_before_1","groupId":""},{"id":"img_1785","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030784.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":67,"width":365,"top":1192,"height":394,"rotate":0,"lock":true,"layerName":"editor_3_before_1","groupId":""},{"id":"img_1786","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030807.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":630,"width":539,"top":334,"height":424,"rotate":0,"lock":true,"layerName":"editor_2_before_1","groupId":""},{"type":"shape","id":"K8ynI37ReE","left":67.00000000000003,"top":119.69225094665245,"width":1120.5910158244003,"height":1466.3077490533476,"viewBox":[200,200],"path":"M 0 0 L 200 0 L 200 200 L 0 200 Z","fill":"#ffffff","fixedRatio":false,"rotate":0},{"id":"img_1787","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171030831.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":71,"width":540,"top":332,"height":430,"rotate":0,"lock":true,"layerName":"editor_1_before_1","groupId":""},{"id":"img_1797","type":"image","src":"https://im.oytour.com/pptist/desgin/1706171031049.png","fixedRatio":true,"filters":{"opacity":"1.00"},"left":431,"width":410,"top":1650,"height":60,"rotate":0,"lock":true,"layerName":"logo 拷贝 4","groupId":""},{"id":"text_1799","type":"text","left":416,"width":440,"top":795.5303386081334,"height":66,"rotate":0,"opacity":1,"content":"<p style=\"text-align: center;\"><span style=\"font-size: 46px;\">京都和服体验</span></p>","defaultFontName":"SourceHanSerifCN-Bold,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(83,65,72,1.00)","fill":"","lineHeight":1,"wordSpace":9.600000000000001,"vertical":false,"contentStr":"皇后镇空中缆车","layerName":"皇后镇空中缆车","groupId":"","clip":false,"stroke":""},{"id":"text_1800","type":"text","left":475.16025182916457,"width":335,"top":861.5303386081334,"height":53.046875,"rotate":0,"opacity":1,"content":"<p><span style=\"text-align:left; font-size:22px; font-weight:normal;text-decoration:none ;\">置身于梦幻般的绝美意境</span></p>","defaultFontName":"SourceHanSerifCN-SemiBold,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(77,58,65,1.00)","fill":"","lineHeight":1.5,"wordSpace":4.800000000000001,"vertical":false,"contentStr":"置身于梦幻般的绝美意境","layerName":"置身于梦幻般的绝美意境","groupId":"","clip":false,"stroke":""},{"id":"text_1801","type":"text","left":227.83426918495823,"width":868,"top":906.4640462821168,"height":164,"rotate":0,"opacity":1,"content":"<p style=\"text-align: center;\"><span style=\"font-size: 24px;\">和服可分为公家着物和武家着物。现今所谓和服实即古时之小袖, 小袖的表着化始自室町时代 ,贵族的下着白小袖逐渐成为庶民的表衣。 “着物”除了包括“吴服\"之外还包括肩衣袴、源自平安时代的狩衣等等,这些都非源自吴服,而是源自本土的传统服饰。特别安排穿和服体验,在京都留下美好的回忆。</span></p>","defaultFontName":"SourceHanSerifCN-SemiBold,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(77,58,65,1.00)","fill":"","lineHeight":1.5,"wordSpace":0,"vertical":false,"contentStr":"新西兰的皇后镇Queenstown拥有世间稀缺的仙境美景,因而取名皇后镇位于新西兰南岛南阿尔卑斯山脚下,瓦卡蒂普湖畔的小镇,被列入全世界最美小镇Top5","layerName":"新西兰的皇后镇Queenstown拥有世间稀缺的仙境美景,因而取名皇后镇位于新西兰南岛南阿尔卑斯山脚下,瓦卡蒂普湖畔的小镇,被","groupId":"","clip":false,"stroke":""},{"id":"text_1808","type":"text","left":437,"width":399,"top":122,"height":68,"rotate":0,"opacity":1,"content":"<p><span style=\"text-align:left; font-size:48px; font-weight:normal;text-decoration:none ;\">打卡绝美景色</span></p>","defaultFontName":"SourceHanSerifCN-Bold,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(77,58,65,1.00)","fill":"","lineHeight":1,"wordSpace":10,"vertical":false,"contentStr":"打卡绝美景色","layerName":"打卡绝美景色","groupId":"","clip":false,"stroke":""},{"id":"text_1809","type":"text","left":180.35899268334174,"width":1055.2820146333163,"top":184,"height":48,"rotate":0,"opacity":1,"content":"<p style=\"\"><span style=\"font-size: 28px;\">富士山芝樱名所首都圈最大 80 万株芝樱群【富士芝樱庆典】</span></p>","defaultFontName":"SourceHanSerifCN-Light,AdobeInvisFont,AdobeHeitiStd-Regular","defaultColor":"rgba(77,58,65,1.00)","fill":"","lineHeight":1,"wordSpace":6,"vertical":false,"contentStr":"Take in the stunning views","layerName":"Take in the stunning views","groupId":"","clip":false,"stroke":""},{"type":"image","id":"agy4MnPudN","src":"https://imgfile.oytour.com/Upload/DMC/20200201112104433.png","width":528.4860983494981,"height":415.9705064942431,"left":80,"top":341.01474675287847,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[0,0],[84.7457627118644,100]]}},{"type":"image","id":"CocC9DHEZA","src":"https://imgfile.oytour.com/Upload/DMC/202304030358080710000000117.jpg","width":513.679496341671,"height":406.09943848902503,"left":642.6602518291645,"top":342.9502807554875,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[15.254237288135592,0],[100,100]]}},{"type":"text","id":"-OSSQhBI-L","left":67,"top":221.12876617551072,"width":1140.2468086163487,"height":105.515625,"content":"<p style=\"\"><span style=\"font-size: 28px;\"><span style=\"font-family: SourceHanSerifCN-Light,AdobeInvisFont,AdobeHeitiStd-Regular;\"><span style=\"color: rgba(77,58,65,1.00);\">会场位于富士山麓靠近本栖湖附近,拥有80万株的芝樱,是东京近郊区域栽培芝樱规模最大的一个景点,每年都吸引海内外大批游客前往观赏。然除了能欣赏到如诗般的美景。</span></span></span></p>","rotate":0,"defaultFontName":"Microsoft Yahei","defaultColor":"#333","vertical":false},{"type":"image","id":"IHhYEBDme1","src":"https://imgfile.oytour.com/Upload/DMC/rG8YMzyxjppc7sKk5rC6fDtx2NFnTFZs.jpg","width":364.444123882928,"height":424.9652700782714,"left":447.77793805853594,"top":1104.8977539561001,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[20.833333333333332,0],[80.35714285714286,100]]}},{"type":"image","id":"BwPN4Tz_ES","src":"https://imgfile.oytour.com/Upload/DMC/Miy8N2EEjBTbJ5Qet8QhtPRsNME4PWin.png","width":357.4855553908825,"height":424.9652700782711,"left":812.5807369351342,"top":1104.8977539561001,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[40.78212290502793,10.619469026548673],[96.64804469273743,99.11504424778761]]}},{"type":"image","id":"Y1R71foOnq","src":"https://imgfile.oytour.com/Upload/DMC/20190504104701775.jpg","width":371.52472349838354,"height":424.96527007827143,"left":80,"top":1104.8977539561001,"fixedRatio":true,"rotate":0,"clip":{"shape":"rect","range":[[39.884393063583815,0],[97.6878612716763,100]]}}],"background":{"type":"solid","color":"#ffffff"},"isTripItems":false}]
\ No newline at end of file
......@@ -154,7 +154,15 @@ import {
WaterfallsH,
ListCheckbox,
DocAdd,
FileConversion
FileConversion,
Switch,
Mark,
TitleLevel,
CenterAlignment,
LinkTwo,
Unlink,
DividingLine,
DeleteFour
} from '@icon-park/vue-next'
export interface Icons {
......@@ -162,6 +170,13 @@ export interface Icons {
}
export const icons: Icons = {
IconMark:Mark,
IconDividingLine:DividingLine,
IconUnlink:Unlink,
IconLinkTwo:LinkTwo,
IconCenterAlignment:CenterAlignment,
IconTitleLevel:TitleLevel,
IconSwitch:Switch,
IconFileConversion: FileConversion,
IconDocAdd: DocAdd,
IconPlayOne: PlayOne,
......@@ -314,6 +329,7 @@ export const icons: Icons = {
IconGridFour:GridFour,
IconWaterfallsH:WaterfallsH,
IconListCheckbox:ListCheckbox,
IconDeleteFour:DeleteFour
}
export default {
......
......@@ -399,27 +399,34 @@ const routes: RouteRecordRaw[] = [
},
{
path: '/project',
component: () => import('@/views/project/Layout.vue'),
component: () => import('@/views/Project/Layout.vue'),
meta:{
title:'工作台'
},
children:[
{
path: '/project',
component: () => import('@/views/project/Index.vue'),
component: () => import('@/views/Project/Index.vue'),
meta:{
title:'概览'
}
},
{
path: '/project/create/trip',
component: () => import('@/views/project/trip.vue'),
component: () => import('@/views/Project/trip.vue'),
meta:{
title:'行程制作'
}
},
]
},
{
path:"/proj/e/:projectid",
component:()=>import('@/views/Project/Editor/Index.vue'),
meta:{
title:'编辑行程'
}
},
{
path: '/p/show',
component: () => import('@/views/Product/Show.vue'),
......
......@@ -196,6 +196,7 @@ export const getHtmlPlainText = (html_str:string) => {
}
export const dateFormat = (value: number|string|Date = Date.now(), format = 'YYYY-MM-DD HH:mm:ss'): string => {
const week = ['日','一','二','三','四','五','六'];
if (typeof value === 'number' || typeof value === 'string') {
var date = new Date(value)
} else {
......@@ -230,6 +231,10 @@ export const dateFormat = (value: number|string|Date = Date.now(), format = 'YYY
const s = String(date.getSeconds())
showTime = showTime.includes('ss') ? showTime.replace('ss', s.padStart(2, '0')) : showTime.replace('s', s)
}
if(showTime.includes('w')) {
const w = `${week[date.getDay()]}`
showTime = showTime.includes('ww') ? showTime.replace('ww', `周${w}`) : showTime.replace('s', w)
}
return showTime
}
......
<template>
<div class="window-width window-height project-full-wrap column">
<editor-header></editor-header>
<div class="col full-wdith row">
<editor-day-list v-model:value="activeTab"></editor-day-list>
<div class="q-pa-lg row col">
<tour-itinerary v-if="activeTab==-1"></tour-itinerary>
<div class="col" v-if="activeTab==-1 || activeTab==-2"></div>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
import EditorHeader from '../components/Editor/EditorHeader.vue'
import EditorDayList from '../components/Editor/EditorDayList.vue';
import TourItinerary from '../components/Editor/TourItinerary.vue';
import { ref } from 'vue';
const activeTab = ref(-1)
const setActiveTabHandle = (playload:number)=>{
activeTab.value = playload
}
</script>
<style>
.project-full-wrap{
background-color: #f7f8f8;
}
</style>
\ No newline at end of file
<template>
<div class="full-height column full-width">
{{ editor.isActive('bold') }}
<div class="row items-center q-my-sm">
<div class="editor-item" @click="setBold" :class="{'active':editor.isActive('bold')}">
<IconTextBold></IconTextBold>
</div>
<div class="editor-item" @click="setItalic" :class="{'active':editor.isActive('italic')}">
<IconTextItalic></IconTextItalic>
</div>
<div class="editor-item" @click="setUnderline" :class="{'active':editor.isActive('underline')}">
<IconTextUnderline></IconTextUnderline>
</div>
<el-divider style="height: 100%; margin: 0 16px;" direction="vertical" />
<div class="editor-item" @click="setHeaderTitle" :class="{'active':editor.isActive('heading', { level: 3 })}">
<IconTitleLevel></IconTitleLevel>
</div>
<div class="editor-item" @click="setBlockquote" :class="{'active':editor.isActive('blockquote')}">
<IconQuote></IconQuote>
</div>
<div class="editor-item" @click="setTextCenter" :class="{'active':editor.isActive({ textAlign: 'center' })}">
<IconCenterAlignment></IconCenterAlignment>
</div>
<el-divider style="height: 100%; margin: 0 16px;" direction="vertical" />
<div class="editor-item" ref="buttonRef" @click="openLinkHandle">
<IconLinkTwo></IconLinkTwo>
</div>
<div class="editor-item">
<IconPicture></IconPicture>
</div>
<div class="editor-item" @click="setDiver">
<IconDividingLine></IconDividingLine>
</div>
</div>
<el-divider class="q-ma-none" />
<el-scrollbar class="q-pa-lg full-width col editor-text-content" style="padding-bottom: 0;">
<bubble-menu :editor="editor" :tippy-options="{ duration: 100 }" :should-show="shouldShowHandler" v-if="editor">
<div class="bubble-menu row items-center" v-if="!showEditorLink">
<span class="link cusor-pointer" @click="openLink(currentLink?.href)">{{ currentLink?.href}}</span>
<el-divider style="height: 30px; margin: 0 8px 0 16px;background-color: #e5e5e5;" direction="vertical"/>
<div class="editor-item" @click="editorLinkHandle">
<IconEdit></IconEdit>
</div>
<div class="editor-item" @click="removeLink">
<IconDeleteFour></IconDeleteFour>
</div>
</div>
<div class="bubble-menu" style="width: 330px;" v-else>
<div class="row items-center">
<el-input class="link-box" v-model="linkText" prefix-icon="Link" @input="linkUrlChangeHandler"></el-input>
<el-button class="q-ml-md" @click="setLink" :disabled="!validatorUrl">确认</el-button>
</div>
<div class="q-mt-md">
<el-switch v-model="isBlank" class="short-switch" /> 在新窗口打开
</div>
</div>
</bubble-menu>
<editor-content :editor="editor" />
</el-scrollbar>
</div>
<el-popover
ref="popoverRef"
placement="bottom"
width="330px"
:virtual-ref="buttonRef"
:visible="linkVisible"
virtual-triggering
popper-style="border-radius:6px !important;">
<div v-click-outside="onClickOutside">
<div class="row items-center">
<el-input class="link-box" v-model="linkText" prefix-icon="Link" @input="linkUrlChangeHandler"></el-input>
<el-button class="q-ml-md" @click="setLink" :disabled="!validatorUrl">确认</el-button>
</div>
<div class="q-mt-md">
<el-switch v-model="isBlank" class="short-switch" /> 在新窗口打开
</div>
</div>
</el-popover>
</template>
<script setup>
import { EditorContent, BubbleMenu} from '@tiptap/vue-3'
import { Editor } from '@tiptap/core'
import StarterKit from '@tiptap/starter-kit'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import Highlight from '@tiptap/extension-highlight'
import Underline from '@tiptap/extension-underline'
import Heading from '@tiptap/extension-heading'
import Blockquote from '@tiptap/extension-blockquote'
import HorizontalRule from '@tiptap/extension-horizontal-rule'
import TextAlign from '@tiptap/extension-text-align'
import Link from '@tiptap/extension-link'
import { ref } from 'vue'
import { ClickOutside as vClickOutside } from 'element-plus'
import { openNewBlank } from '@/utils/common'
// import BubbleMenu from '@tiptap/extension-bubble-menu'
const textalign = TextAlign.configure({
types: ['heading', 'paragraph'],
alignments: ['left', 'right', 'center', 'justify'],
})
const link = Link.configure({
openOnClick: false,
defaultProtocol: 'https',
})
const linkText = ref('')
const isBlank = ref(false)
const buttonRef = ref()
const popoverRef = ref()
const linkVisible = ref(false)
const validatorUrl = ref(false)
const showEditorLink = ref(false)
const currentLink = ref()
const regex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(\:[0-9]+)?)(\/[a-zA-Z0-9%_.~+-]+)*\/?(\?[a-zA-Z0-9%_.,~+-=&]*)?(#[a-zA-Z0-9_-]+)?$/;
const statusList = ref({
isBold:false,
isItalic:false,
isUnderline:false,
isHeading:false,
isBlockquote:false,
isCenter:false,
})
const editor = new Editor({
// register extensions
extensions: [StarterKit, Highlight, Text, Document,Paragraph,Underline,Heading,Blockquote,textalign,HorizontalRule,link],
// set the initial content
content: '<p>Example Text</p>',
// place the cursor in the editor after initialization
autofocus: true,
// make the text editable (but that’s the default anyway)
editable: true,
// disable the loading of the default CSS (which is not much anyway)
injectCSS: true,
})
const setBold = () => {
editor.chain().focus().toggleBold().run()
}
const setItalic = () => {
editor.chain().focus().toggleItalic().run()
}
const setUnderline = () => {
editor.chain().focus().toggleUnderline().run()
}
const setHeaderTitle = () => {
editor.chain().focus().toggleHeading({ level: 3 }).run()
}
const setBlockquote = () => {
editor.chain().focus().toggleBlockquote().run()
}
const setTextCenter = () => {
if(!editor.isActive({ textAlign: 'center' }))
editor.chain().focus().setTextAlign('center').run()
else
editor.chain().focus().unsetTextAlign().run()
}
const setDiver=()=>{
editor.chain().focus().setHorizontalRule().run()
}
const onClickOutside = () => {
if(linkVisible.value) {
linkVisible.value=false
editor.chain().focus()
}
}
const openLink = (url)=>{
openNewBlank(url)
}
const linkUrlChangeHandler = ()=>{
validatorUrl.value = regex.test(linkText.value)
}
const setLink = ()=>{
if(editor.isActive('link')){
const r = editor.chain().focus().extendMarkRange('link').setLink({ href: linkText.value, target: isBlank.value?'_blank':'_self' }).run()
showEditorLink.value=false
currentLink.value=editor.getAttributes('link')
}else{
editor.commands.setLink({ href: linkText.value, target: isBlank.value?'_blank':'_self' })
}
onClickOutside()
}
const removeLink = ()=>{
if(editor.isActive('link')){
editor.chain().focus().extendMarkRange('link').unsetLink().run()
}
}
const openLinkHandle = ()=>{
editor.chain().focus()
const { from, to } = editor.state.selection;
linkVisible.value = from != to
if(linkVisible.value) {
linkText.value=''
validatorUrl.value=false
}
}
const editorLinkHandle = ()=>{
linkText.value=currentLink.value.href
showEditorLink.value=true
isBlank.value=currentLink.value.target=='_blank'
}
const shouldShowHandler = ({ editor, view, state, oldState, from, to }) => {
if(editor.isActive('link')){
showEditorLink.value=false
currentLink.value=editor.getAttributes('link')
}
return editor.isActive('link')
}
</script>
<style>
.editor-item{
font-size: 18px;
padding:5px 10px;
color: #000;
border-radius: 4px;
background-color: transparent;
cursor: pointer;
margin-left: 5px;
}
.editor-item:hover,
.editor-item.active{
background-color: rgba(0, 0, 255, 0.05);
}
.editor-item.active{
color:var(--el-color-primary);
}
.editor-text-content .ProseMirror,.editor-text-content .ProseMirror-static{
font-size: 14px !important;
font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif !important;
}
.link-box .el-input__wrapper{
background-color: #f5f5f5 !important;
color: #000 !important;
border-radius: 6px !important;
box-shadow: none !important;
}
.link-box .el-input__prefix{
color: #000 !important;
}
.tiptap *{
line-height: 1.5 !important;
}
.el-switch.short-switch .el-switch__core {
min-width: 35px;
}
.bubble-menu {
background-color: #FFF;
border: 1px solid #e5e5e5;
border-radius: 8px;
box-shadow: 0 1px 2px 0 rgba(0,0,0,.05);
padding: 8px;
}
.bubble-menu .link{
font-size: 14px;
color: #000;
text-decoration: underline;
}
</style>
\ No newline at end of file
<template>
<div class="proj-editor-left full-height column">
<div class="q-pa-lg row items-center">
<div class="col text-info">行程总览</div>
<el-link :underline="false">
<IconEdit></IconEdit>
<span style="margin-left: 5px;" class="text-small">编辑</span>
</el-link>
</div>
<el-divider class="q-ma-none" />
<el-scrollbar class="full-width col">
<div class="day-item" :class="{'active':activeDayItem==-1}" @click="setCurrentDayItemHandle(-1)">
<span class="day-title">行程总览</span>
</div>
<div class="day-item" v-for="(x,i) in days" :key="i" :class="{'active':activeDayItem==i}" @click="setCurrentDayItemHandle(i)">
<div class="row">
<span class="day-title col">{{ x.day }}</span>
<span class="text-info">{{ x.dateStr }}</span>
</div>
<div style="margin-top: 8px;" v-for="(city,index) in x.cities" :key="index">
<IconMark class="q-mr-md" v-if="city==startCity || city==endCity"></IconMark>
<span>{{ city }}</span>
</div>
</div>
<div class="day-item" :class="{'active':activeDayItem==-2}" @click="setCurrentDayItemHandle(-2)">
<span class="day-title">行程备注</span>
</div>
</el-scrollbar>
</div>
</template>
<script lang="ts" setup>
import { dateFormat } from '@/utils/common';
import { ref } from 'vue';
const emit = defineEmits<{
(event: 'update:value', payload: number): void
}>()
const days = ref<any[]>()
const startCity = '北京'
const endCity = '北京'
const cities = [['北京','巴黎'],['巴黎'],['巴黎'],['巴黎','尼斯'],['尼斯','威尼斯'],['威尼斯'],['威尼斯'],['威尼斯','佛罗伦萨'],['佛罗伦萨'],['佛罗伦萨','罗马'],['罗马'],['罗马','伊斯坦布尔'],['伊斯坦布尔','北京']]
const activeDayItem = ref(-1)
const startDate = new Date('2024/11/11')
days.value = cities.map((x,i)=>{
const newDate = new Date(startDate)
newDate.setDate(newDate.getDate()+i)
const formatDate = dateFormat(newDate,'M月D日 ww')
return {
day:`D${i+1}`,
dateStr:formatDate,
dayNum:i,
cities:x
}
})
const setCurrentDayItemHandle = (i:number)=>{
activeDayItem.value = i
emit('update:value',i)
}
</script>
<style>
.proj-editor-left{
width: 184px;
font-size: 13px;
}
.proj-editor-left .day-item{
padding:15px 12px;
font-size: 12px;
position: relative;
cursor: pointer;
}
.proj-editor-left .day-item.active{
color: var(--el-color-primary);
}
.proj-editor-left .day-item:hover{
color: var(--el-color-primary);
}
.proj-editor-left .day-item.active::before{
display: block;
content: ' ';
width: 4px;
height: 16px;
background-color: var(--el-color-primary);
position: absolute;
top: 17px;
left: 0;
}
.proj-editor-left .day-item .day-title{
font-size: 14px;
font-weight: bold;
}
</style>
\ No newline at end of file
<template>
<div class="peditor-head-box row items-center">
<el-breadcrumb :separator-icon="ArrowRight">
<el-breadcrumb-item :to="{ path: '/w' }">我参与的项目</el-breadcrumb-item>
<el-breadcrumb-item>2024/09/23-18:49 黄奎创建</el-breadcrumb-item>
<el-breadcrumb-item>行程编辑</el-breadcrumb-item>
</el-breadcrumb>
<div class="col"></div>
<el-link :underline="false">
<IconSettingOne></IconSettingOne>
<span style="margin-left: 5px;" class="text-small">行程信息设置</span>
</el-link>
<el-popover placement="bottom" trigger="click" class="pa-none">
<template #reference>
<el-link :underline="false" class="q-mx-lg">
<IconSwitch></IconSwitch>
<span style="margin-left: 5px;" class="text-small">导入导出</span>
</el-link>
</template>
<el-menu mode="vertical" class="min-menu none-border" style="width: 100%;">
<el-menu-item index="1">导入行程路线</el-menu-item>
<el-menu-item index="2">导出到行程库</el-menu-item>
</el-menu>
</el-popover>
<el-button color="#626aef" style="height: 100%;border-radius: 0;">返回</el-button>
<div></div>
</div>
</template>
<script lang="ts" setup>
import { ArrowRight } from '@element-plus/icons-vue'
</script>
<style>
.peditor-head-box{
background-color: #000e1a;
height: 48px;
padding-left: 40px;
}
.peditor-head-box .el-breadcrumb__inner{
color:#8c9398;
}
.peditor-head-box .el-breadcrumb__item:last-child .el-breadcrumb__inner,.peditor-head-box .el-link {
color:#D9DBDC;
}
.peditor-head-box .el-link :hover {
color: var(--el-link-hover-text-color);
}
.none-border{
border-right: none;
}
.min-menu .el-menu-item{
height: 40px;
line-height: 40px;
}
</style>
\ No newline at end of file
<template>
<el-drawer v-model="editorVisible" :show-close="false" class="customer-drawer" size="960px">
<template #header="{ close, titleId, titleClass }">
<div class="card-h2">{{ title }}</div>
</template>
<div class="full-height column">
<el-divider class="q-ma-none" />
<div class="draw-close" @click="closeHandle">
<IconCloseSmall></IconCloseSmall>
</div>
<div class="col full-width row">
<div class="col">
<Editor />
</div>
<el-divider class="q-ma-none" style="height: 100%;" direction="vertical" />
<div class="col q-pa-lg"></div>
</div>
</div>
</el-drawer>
</template>
<script setup lang="ts">
import { ref, watch } from 'vue'
import Editor from './Editor.vue'
const props = withDefaults(defineProps<{
value: string
title: string,
visible: boolean
}>(), {
title: ''
})
const emit = defineEmits<{
(event: 'update:value', payload: string): void,
(event: 'update:visible', payload: boolean):void
}>()
const editorVisible = ref(props.visible)
const content = ref(props.value)
const closeHandle = ()=>{
emit('update:visible',false)
}
const getContent = (val:any) => {
console.log(val)
}
watch(()=>props.visible,()=>{
editorVisible.value = props.visible
})
watch(()=>props.value,()=>{
content.value = props.value
})
</script>
\ No newline at end of file
<template>
<div class="rounded q-pa-lg bg-white border-light col full-height">
<div class="row">
<div class="card-h2 col">行程介绍</div>
<el-button color="#626aef" style="border-radius: 3px;" size="small" @click="()=>editorVisible=true">编辑</el-button>
</div>
<div class="q-mt-lg">
<div v-html="itinerary" v-if="itinerary!=''"></div>
<el-empty description="请点击右上角“编辑”按钮进行添加 ~" />
</div>
</div>
<text-editor v-model:value="itinerary" v-model:visible="editorVisible" title="编辑行程介绍"></text-editor>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import TextEditor from './TextEditor.vue';
const itinerary = ref('')
const editorVisible = ref(false)
</script>
<style>
</style>
\ No newline at end of file
......@@ -33,11 +33,17 @@ module.exports = {
// cache: false,
// fix: false,
// }),
// AutoImport({
// resolvers: [ElementPlusResolver()],
// }),
// Components({
// resolvers: [ElementPlusResolver()],
// })
AutoImport({
resolvers: [ElementPlusResolver()],
resolvers: [ElementPlusResolver({ importStyle: false })],
}),
Components({
resolvers: [ElementPlusResolver()],
resolvers: [ElementPlusResolver({ importStyle: false })],
})
],
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment