提交前端代码
@ -40,8 +40,7 @@ public class ApplicationController {
|
|||||||
* 新增应用
|
* 新增应用
|
||||||
*/
|
*/
|
||||||
@PostMapping("/save")
|
@PostMapping("/save")
|
||||||
public ResponseResult save(@RequestBody Application application) {
|
public ResponseResult save(@RequestBody Application application) {return ResponseResult.successData(applicationService.save(application));
|
||||||
return ResponseResult.successData(applicationService.save(application));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -8,6 +8,8 @@ import io.gisbi.config.ResponseResult;
|
|||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@ -29,8 +31,10 @@ public class ModuleController {
|
|||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public ResponseResult page(@RequestParam String appId) {
|
public ResponseResult page(@RequestParam String appId) {
|
||||||
LambdaQueryWrapper<Module> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<Module> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(Module::getAppId,appId);
|
||||||
wrapper.orderByDesc(Module::getPid,Module::getSort); // 按编码倒序排列
|
wrapper.orderByDesc(Module::getPid,Module::getSort); // 按编码倒序排列
|
||||||
return ResponseResult.successData(moduleService.list(wrapper));
|
List<Module> list = moduleService.list(wrapper);
|
||||||
|
return ResponseResult.successData(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增模块
|
// 新增模块
|
||||||
|
8
core/core-frontend/src/api/application/application.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export const applicationPage = (params) => request.get({ url: '/application/page',params })
|
||||||
|
export const applicationAdd = data => request.post({ url: '/application/save', data })
|
||||||
|
|
||||||
|
export const findApplicationById = async id =>
|
||||||
|
request.get({ url: `/application/${id}` })
|
||||||
|
|
15
core/core-frontend/src/api/application/module.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export const moduleList = (params) => request.get({ url: '/application/module/list',params })
|
||||||
|
export const moduleAdd = data => request.post({ url: '/application/module/save', data })
|
||||||
|
|
||||||
|
export const moduleUpdate = data => request.post({ url: '/application/module/update', data })
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// export const findApplicationById = async id =>
|
||||||
|
// request.get({ url: `/application/module/${id}` })
|
||||||
|
|
||||||
|
export const moduleDel = async id =>
|
||||||
|
request.delete({ url: `/application/module/${id}` })
|
BIN
core/core-frontend/src/assets/newimg/avatar.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
1
core/core-frontend/src/assets/newimg/avatar.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1741779170794" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6664" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M9.67111111 511.73831111c0 277.34471111 224.98417778 502.32888889 502.32888889 502.32888889s502.32888889-224.98417778 502.32888889-502.32888889S789.34471111 9.40942222 512 9.40942222 9.67111111 234.38222222 9.67111111 511.73831111z" fill="#D7E3F8" p-id="6665"></path><path d="M436.31502222 648.07822222h157.5936v130.11626667H435.79164445l0.52337777-130.11626667zM336.25884445 473.89582222c0 23.1424-13.99466667 41.89297778-31.61884445 41.89297778S273.06666667 497.03822222 273.06666667 473.89582222s13.99466667-41.8816 31.61884444-41.8816 31.61884445 18.75057778 31.61884444 41.8816M757.76 473.31555555c0 23.13102222-14.00604445 41.8816-31.63022222 41.8816S694.4768 496.41244445 694.4768 473.31555555s13.99466667-41.89297778 31.61884445-41.89297777S757.76 450.7648 757.76 473.31555555" fill="#FFFFFF" p-id="6666"></path><path d="M436.31502222 666.73777778s30.07146667 15.55342222 73.09084445 15.55342222c50.80177778 2.08213333 83.97937778-15.03004445 83.97937778-15.03004445v15.55342223s-55.97866667 30.06008889-80.86186667 30.06008889c-25.40657778 0-76.23111111-35.27111111-76.23111111-35.27111112z" fill="#D7E3F8" p-id="6667"></path><path d="M878.50097778 854.91484445c-25.3952-20.21831111-70.76977778-77.36888889-118.46542223-100.19271112-77.24373333-37.84248889-166.65031111-26.80604445-166.6503111-26.80604444V730.45333333c-6.22364445 6.74702222-36.80711111 36.80711111-78.27911112 36.80711112-40.96 0-72.05546667-27.98933333-78.79111111-35.27111112l-0.52337777-3.62951111s-98.62257778-11.54844445-176.35555556 26.29404445c-52.87253333 25.92995555-90.58986667 82.56853333-113.40231111 102.26346666a498.34666667 498.34666667 0 0 0 365.44284444 157.67324445c145.15768889-0.52337778 275.78595555-61.69031111 367.02435556-159.67573333z m0 0" fill="#739DE6" p-id="6668"></path><path d="M720.91875555 439.79662222c0 53.62346667-16.22471111 126.29333333-43.4631111 165.55804445-37.54666667 54.11271111-122.22008889 79.12106667-161.82613334 79.12106666-40.0384 0-116.224-20.40035555-153.81617778-68.26666666-32.03982222-40.81208889-51.47306667-117.72586667-51.47306666-176.35555556 0-127.52213333 91.76177778-231.20782222 205.28924444-231.20782222s205.28924445 103.68568889 205.28924444 231.20782222" fill="#FFFFFF" p-id="6669"></path><path d="M739.06631111 333.9264S737.28 254.09991111 691.76888889 197.21102222c-31.78951111-39.7312-133.12-68.57386667-205.68746667-62.86222222 0 0-142.14257778 5.68888889-145.1008 100.12444445-25.97546667 15.55342222-52.66773333 42.38222222-55.52355555 87.47235555-5.68888889 90.7264 10.36515555 114.57422222 10.36515555 114.57422222s22.81244445 0 28.52408889 34.2016c0 0 10.36515555 6.23502222 11.37777778 0 1.54737778-10.36515555-9.32977778-60.13155555 12.43591111-105.74506667 2.68515555-5.76853333 5.37031111-10.91128889 7.96444445-15.49653333 71.2704-79.28035555 280.31431111-71.0656 329.29564444 15.62168889a104.35697778 104.35697778 0 0 1 4.33493333 18.5344c4.14151111 29.58222222 9.32977778 85.53813333 9.32977778 85.53813334s7.77102222 5.17688889 12.95928889-7.25902223c5.18826667-12.95928889 4.15288889-25.3952 8.81777778-29.02471111 26.48746667-17.60142222 19.75182222-91.18151111 18.20444444-98.96391111z" fill="#9BB9ED" p-id="6670"></path></svg>
|
After Width: | Height: | Size: 3.4 KiB |
BIN
core/core-frontend/src/assets/newimg/exit.png
Normal file
After Width: | Height: | Size: 570 B |
BIN
core/core-frontend/src/assets/newimg/icon/add.png
Normal file
After Width: | Height: | Size: 238 B |
BIN
core/core-frontend/src/assets/newimg/icon/bianji.png
Normal file
After Width: | Height: | Size: 379 B |
BIN
core/core-frontend/src/assets/newimg/icon/caidan.png
Normal file
After Width: | Height: | Size: 420 B |
BIN
core/core-frontend/src/assets/newimg/icon/del.png
Normal file
After Width: | Height: | Size: 497 B |
BIN
core/core-frontend/src/assets/newimg/icon/dian.png
Normal file
After Width: | Height: | Size: 274 B |
BIN
core/core-frontend/src/assets/newimg/icon/edit.png
Normal file
After Width: | Height: | Size: 399 B |
BIN
core/core-frontend/src/assets/newimg/icon/export.png
Normal file
After Width: | Height: | Size: 426 B |
BIN
core/core-frontend/src/assets/newimg/icon/fuwu.png
Normal file
After Width: | Height: | Size: 705 B |
BIN
core/core-frontend/src/assets/newimg/icon/permission.png
Normal file
After Width: | Height: | Size: 565 B |
BIN
core/core-frontend/src/assets/newimg/icon/release.png
Normal file
After Width: | Height: | Size: 607 B |
BIN
core/core-frontend/src/assets/newimg/logo.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
core/core-frontend/src/assets/newimg/logosmall.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
core/core-frontend/src/assets/newimg/u103.png
Normal file
After Width: | Height: | Size: 310 B |
BIN
core/core-frontend/src/assets/newimg/u110.png
Normal file
After Width: | Height: | Size: 82 KiB |
BIN
core/core-frontend/src/assets/newimg/u166.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
core/core-frontend/src/assets/newimg/u17.png
Normal file
After Width: | Height: | Size: 143 B |
BIN
core/core-frontend/src/assets/newimg/u22.png
Normal file
After Width: | Height: | Size: 605 B |
BIN
core/core-frontend/src/assets/newimg/u42.png
Normal file
After Width: | Height: | Size: 473 B |
BIN
core/core-frontend/src/assets/newimg/u43.png
Normal file
After Width: | Height: | Size: 443 B |
BIN
core/core-frontend/src/assets/newimg/u47.png
Normal file
After Width: | Height: | Size: 439 B |
BIN
core/core-frontend/src/assets/newimg/u56.png
Normal file
After Width: | Height: | Size: 557 B |
BIN
core/core-frontend/src/assets/newimg/u594.png
Normal file
After Width: | Height: | Size: 346 B |
BIN
core/core-frontend/src/assets/newimg/u62.png
Normal file
After Width: | Height: | Size: 457 B |
BIN
core/core-frontend/src/assets/newimg/u74.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
core/core-frontend/src/assets/newimg/u76.png
Normal file
After Width: | Height: | Size: 337 B |
17
core/core-frontend/src/assets/svg/DataEase1.svg
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<svg width="881" height="225" viewBox="0 0 881 225" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M97.24 3.0199L191.9 57.6599V166.94L97.24 221.59L2.59 166.94V57.6399L97.24 3V3.0199ZM97.24 0L0 56.1399V168.42L97.24 224.56L194.48 168.42V56.1699L97.24 0.0299072V0Z" fill="#426DF2"/>
|
||||||
|
<path d="M599.14 100.66H629.87L625.87 122.06H599.14V147.27H635.82L637.46 170.42H568.96V53.0599H637.5L635.86 75.7599H599.14V100.66Z" fill="#426DF2"/>
|
||||||
|
<path d="M409.65 118.75V170.25H387.14L387.04 165.04C379.167 169.133 371.477 171.177 363.97 171.17H361.74C354.027 171.17 347.897 168.207 343.35 162.28C340.339 157.654 338.766 152.239 338.83 146.72V146.11C338.83 135.99 342.38 129.27 349.48 125.95C352.387 124.01 359.77 123.04 371.63 123.04H383.74V120.21C383.74 114.383 382.897 111.05 381.21 110.21C379.37 108.83 376.127 108.14 371.48 108.14H347.34L347.75 87.5L375.54 86.75C392.04 86.75 402.26 90.8399 406.2 99.0199C408.5 103.747 409.65 110.323 409.65 118.75ZM366.31 140.14C365.54 141.05 364.73 144.02 364.73 146.14C364.73 150.74 367.063 153.04 371.73 153.04C374.537 153.04 378.537 151.89 383.73 149.59V138.34C383.73 138.34 369.1 136.81 366.31 140.14Z" fill="#426DF2"/>
|
||||||
|
<path d="M559.82 118.75V170.25H537.32L537.21 165.04C529.344 169.133 521.654 171.177 514.14 171.17H511.92C504.2 171.17 498.067 168.207 493.52 162.28C490.513 157.652 488.94 152.239 489 146.72V146.11C489 135.99 492.55 129.27 499.65 125.95C502.57 124.01 509.954 123.04 521.8 123.04H533.91V120.21C533.91 114.383 533.067 111.05 531.38 110.21C529.54 108.83 526.297 108.14 521.65 108.14H497.55L497.96 87.5L525.75 86.75C542.264 86.75 552.484 90.8399 556.41 99.0199C558.684 103.747 559.82 110.323 559.82 118.75ZM516.52 140.14C515.75 141.05 514.95 144.02 514.95 146.14C514.95 150.74 517.284 153.04 521.95 153.04C524.764 153.04 528.764 151.89 533.95 149.59V138.34C533.95 138.34 519.32 136.81 516.52 140.14Z" fill="#426DF2"/>
|
||||||
|
<path d="M716.951 118.75V170.25H694.451L694.341 165.04C686.467 169.133 678.777 171.177 671.271 171.17H669.051C661.331 171.17 655.197 168.207 650.651 162.28C647.643 157.652 646.071 152.239 646.131 146.72V146.11C646.131 135.99 649.684 129.27 656.791 125.95C659.704 124.01 667.087 123.04 678.941 123.04H691.041V120.21C691.041 114.383 690.201 111.05 688.521 110.21C686.681 108.83 683.434 108.14 678.781 108.14H654.641L655.051 87.5L682.841 86.75C699.347 86.75 709.567 90.8399 713.501 99.0199C715.801 103.747 716.951 110.323 716.951 118.75ZM673.611 140.14C672.841 141.05 672.041 144.02 672.041 146.14C672.041 150.74 674.374 153.04 679.041 153.04C681.854 153.04 685.854 151.89 691.041 149.59V138.34C691.041 138.34 676.411 136.81 673.611 140.14Z" fill="#426DF2"/>
|
||||||
|
<path d="M477.43 170.42H464.43C461.79 170.42 459.53 170.35 457.65 170.19C453.394 170.023 449.206 169.067 445.3 167.37C441.463 165.56 438.331 162.533 436.39 158.76C434.097 154.393 432.953 148.55 432.96 141.23L432.81 108.31H420.31V86.9399H432.82V60.34L458.42 65.2699V86.9399H477.93L475.26 108.35H458.38V139.83C458.38 140.54 458.38 141.15 458.46 141.66C458.518 142.772 458.723 143.872 459.07 144.93C459.478 145.99 460.133 146.937 460.979 147.693C461.826 148.45 462.841 148.994 463.94 149.28C466.57 150.273 469.309 150.944 472.1 151.28C472.71 151.38 473.34 151.46 474 151.51L475.6 151.66L477.43 151.74V170.42Z" fill="#426DF2"/>
|
||||||
|
<path d="M878.59 121.25V136.05H831.47L831.37 138.74C831.37 144.38 833.62 147.65 837.08 148.87C840.067 149.667 843.149 150.05 846.24 150.01H848.3C857.46 150.01 870.84 147.95 880.45 146.01H880.6L876.73 166.92C876.73 167.18 872.23 169.09 863.48 170.51C857.195 171.161 850.879 171.469 844.56 171.43C826.247 171.43 814.42 165.247 809.08 152.88C807.08 148 805.26 142.88 805.26 137.57V117.57C805.26 102.92 812.26 93.1599 824.57 88.3199C830.215 86.5087 836.112 85.6074 842.04 85.6499C859.294 85.6499 870.487 91.2732 875.62 102.52C877.6 106.913 878.59 113.157 878.59 121.25ZM853.9 117.35C853.9 111.56 852.17 107.68 849.68 106.61C847.8 105.34 844.89 105.15 842.19 105.15C835.33 105.15 831.897 108.38 831.89 114.84L831.47 118.73H853.9V117.35Z" fill="#426DF2"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M276.98 51.8799H231.71V170.42H276.98C305.82 170.42 329.21 150.88 329.21 126.79V95.5199C329.21 71.4299 305.82 51.9399 276.98 51.8799ZM300.12 127.81C300.12 138.5 289.77 147.16 276.98 147.17H261.87V75.1699H276.98C289.77 75.1699 300.12 83.8499 300.12 94.5299V127.81Z" fill="#426DF2"/>
|
||||||
|
<path d="M758.75 172.74C753.95 172.74 748.683 172.463 742.95 171.91C740.75 171.69 738.49 171.44 736.17 171.14L730.74 170.37L727.74 147.75L733.57 150L740.76 151.82C743.61 152.22 746.29 152.53 748.82 152.75C751.827 153.01 754.55 153.14 756.99 153.14C765.86 153.14 770.99 152.93 772.37 149.3C773.14 147.79 773.1 143.68 772.25 142.3C771.4 140.92 769.58 139.36 766.82 138.23C765.64 137.75 764.15 137.23 762.36 136.74L757.11 135.31C754.8 134.8 752.72 134.31 750.89 133.77C748.53 133.103 746.373 132.407 744.42 131.68C740.3 130.257 736.475 128.095 733.13 125.3C730.595 122.881 728.87 119.737 728.19 116.3C727.652 113.45 727.591 110.53 728.01 107.66C729.11 98.3266 733.523 91.9266 741.25 88.46C744.558 86.9462 748.073 85.9351 751.68 85.46C753.27 85.24 755.08 85.0599 757.11 84.9099L762.36 84.58H765.9C769.9 84.58 774.333 84.8 779.2 85.24L785.12 85.84L790.12 86.5L792.2 106.83C788.91 106.065 785.568 105.55 782.2 105.29C777.517 104.798 772.807 104.618 768.1 104.75C758.82 104.75 753.37 104.24 751.74 108.02C751.436 108.737 751.29 109.511 751.313 110.289C751.335 111.068 751.525 111.832 751.87 112.53C752.763 114.183 754.713 115.633 757.72 116.88C758.98 117.4 760.567 117.95 762.48 118.53L774.56 121.78C776.88 122.447 778.957 123.113 780.79 123.78C784.479 125.024 787.887 126.981 790.82 129.54C793.484 131.926 795.302 135.112 796 138.62C796.532 142.304 796.596 146.04 796.19 149.74C795.09 158.98 790.673 165.38 782.94 168.94C779.643 170.483 776.123 171.496 772.51 171.94C770.92 172.16 769.11 172.35 767.08 172.49L762.38 172.77L758.75 172.74Z" fill="#426DF2"/>
|
||||||
|
<path d="M97.2405 36.2899L163.08 74.2899V150.29L97.2405 188.29L31.4105 150.29V74.2899L97.2405 36.2899ZM97.2405 15.8799L13.7305 64.09V160.53L97.2405 208.74L180.76 160.53V64.09L97.2405 15.8799Z" fill="#426DF2"/>
|
||||||
|
<path d="M56.82 113.31C55.1193 113.318 53.464 112.762 52.1135 111.729C50.7631 110.695 49.7939 109.242 49.3581 107.598C48.9222 105.954 49.0443 104.212 49.7052 102.645C50.3662 101.078 51.5285 99.7752 53.01 98.94L80.22 83.24C81.9814 82.2591 84.0579 82.0102 86.0013 82.547C87.9447 83.0839 89.599 84.3633 90.6072 86.1093C91.6154 87.8553 91.8966 89.9277 91.3901 91.8792C90.8836 93.8307 89.63 95.5047 87.9 96.5399L60.68 112.24C59.5115 112.934 58.179 113.303 56.82 113.31Z" fill="#00BFFF"/>
|
||||||
|
<path d="M104.99 85.5399C103.3 85.5395 101.657 84.9815 100.316 83.9524C98.9752 82.9233 98.0113 81.4805 97.5737 79.8478C97.1362 78.2151 97.2496 76.4837 97.8962 74.922C98.5428 73.3603 99.6866 72.0555 101.15 71.21L111.15 65.47C112.025 64.9301 112.999 64.5713 114.015 64.4148C115.031 64.2583 116.068 64.3074 117.064 64.5591C118.061 64.8108 118.997 65.2599 119.817 65.8799C120.636 66.4999 121.323 67.2782 121.837 68.1686C122.35 69.059 122.68 70.0434 122.806 71.0635C122.932 72.0836 122.852 73.1187 122.571 74.1073C122.289 75.0959 121.812 76.0181 121.168 76.819C120.524 77.6199 119.726 78.2833 118.82 78.7699L108.82 84.5099C107.657 85.1848 106.335 85.5402 104.99 85.5399Z" fill="#00BFFF"/>
|
||||||
|
<path d="M68.2004 136.75C66.5092 136.752 64.8648 136.195 63.5222 135.167C62.1796 134.139 61.214 132.696 60.7752 131.063C60.3364 129.429 60.449 127.697 61.0954 126.134C61.7418 124.572 62.886 123.266 64.3504 122.42L64.6104 122.27C66.3687 121.314 68.4306 121.083 70.3571 121.625C72.2835 122.167 73.9223 123.44 74.9246 125.172C75.9269 126.904 76.2135 128.959 75.7233 130.899C75.2332 132.839 74.005 134.512 72.3004 135.56L72.0404 135.71C70.8745 136.389 69.5497 136.748 68.2004 136.75Z" fill="#00BFFF"/>
|
||||||
|
<path d="M89.1303 124.94C87.4407 124.942 85.7974 124.387 84.455 123.361C83.1127 122.335 82.1463 120.895 81.7054 119.264C81.2646 117.632 81.374 115.901 82.0167 114.339C82.6594 112.776 83.7995 111.469 85.2604 110.62L122.43 88.94C123.303 88.4097 124.272 88.0586 125.281 87.9071C126.291 87.7557 127.32 87.807 128.309 88.058C129.299 88.3091 130.228 88.7549 131.043 89.3693C131.858 89.9837 132.543 90.7544 133.057 91.6364C133.57 92.5184 133.903 93.494 134.036 94.5061C134.168 95.5183 134.097 96.5466 133.828 97.531C133.558 98.5155 133.095 99.4364 132.465 100.24C131.835 101.043 131.052 101.713 130.16 102.21L92.9903 123.86C91.8223 124.556 90.4901 124.929 89.1303 124.94Z" fill="#00BFFF"/>
|
||||||
|
<path d="M79.5502 160.18C77.8599 160.18 76.217 159.622 74.8761 158.592C73.5352 157.563 72.5713 156.121 72.1338 154.488C71.6963 152.855 71.8096 151.124 72.4562 149.562C73.1028 148 74.2466 146.696 75.7102 145.85L133.82 112.34C135.585 111.323 137.682 111.049 139.649 111.577C141.617 112.106 143.293 113.395 144.31 115.16C145.327 116.925 145.602 119.022 145.073 120.989C144.544 122.956 143.255 124.633 141.49 125.65L83.3902 159.15C82.2237 159.827 80.8987 160.182 79.5502 160.18Z" fill="#426DF2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 8.7 KiB |
21
core/core-frontend/src/assets/svg/logo1.svg
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<svg width="134" height="34" viewBox="0 0 134 34" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g id="logo">
|
||||||
|
<path id="Vector" d="M15.5761 0.452676L29.7654 8.64309V25.0239L15.5761 33.2158L1.38824 25.0239V8.64009L15.5761 0.449693V0.452676ZM15.5761 0L1 8.41524V25.2458L15.5761 33.661L30.1521 25.2458V8.41975L15.5761 0.00448303V0Z" />
|
||||||
|
<g id="Group 11">
|
||||||
|
<path id="Vector_2" d="M90.8091 15.0902H95.4154L94.8158 18.298H90.8091V22.0769H96.3073L96.5532 25.5471H86.2852V7.95508H96.5591L96.3133 11.3577H90.8091V15.0902Z" />
|
||||||
|
<path id="Vector_3" d="M62.4051 17.8006V25.5204H59.0309L59.0159 24.7394C57.8357 25.353 56.683 25.6593 55.5578 25.6583H55.2235C54.0673 25.6583 53.1484 25.2141 52.4669 24.3257C52.0155 23.6322 51.7798 22.8206 51.7893 21.9933V21.9018C51.7893 20.3849 52.3215 19.3776 53.3858 18.8799C53.8215 18.5891 54.9282 18.4437 56.706 18.4437H58.5213V18.0195C58.5213 17.1461 58.3948 16.6464 58.142 16.5205C57.8662 16.3136 57.38 16.2102 56.6835 16.2102H53.065L53.1264 13.1163L57.2921 13.0039C59.7654 13.0039 61.2974 13.617 61.888 14.8431C62.2327 15.5517 62.4051 16.5375 62.4051 17.8006ZM55.9085 21.0069C55.7931 21.1433 55.6717 21.5885 55.6717 21.9063C55.6717 22.5958 56.0215 22.9406 56.721 22.9406C57.1417 22.9406 57.7413 22.7682 58.5198 22.4235V20.7371C58.5198 20.7371 56.3267 20.5078 55.9085 21.0069Z" />
|
||||||
|
<path id="Vector_4" d="M84.9158 17.8006V25.5204H81.5431L81.5266 24.7394C80.3474 25.353 79.1947 25.6593 78.0685 25.6583H77.7357C76.5785 25.6583 75.6591 25.2141 74.9776 24.3257C74.5268 23.632 74.2911 22.8205 74.3001 21.9933V21.9018C74.3001 20.3849 74.8322 19.3776 75.8965 18.8799C76.3342 18.5891 77.4409 18.4437 79.2167 18.4437H81.032V18.0195C81.032 17.1461 80.9055 16.6464 80.6527 16.5205C80.3769 16.3136 79.8907 16.2102 79.1942 16.2102H75.5817L75.6431 13.1163L79.8088 13.0039C82.2841 13.0039 83.8161 13.617 84.4047 14.8431C84.7454 15.5517 84.9158 16.5375 84.9158 17.8006ZM78.4252 21.0069C78.3098 21.1433 78.1899 21.5885 78.1899 21.9063C78.1899 22.5958 78.5397 22.9406 79.2392 22.9406C79.6609 22.9406 80.2605 22.7682 81.038 22.4235V20.7371C81.038 20.7371 78.845 20.5078 78.4252 21.0069Z" />
|
||||||
|
<path id="Vector_5" d="M108.469 17.8006V25.5204H105.096L105.079 24.7394C103.899 25.353 102.746 25.6593 101.621 25.6583H101.288C100.131 25.6583 99.2119 25.2141 98.5303 24.3257C98.0795 23.632 97.8438 22.8205 97.8528 21.9933V21.9018C97.8528 20.3849 98.3854 19.3776 99.4507 18.8799C99.8874 18.5891 100.994 18.4437 102.771 18.4437H104.585V18.0195C104.585 17.1461 104.459 16.6464 104.207 16.5205C103.931 16.3136 103.444 16.2102 102.747 16.2102H99.1284L99.1899 13.1163L103.356 13.0039C105.83 13.0039 107.362 13.617 107.951 14.8431C108.296 15.5517 108.469 16.5375 108.469 17.8006ZM101.972 21.0069C101.857 21.1433 101.737 21.5885 101.737 21.9063C101.737 22.5958 102.086 22.9406 102.786 22.9406C103.208 22.9406 103.807 22.7682 104.585 22.4235V20.7371C104.585 20.7371 102.392 20.5078 101.972 21.0069Z" />
|
||||||
|
<path id="Vector_6" d="M72.5651 25.5457H70.6164C70.2207 25.5457 69.8819 25.5352 69.6001 25.5112C68.9622 25.4862 68.3344 25.3429 67.7489 25.0885C67.1737 24.8171 66.7042 24.3634 66.4133 23.7978C66.0695 23.1433 65.8981 22.2674 65.8991 21.1702L65.8767 16.2355H64.0029V13.0322H65.8782V9.04492L69.7155 9.78391V13.0322H72.64L72.2398 16.2415H69.7095V20.9603C69.7095 21.0667 69.7095 21.1582 69.7215 21.2346C69.7303 21.4013 69.761 21.5661 69.813 21.7248C69.8741 21.8836 69.9722 22.0256 70.0992 22.139C70.2261 22.2524 70.3783 22.3339 70.543 22.3768C70.9371 22.5256 71.3478 22.6263 71.7661 22.6766C71.8576 22.6916 71.952 22.7036 72.0509 22.7111L72.2908 22.7336L72.5651 22.7456V25.5457Z" />
|
||||||
|
<path id="Vector_7" d="M132.698 18.1764V20.3949H125.635L125.62 20.7981C125.62 21.6436 125.957 22.1337 126.476 22.3166C126.924 22.4361 127.386 22.4936 127.849 22.4875H128.158C129.531 22.4875 131.536 22.1787 132.977 21.8879H132.999L132.419 25.0223C132.419 25.0612 131.745 25.3475 130.433 25.5604C129.491 25.6581 128.544 25.7041 127.597 25.6983C124.852 25.6983 123.079 24.7714 122.279 22.9177C121.979 22.1862 121.706 21.4187 121.706 20.6228V17.6248C121.706 15.4288 122.755 13.9658 124.601 13.2403C125.447 12.9688 126.331 12.8337 127.219 12.8401C129.806 12.8401 131.483 13.683 132.253 15.3688C132.55 16.0274 132.698 16.9633 132.698 18.1764ZM128.997 17.5918C128.997 16.7239 128.738 16.1423 128.365 15.9819C128.083 15.7916 127.647 15.7631 127.242 15.7631C126.213 15.7631 125.699 16.2472 125.698 17.2156L125.635 17.7987H128.997V17.5918Z" />
|
||||||
|
<path id="Vector_8" fill-rule="evenodd" clip-rule="evenodd" d="M42.5183 7.77734H35.7324V25.5462H42.5183C46.8413 25.5462 50.3475 22.6172 50.3475 19.0062V14.3189C50.3475 10.7078 46.8413 7.78634 42.5183 7.77734ZM45.9869 19.1591C45.9869 20.7615 44.4355 22.0596 42.5183 22.0611H40.2533V11.2685H42.5183C44.4355 11.2685 45.9869 12.5696 45.9869 14.1705V19.1591Z" />
|
||||||
|
<path id="Vector_9" d="M114.735 25.8947C114.015 25.8947 113.226 25.8532 112.367 25.7703C112.037 25.7373 111.698 25.6998 111.35 25.6548L110.536 25.5394L110.087 22.1487L110.961 22.486L112.038 22.7588C112.466 22.8188 112.867 22.8652 113.246 22.8982C113.697 22.9372 114.105 22.9567 114.471 22.9567C115.801 22.9567 116.57 22.9252 116.777 22.3811C116.892 22.1547 116.886 21.5386 116.759 21.3318C116.631 21.1249 116.358 20.8911 115.945 20.7217C115.768 20.6498 115.544 20.5718 115.276 20.4984L114.489 20.284C114.143 20.2075 113.831 20.1341 113.557 20.0531C113.203 19.9532 112.88 19.8488 112.587 19.7399C111.969 19.5266 111.396 19.2025 110.895 18.7835C110.515 18.4209 110.256 17.9497 110.154 17.4344C110.073 17.0072 110.064 16.5695 110.127 16.1393C110.292 14.7403 110.954 13.7809 112.112 13.2613C112.608 13.0344 113.135 12.8828 113.675 12.8116C113.914 12.7786 114.185 12.7516 114.489 12.7291L115.276 12.6797H115.807C116.406 12.6797 117.071 12.7127 117.8 12.7786L118.688 12.8686L119.437 12.9675L119.749 16.0149C119.256 15.9002 118.755 15.823 118.25 15.7841C117.548 15.7104 116.842 15.6834 116.137 15.7031C114.745 15.7031 113.929 15.6267 113.684 16.1933C113.639 16.3007 113.617 16.4168 113.62 16.5334C113.623 16.6501 113.652 16.7647 113.704 16.8693C113.838 17.1172 114.13 17.3345 114.581 17.5214C114.769 17.5993 115.007 17.6818 115.294 17.7687L117.105 18.2559C117.453 18.3558 117.764 18.4557 118.039 18.5557C118.592 18.7421 119.102 19.0355 119.542 19.4191C119.942 19.7768 120.214 20.2544 120.319 20.7802C120.398 21.3324 120.408 21.8924 120.347 22.447C120.182 23.8321 119.52 24.7914 118.361 25.3251C117.867 25.5564 117.339 25.7082 116.798 25.7748C116.559 25.8077 116.288 25.8362 115.984 25.8572L115.279 25.8992L114.735 25.8947Z" />
|
||||||
|
</g>
|
||||||
|
<path id="Vector_10" d="M15.5766 5.44028L25.4458 11.1364V22.5286L15.5766 28.2247L5.70879 22.5286V11.1364L15.5766 5.44028ZM15.5766 2.38086L3.05859 9.60744V24.0636L15.5766 31.2902L28.096 24.0636V9.60744L15.5766 2.38086Z" />
|
||||||
|
<path id="Vector_11" d="M9.51732 16.9849C9.2624 16.9862 9.01426 16.9028 8.81184 16.7478C8.60941 16.5929 8.46413 16.3751 8.3988 16.1287C8.33347 15.8823 8.35177 15.6212 8.45084 15.3863C8.54991 15.1514 8.72414 14.956 8.94621 14.8309L13.0249 12.4775C13.289 12.3304 13.6002 12.2931 13.8915 12.3736C14.1828 12.4541 14.4308 12.6458 14.582 12.9076C14.7331 13.1693 14.7752 13.4799 14.6993 13.7725C14.6234 14.065 14.4355 14.3159 14.1761 14.4711L10.0959 16.8245C9.92078 16.9285 9.72103 16.9839 9.51732 16.9849Z" />
|
||||||
|
<path id="Vector_12" d="M16.7379 12.8226C16.4845 12.8225 16.2382 12.7389 16.0372 12.5846C15.8362 12.4304 15.6917 12.2141 15.6261 11.9694C15.5606 11.7246 15.5776 11.4651 15.6745 11.231C15.7714 10.9969 15.9429 10.8013 16.1622 10.6746L17.6612 9.81416C17.7923 9.73323 17.9384 9.67945 18.0906 9.65599C18.2429 9.63254 18.3984 9.6399 18.5477 9.67762C18.6971 9.71534 18.8374 9.78267 18.9603 9.87561C19.0832 9.96855 19.1862 10.0852 19.2631 10.2187C19.3401 10.3521 19.3895 10.4997 19.4084 10.6526C19.4273 10.8055 19.4153 10.9607 19.3731 11.1089C19.331 11.2571 19.2595 11.3953 19.1629 11.5154C19.0663 11.6354 18.9466 11.7348 18.8109 11.8078L17.312 12.6682C17.1375 12.7694 16.9395 12.8226 16.7379 12.8226Z" />
|
||||||
|
<path id="Vector_13" d="M11.2227 20.4977C10.9692 20.498 10.7228 20.4146 10.5215 20.2604C10.3203 20.1063 10.1755 19.89 10.1097 19.6452C10.044 19.4004 10.0608 19.1407 10.1577 18.9065C10.2546 18.6722 10.4261 18.4765 10.6456 18.3497L10.6846 18.3272C10.9482 18.184 11.2573 18.1493 11.546 18.2305C11.8348 18.3118 12.0805 18.5025 12.2307 18.7622C12.3809 19.0218 12.4239 19.3298 12.3504 19.6207C12.277 19.9115 12.0929 20.1622 11.8373 20.3193L11.7984 20.3418C11.6236 20.4436 11.425 20.4974 11.2227 20.4977Z" />
|
||||||
|
<path id="Vector_14" d="M14.3599 18.7279C14.1066 18.7283 13.8603 18.6451 13.6591 18.4913C13.4578 18.3375 13.313 18.1216 13.2469 17.8771C13.1808 17.6326 13.1972 17.3731 13.2936 17.1388C13.3899 16.9046 13.5608 16.7087 13.7798 16.5814L19.3515 13.3316C19.4822 13.2521 19.6275 13.1995 19.7788 13.1768C19.9301 13.1541 20.0844 13.1618 20.2327 13.1994C20.381 13.2371 20.5203 13.3039 20.6425 13.396C20.7647 13.4881 20.8673 13.6036 20.9443 13.7358C21.0213 13.868 21.0712 14.0143 21.0911 14.166C21.1109 14.3177 21.1003 14.4718 21.0599 14.6194C21.0195 14.767 20.95 14.905 20.8557 15.0254C20.7613 15.1459 20.6438 15.2463 20.5102 15.3208L14.9385 18.5661C14.7634 18.6704 14.5637 18.7263 14.3599 18.7279Z" />
|
||||||
|
<path id="Vector_15" d="M12.9244 24.0106C12.671 24.0106 12.4247 23.9269 12.2237 23.7727C12.0227 23.6184 11.8783 23.4021 11.8127 23.1574C11.7471 22.9126 11.7641 22.6531 11.861 22.419C11.9579 22.1849 12.1294 21.9893 12.3488 21.8626L21.0593 16.8395C21.3239 16.6871 21.6382 16.6459 21.9331 16.7252C22.228 16.8045 22.4793 16.9976 22.6318 17.2622C22.7842 17.5268 22.8253 17.8411 22.7461 18.136C22.6668 18.4309 22.4736 18.6822 22.209 18.8346L13.5 23.8562C13.3251 23.9576 13.1265 24.0109 12.9244 24.0106Z" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 9.4 KiB |
@ -134,6 +134,13 @@ export const routes: AppRouteRecordRaw[] = [
|
|||||||
meta: {},
|
meta: {},
|
||||||
component: () => import('@/custom-component/rich-text/DeRichTextView.vue')
|
component: () => import('@/custom-component/rich-text/DeRichTextView.vue')
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/module',
|
||||||
|
name: 'module',
|
||||||
|
hidden: true,
|
||||||
|
meta: {},
|
||||||
|
component: () => import('@/viewsnew/application/module/index.vue')
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/modify-pwd',
|
path: '/modify-pwd',
|
||||||
name: 'modify-pwd',
|
name: 'modify-pwd',
|
||||||
|
@ -667,3 +667,7 @@ strong {
|
|||||||
height: 22px !important;
|
height: 22px !important;
|
||||||
line-height: 22px !important;
|
line-height: 22px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ed-main{
|
||||||
|
overflow: hidden !important;
|
||||||
|
}
|
||||||
|
@ -14,3 +14,34 @@ export function validUsername(str) {
|
|||||||
export const PHONE_REGEX = '^1[3|4|5|7|8][0-9]{9}$'
|
export const PHONE_REGEX = '^1[3|4|5|7|8][0-9]{9}$'
|
||||||
|
|
||||||
export const EMAIL_REGEX = '^[a-zA-Z0-9_._-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$'
|
export const EMAIL_REGEX = '^[a-zA-Z0-9_._-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$'
|
||||||
|
|
||||||
|
|
||||||
|
export function publicTree(equiptrees:any,equipname:any) {
|
||||||
|
let arr:any = []
|
||||||
|
let newequiptree = JSON.parse(JSON.stringify(equiptrees))
|
||||||
|
if(equipname !=''&& equipname !=null){
|
||||||
|
newequiptree.forEach((item:any) => {
|
||||||
|
if(item.name.toLowerCase().indexOf(equipname.toLowerCase()) !== -1){
|
||||||
|
arr.push(item)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
arr = newequiptree
|
||||||
|
}
|
||||||
|
if(!Array.isArray(arr) || !arr.length) return;
|
||||||
|
let map:any = {};
|
||||||
|
arr.forEach(item => {//建立每个数组元素id和该对象的关系
|
||||||
|
map[item.id] = item //这里可以理解为浅拷贝,共享引用
|
||||||
|
})
|
||||||
|
let roots:any = [];
|
||||||
|
arr.forEach(item => {
|
||||||
|
const parent = map[item.pid];
|
||||||
|
if(parent){
|
||||||
|
(parent.children || (parent.children=[])).push(item);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
roots.push(item);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return roots
|
||||||
|
}
|
||||||
|
245
core/core-frontend/src/viewsnew/application/addpopup.vue
Normal file
@ -0,0 +1,245 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
import { useI18n } from '@/hooks/web/useI18n'
|
||||||
|
import { ref } from 'vue'
|
||||||
|
import { applicationAdd } from '@/api/application/application'
|
||||||
|
import { ElMessage } from 'element-plus-secondary'
|
||||||
|
// import type { UploadProps } from 'element-plus'
|
||||||
|
const emit = defineEmits(['closeClick'])
|
||||||
|
const { t } = useI18n()
|
||||||
|
const isDialog:any = ref(true)
|
||||||
|
const isSwitch:any = ref(false)
|
||||||
|
// const props = defineProps({
|
||||||
|
// dialogEditParams: {
|
||||||
|
// type: Boolean,
|
||||||
|
// default: false
|
||||||
|
// },
|
||||||
|
// paramsObj: {
|
||||||
|
// type: Object,
|
||||||
|
// default: () => {
|
||||||
|
// return {
|
||||||
|
// name: '',
|
||||||
|
// deType: 0
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// paramsObjRules: {
|
||||||
|
// type: Object,
|
||||||
|
// default: () => {
|
||||||
|
// return {
|
||||||
|
// name: []
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
const dataInfo:any = ref({
|
||||||
|
type: '01',
|
||||||
|
name: '',
|
||||||
|
description: '',
|
||||||
|
image: ''
|
||||||
|
})
|
||||||
|
const paramsObjRules = ref(
|
||||||
|
{
|
||||||
|
// name: [
|
||||||
|
// {
|
||||||
|
// required: true,
|
||||||
|
// message: "",
|
||||||
|
// trigger: 'change'
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
})
|
||||||
|
function paramsResetForm() {
|
||||||
|
emit('closeClick', false)
|
||||||
|
}
|
||||||
|
function saveParamsObj(){
|
||||||
|
|
||||||
|
if(isSwitch.value == false){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
isSwitch.value = true
|
||||||
|
applicationAdd(dataInfo.value).then(res => {
|
||||||
|
ElMessage.success('添加成功')
|
||||||
|
emit('closeClick', false)
|
||||||
|
}).catch(() => {
|
||||||
|
isSwitch.value = false
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
const handleAvatarSuccess = file => {
|
||||||
|
// if (file.raw!.type !== 'image/jpeg'&& file.raw!.type !== 'image/png') {
|
||||||
|
// // ElMessage.error('Avatar picture must be JPG format!')
|
||||||
|
// return false
|
||||||
|
// } else if (file.size / 1024 / 1024 > 2) {
|
||||||
|
// // ElMessage.error('Avatar picture size can not exceed 2MB!')
|
||||||
|
// return false
|
||||||
|
// }
|
||||||
|
const reader = new FileReader()
|
||||||
|
reader.onload = (e) => {
|
||||||
|
dataInfo.value.image = e.target.result // 这里会得到 base64 字符串
|
||||||
|
}
|
||||||
|
reader.readAsDataURL(file.raw) // 读取文件内容为 Data URL
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:title="'新建空白项目'"
|
||||||
|
v-model="isDialog"
|
||||||
|
width="570px"
|
||||||
|
class="create-project-dialog"
|
||||||
|
:before-close="paramsResetForm"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
ref="paramsObjRef"
|
||||||
|
:model="dataInfo"
|
||||||
|
:rules="paramsObjRules"
|
||||||
|
>
|
||||||
|
<el-form-item :label="'项目名称'" prop="name">
|
||||||
|
<el-input
|
||||||
|
:placeholder="'请输入'"
|
||||||
|
v-model="dataInfo.name"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item :label="'项目描述'" prop="name">
|
||||||
|
<el-input
|
||||||
|
:autosize="{ minRows: 4, maxRows: 8 }"
|
||||||
|
type="textarea"
|
||||||
|
:placeholder="'请输入'"
|
||||||
|
v-model="dataInfo.description"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item :label="'上传logo'" prop="name">
|
||||||
|
<el-upload
|
||||||
|
class="avatar-uploader"
|
||||||
|
action=""
|
||||||
|
:auto-upload="false"
|
||||||
|
accept=".jpeg,.jpg,.png,.gif,.svg"
|
||||||
|
:show-file-list="false"
|
||||||
|
:on-change="handleAvatarSuccess"
|
||||||
|
>
|
||||||
|
<img v-if="dataInfo.image != ''" :src="dataInfo.image" style="width: 223px;height: 120px;"/>
|
||||||
|
<div v-else class="update-avatar">
|
||||||
|
<img src="@/assets/newimg/u166.png" alt="">
|
||||||
|
<div class="update-avatar-text">点击上传图片</div>
|
||||||
|
</div>
|
||||||
|
<!-- <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon> -->
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<el-button secondary @click="paramsResetForm">{{ t('dataset.cancel') }} </el-button>
|
||||||
|
<el-button type="primary" @click="saveParamsObj">{{ t('dataset.confirm') }} </el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
:deep(.ed-input__wrapper){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(67, 67, 67,0);
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow:0 0 0 1px rgb(67, 67, 67) inset ;
|
||||||
|
}
|
||||||
|
:deep(.ed-input__wrapper:hover){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgb(67, 67, 67);
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow: 0 0 0 1px #0089ff inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
:deep(.ed-input__inner){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 0);
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
:deep(.ed-input-group__prepend){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
border: 0;
|
||||||
|
box-shadow:0 0 0 1px transparent ;
|
||||||
|
padding:0 10px;
|
||||||
|
padding-right: 0;
|
||||||
|
border-color: rgba(51, 51, 51, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.ed-textarea__inner){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 0);
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #fff;
|
||||||
|
box-shadow: 0 0 0 1px rgb(67, 67, 67) inset;
|
||||||
|
}
|
||||||
|
:deep(.ed-textarea__inner:hover){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 0);
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #fff;
|
||||||
|
box-shadow: 0 0 0 1px #0089ff inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.update-avatar{
|
||||||
|
width: 223px;
|
||||||
|
height: 120px;
|
||||||
|
background: inherit;
|
||||||
|
background-color: rgba(40, 40, 40, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(54, 54, 54, 1);
|
||||||
|
border-radius: 4px;
|
||||||
|
display: flex;
|
||||||
|
align-content: center;
|
||||||
|
justify-content: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
.update-avatar-text{
|
||||||
|
margin-top: 10px;
|
||||||
|
width: 100%;
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #969696;
|
||||||
|
text-align: center;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<style>
|
||||||
|
|
||||||
|
.create-project-dialog{
|
||||||
|
--ed-dialog-bg-color: rgba(33, 33, 33, 1);
|
||||||
|
}
|
||||||
|
.create-project-dialog .ed-dialog__title{
|
||||||
|
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #F2F4F5;
|
||||||
|
}
|
||||||
|
.create-project-dialog .ed-form-item__label{
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #D2D2D2;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
252
core/core-frontend/src/viewsnew/application/index.vue
Normal file
@ -0,0 +1,252 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref,onMounted } from 'vue'
|
||||||
|
import { applicationPage } from '@/api/application/application'
|
||||||
|
import Addpopup from './addpopup.vue'
|
||||||
|
import { useRouter } from 'vue-router'
|
||||||
|
const router = useRouter()
|
||||||
|
const isAppPopUp = ref(false) // 是否显示新增弹窗
|
||||||
|
const keywords:any =ref("") // 输入关键字
|
||||||
|
const dataList:any = ref([])
|
||||||
|
onMounted(()=>{
|
||||||
|
getDatasetList()
|
||||||
|
})
|
||||||
|
function getDatasetList() { // 获取数据集列表
|
||||||
|
let params ={
|
||||||
|
current:1,
|
||||||
|
size:100
|
||||||
|
}
|
||||||
|
applicationPage(params).then(res => {
|
||||||
|
dataList.value = res.data.data.records
|
||||||
|
})
|
||||||
|
}
|
||||||
|
function handleDatasetName() { // 关键字搜索
|
||||||
|
console.log(keywords.value)
|
||||||
|
}
|
||||||
|
const mask = ref(-1) // 遮罩层
|
||||||
|
function mouseover(index) { // 鼠标移入遮罩层
|
||||||
|
console.log(index)
|
||||||
|
mask.value = index
|
||||||
|
}
|
||||||
|
function mouseleave() { // 鼠标移出遮罩层
|
||||||
|
mask.value = -1
|
||||||
|
}
|
||||||
|
function closeClick(){ // 关闭新增弹窗
|
||||||
|
isAppPopUp.value = false
|
||||||
|
}
|
||||||
|
function addClick(){
|
||||||
|
isAppPopUp.value = true
|
||||||
|
}
|
||||||
|
function routerClick(item){
|
||||||
|
router.push({
|
||||||
|
path: '/module',
|
||||||
|
query: {
|
||||||
|
id: item.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<div class="common-layout">
|
||||||
|
<div>
|
||||||
|
<el-input
|
||||||
|
placeholder="请输入关键字"
|
||||||
|
class="keywordsClass"
|
||||||
|
maxlength="64"
|
||||||
|
v-model="keywords"
|
||||||
|
@blur="handleDatasetName"
|
||||||
|
>
|
||||||
|
<template #prepend>
|
||||||
|
<img src="@/assets/newimg/u62.png" alt="">
|
||||||
|
</template>
|
||||||
|
</el-input>
|
||||||
|
</div>
|
||||||
|
<div class="application_list_box">
|
||||||
|
<div class="application_add" @click="addClick">
|
||||||
|
<img src="@/assets/newimg/u103.png" alt="">
|
||||||
|
<div style="width: 100%;text-align: center;padding-top: 10px;">新建项目</div>
|
||||||
|
</div>
|
||||||
|
<div v-for="(item,index) in dataList" class="application_list" @mouseover="mouseover(index)" @mouseleave="mouseleave">
|
||||||
|
<img v-if="item.image!= null && item.image!= ''" :src="item.image" alt="" style="width: 267px;height: 155px;">
|
||||||
|
<img v-else src="@/assets/newimg/u110.png" alt="" style="width: 267px;height: 155px;">
|
||||||
|
|
||||||
|
<div class="application_list_text">{{ item.name }}</div>
|
||||||
|
<div class="mask_box" v-if="mask == index">
|
||||||
|
<div class="mask_box_img">
|
||||||
|
<img src="@/assets/newimg/icon/caidan.png" alt="" title="菜单配置">
|
||||||
|
<img src="@/assets/newimg/icon/edit.png" alt="" title="编辑数据">
|
||||||
|
<img src="@/assets/newimg/icon/fuwu.png" alt="" title="服务配置">
|
||||||
|
<img src="@/assets/newimg/icon/permission.png" alt="" title="权限设置">
|
||||||
|
<img src="@/assets/newimg/icon/export.png" alt="" title="导出">
|
||||||
|
<img src="@/assets/newimg/icon/release.png" alt="" title="发布">
|
||||||
|
<img src="@/assets/newimg/icon/del.png" alt="" title="删除">
|
||||||
|
</div>
|
||||||
|
<div style="display: flex;justify-content: center;">
|
||||||
|
<div class="yulan">预览</div>
|
||||||
|
<div class="mokuaipeizhi" @click="routerClick(item)">模块配置</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<Addpopup v-if="isAppPopUp" @close-click="closeClick"/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.common-layout {
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
color: #1f2329;
|
||||||
|
min-width: 1000px;
|
||||||
|
overflow-x: auto;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 20px ;
|
||||||
|
padding-left: 40px ;
|
||||||
|
padding-right: 0px ;
|
||||||
|
}
|
||||||
|
.keywordsClass{
|
||||||
|
width: 403px;
|
||||||
|
height: 40px;
|
||||||
|
background: inherit;
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 1);
|
||||||
|
border-radius: 4px;
|
||||||
|
:deep(.ed-input__wrapper){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 0);
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow:0 0 0 1px transparent ;
|
||||||
|
}
|
||||||
|
:deep(.ed-input__inner){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 0);
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
:deep(.ed-input-group__prepend){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
border: 0;
|
||||||
|
box-shadow:0 0 0 1px transparent ;
|
||||||
|
padding:0 10px;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.application_list_box{
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
.application_add{
|
||||||
|
margin-top: 20px;
|
||||||
|
width: 296px;
|
||||||
|
height: 210px;
|
||||||
|
background: inherit;
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(0, 137, 255, 1);
|
||||||
|
border-radius: 10px;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
align-content: center;
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #0089FF;
|
||||||
|
margin-right: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.application_list{
|
||||||
|
position: relative;
|
||||||
|
margin-top: 20px;
|
||||||
|
width: 296px;
|
||||||
|
height: 210px;
|
||||||
|
background: inherit;
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding:10px;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 1);
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
.application_list_text{
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #F2F4F5;
|
||||||
|
padding-top: 7px;
|
||||||
|
position: relative;
|
||||||
|
z-index: 11;
|
||||||
|
}
|
||||||
|
.mask_box{
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
z-index: 10;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: rgba(0, 0, 0, 0.8);
|
||||||
|
border-radius: 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding-top: 50px;
|
||||||
|
}
|
||||||
|
.mask_box_img{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
img{
|
||||||
|
margin: 0 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.yulan{
|
||||||
|
|
||||||
|
width: 50px;
|
||||||
|
height: 28px;
|
||||||
|
line-height: 28px;
|
||||||
|
text-align: center;
|
||||||
|
background-color: rgba(255, 255, 255, 0.3);
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow: none;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
margin-right: 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.mokuaipeizhi{
|
||||||
|
width: 80px;
|
||||||
|
height: 28px;
|
||||||
|
line-height: 28px;
|
||||||
|
text-align: center;
|
||||||
|
background-color: rgba(0, 137, 255, 1);
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow: none;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,245 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
import { useI18n } from '@/hooks/web/useI18n'
|
||||||
|
import { ref } from 'vue'
|
||||||
|
import { applicationAdd } from '@/api/application/application'
|
||||||
|
import { ElMessage } from 'element-plus-secondary'
|
||||||
|
// import type { UploadProps } from 'element-plus'
|
||||||
|
const emit = defineEmits(['closeClick'])
|
||||||
|
const { t } = useI18n()
|
||||||
|
const isDialog:any = ref(true)
|
||||||
|
const isSwitch:any = ref(false)
|
||||||
|
// const props = defineProps({
|
||||||
|
// dialogEditParams: {
|
||||||
|
// type: Boolean,
|
||||||
|
// default: false
|
||||||
|
// },
|
||||||
|
// paramsObj: {
|
||||||
|
// type: Object,
|
||||||
|
// default: () => {
|
||||||
|
// return {
|
||||||
|
// name: '',
|
||||||
|
// deType: 0
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// paramsObjRules: {
|
||||||
|
// type: Object,
|
||||||
|
// default: () => {
|
||||||
|
// return {
|
||||||
|
// name: []
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
const dataInfo:any = ref({
|
||||||
|
type: '01',
|
||||||
|
name: '',
|
||||||
|
description: '',
|
||||||
|
image: ''
|
||||||
|
})
|
||||||
|
const paramsObjRules = ref(
|
||||||
|
{
|
||||||
|
// name: [
|
||||||
|
// {
|
||||||
|
// required: true,
|
||||||
|
// message: "",
|
||||||
|
// trigger: 'change'
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
})
|
||||||
|
function paramsResetForm() {
|
||||||
|
emit('closeClick', false)
|
||||||
|
}
|
||||||
|
function saveParamsObj(){
|
||||||
|
|
||||||
|
if(isSwitch.value == true){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
isSwitch.value = true
|
||||||
|
applicationAdd(dataInfo.value).then(res => {
|
||||||
|
ElMessage.success('添加成功')
|
||||||
|
emit('closeClick', false)
|
||||||
|
}).catch(() => {
|
||||||
|
isSwitch.value = false
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
const handleAvatarSuccess = file => {
|
||||||
|
// if (file.raw!.type !== 'image/jpeg'&& file.raw!.type !== 'image/png') {
|
||||||
|
// // ElMessage.error('Avatar picture must be JPG format!')
|
||||||
|
// return false
|
||||||
|
// } else if (file.size / 1024 / 1024 > 2) {
|
||||||
|
// // ElMessage.error('Avatar picture size can not exceed 2MB!')
|
||||||
|
// return false
|
||||||
|
// }
|
||||||
|
const reader = new FileReader()
|
||||||
|
reader.onload = (e) => {
|
||||||
|
dataInfo.value.image = e.target.result // 这里会得到 base64 字符串
|
||||||
|
}
|
||||||
|
reader.readAsDataURL(file.raw) // 读取文件内容为 Data URL
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:title="'新建空白项目'"
|
||||||
|
v-model="isDialog"
|
||||||
|
width="570px"
|
||||||
|
class="create-project-dialog"
|
||||||
|
:before-close="paramsResetForm"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
ref="paramsObjRef"
|
||||||
|
:model="dataInfo"
|
||||||
|
:rules="paramsObjRules"
|
||||||
|
>
|
||||||
|
<el-form-item :label="'项目名称'" prop="name">
|
||||||
|
<el-input
|
||||||
|
:placeholder="'请输入'"
|
||||||
|
v-model="dataInfo.name"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item :label="'项目描述'" prop="name">
|
||||||
|
<el-input
|
||||||
|
:autosize="{ minRows: 4, maxRows: 8 }"
|
||||||
|
type="textarea"
|
||||||
|
:placeholder="'请输入'"
|
||||||
|
v-model="dataInfo.description"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item :label="'上传logo'" prop="name">
|
||||||
|
<el-upload
|
||||||
|
class="avatar-uploader"
|
||||||
|
action=""
|
||||||
|
:auto-upload="false"
|
||||||
|
accept=".jpeg,.jpg,.png,.gif,.svg"
|
||||||
|
:show-file-list="false"
|
||||||
|
:on-change="handleAvatarSuccess"
|
||||||
|
>
|
||||||
|
<img v-if="dataInfo.image != ''" :src="dataInfo.image" style="width: 223px;height: 120px;"/>
|
||||||
|
<div v-else class="update-avatar">
|
||||||
|
<img src="@/assets/newimg/u166.png" alt="">
|
||||||
|
<div class="update-avatar-text">点击上传图片</div>
|
||||||
|
</div>
|
||||||
|
<!-- <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon> -->
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<el-button secondary @click="paramsResetForm">{{ t('dataset.cancel') }} </el-button>
|
||||||
|
<el-button type="primary" @click="saveParamsObj">{{ t('dataset.confirm') }} </el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
:deep(.ed-input__wrapper){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(67, 67, 67,0);
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow:0 0 0 1px rgb(67, 67, 67) inset ;
|
||||||
|
}
|
||||||
|
:deep(.ed-input__wrapper:hover){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgb(67, 67, 67);
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow: 0 0 0 1px #0089ff inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
:deep(.ed-input__inner){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 0);
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
:deep(.ed-input-group__prepend){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
border: 0;
|
||||||
|
box-shadow:0 0 0 1px transparent ;
|
||||||
|
padding:0 10px;
|
||||||
|
padding-right: 0;
|
||||||
|
border-color: rgba(51, 51, 51, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.ed-textarea__inner){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 0);
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #fff;
|
||||||
|
box-shadow: 0 0 0 1px rgb(67, 67, 67) inset;
|
||||||
|
}
|
||||||
|
:deep(.ed-textarea__inner:hover){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 0);
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #fff;
|
||||||
|
box-shadow: 0 0 0 1px #0089ff inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.update-avatar{
|
||||||
|
width: 223px;
|
||||||
|
height: 120px;
|
||||||
|
background: inherit;
|
||||||
|
background-color: rgba(40, 40, 40, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(54, 54, 54, 1);
|
||||||
|
border-radius: 4px;
|
||||||
|
display: flex;
|
||||||
|
align-content: center;
|
||||||
|
justify-content: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
.update-avatar-text{
|
||||||
|
margin-top: 10px;
|
||||||
|
width: 100%;
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #969696;
|
||||||
|
text-align: center;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<style>
|
||||||
|
|
||||||
|
.create-project-dialog{
|
||||||
|
--ed-dialog-bg-color: rgba(33, 33, 33, 1);
|
||||||
|
}
|
||||||
|
.create-project-dialog .ed-dialog__title{
|
||||||
|
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #F2F4F5;
|
||||||
|
}
|
||||||
|
.create-project-dialog .ed-form-item__label{
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #D2D2D2;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,435 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
import {ref, onMounted,watch } from 'vue'
|
||||||
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
|
import { ElMessage,ElMessageBox } from 'element-plus-secondary'
|
||||||
|
import { useI18n } from '@/hooks/web/useI18n'
|
||||||
|
import { publicTree } from '@/utils/validate';
|
||||||
|
import { moduleList,moduleAdd,moduleUpdate,moduleDel } from '@/api/application/module'
|
||||||
|
const { t } = useI18n()
|
||||||
|
const props = defineProps({
|
||||||
|
projectInfo: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const popupType:any = ref(0)
|
||||||
|
const isSwitch =ref(false)
|
||||||
|
const treeloading = ref(false) // 树加载中
|
||||||
|
const keywords =ref("") // 关键字
|
||||||
|
const projectInfo:any=ref({}) // 项目信息
|
||||||
|
const title =ref("目录") // 新建目录标题
|
||||||
|
const isDialog =ref(false) // 新建目录弹窗
|
||||||
|
const isTreeDrag =ref(false)
|
||||||
|
const dataInfo:any =ref({
|
||||||
|
pid: '',
|
||||||
|
level: '',
|
||||||
|
nodeType: '',
|
||||||
|
name:'',
|
||||||
|
appId:''
|
||||||
|
})
|
||||||
|
const treeData:any=ref([])// 树数据
|
||||||
|
const defaultProps = { label: "name" }
|
||||||
|
|
||||||
|
watch(() => props.projectInfo, val => { // 初始化数据
|
||||||
|
projectInfo.value = val
|
||||||
|
getInit()
|
||||||
|
})
|
||||||
|
onMounted(()=>{
|
||||||
|
projectInfo.value = props.projectInfo
|
||||||
|
})
|
||||||
|
function getInit() { // 初始化
|
||||||
|
let params = {appId:projectInfo.value.id}
|
||||||
|
moduleList(params).then(res => {
|
||||||
|
treeData.value = publicTree(res.data.data,"")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
function addClic(name:any,level:any,pid:any){ // 新建目录、模块
|
||||||
|
dataInfo.value={
|
||||||
|
appId:projectInfo.value.id,
|
||||||
|
pid: pid,
|
||||||
|
level: level,
|
||||||
|
nodeType: "",
|
||||||
|
name:'',
|
||||||
|
}
|
||||||
|
|
||||||
|
if(name == '目录'){
|
||||||
|
dataInfo.value.nodeType = '01'
|
||||||
|
}else{
|
||||||
|
dataInfo.value.nodeType = '02'
|
||||||
|
}
|
||||||
|
title.value = '新建' + name
|
||||||
|
|
||||||
|
|
||||||
|
isSwitch.value = false
|
||||||
|
isDialog.value=true
|
||||||
|
|
||||||
|
}
|
||||||
|
function handleDatasetName(){ // 关键字搜索
|
||||||
|
|
||||||
|
}
|
||||||
|
const handleNodeClick = (data: any) => { // 树节点点击
|
||||||
|
|
||||||
|
}
|
||||||
|
function moreClic(event:any ,data:any){ // 更多操作
|
||||||
|
let element = document.getElementById("drag_main_area")
|
||||||
|
if(element !=null){
|
||||||
|
const x = event.clientX; // 水平坐标(相对于元素边界)
|
||||||
|
const y = event.clientY; // 垂直坐标(相对于元素边界)
|
||||||
|
element.style.left = x + 10 + 'px';
|
||||||
|
element.style.top = y - 5 + 'px';
|
||||||
|
}
|
||||||
|
if(data.nodeType == '01'){
|
||||||
|
popupType.value = 3
|
||||||
|
}else{
|
||||||
|
popupType.value = 2
|
||||||
|
}
|
||||||
|
dataInfo.value = JSON.parse(JSON.stringify(data))
|
||||||
|
isSwitch.value = false
|
||||||
|
isTreeDrag.value = true
|
||||||
|
}
|
||||||
|
function editClic(data:any){
|
||||||
|
ElMessage.success('页面跳转,暂无页面')
|
||||||
|
}
|
||||||
|
function addTreeChildNode(event:any,level:any,pid:any){ // // 添加子节点
|
||||||
|
let element = document.getElementById("drag_main_area")
|
||||||
|
if(element !=null){
|
||||||
|
const x = event.clientX; // 水平坐标(相对于元素边界)
|
||||||
|
const y = event.clientY; // 垂直坐标(相对于元素边界)
|
||||||
|
element.style.left = x + 10 + 'px';
|
||||||
|
element.style.top = y - 5 + 'px';
|
||||||
|
}
|
||||||
|
popupType.value = 1
|
||||||
|
dataInfo.value={
|
||||||
|
appId:projectInfo.value.id,
|
||||||
|
pid: pid,
|
||||||
|
level: level,
|
||||||
|
nodeType: "",
|
||||||
|
name:'',
|
||||||
|
}
|
||||||
|
isTreeDrag.value = true
|
||||||
|
}
|
||||||
|
function addTreeClic(name:any){ // 新建
|
||||||
|
popupType.value = 1
|
||||||
|
if(name == '目录'){
|
||||||
|
dataInfo.value.nodeType = '01'
|
||||||
|
}else{
|
||||||
|
dataInfo.value.nodeType = '02'
|
||||||
|
}
|
||||||
|
title.value = '新建' + name
|
||||||
|
isSwitch.value = false
|
||||||
|
isDialog.value= true
|
||||||
|
}
|
||||||
|
function paramsCloseForm(){
|
||||||
|
isDialog.value = false
|
||||||
|
}
|
||||||
|
function saveData(){ // 保存
|
||||||
|
if(isSwitch.value == true){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
isSwitch.value = true
|
||||||
|
if(dataInfo.value.id !=null && dataInfo.value.id !=''){
|
||||||
|
let data = {
|
||||||
|
id:dataInfo.value.id,
|
||||||
|
name:dataInfo.value.name
|
||||||
|
}
|
||||||
|
moduleUpdate(data).then(() => {
|
||||||
|
ElMessage.success('添加成功')
|
||||||
|
getInit()
|
||||||
|
isDialog.value = false
|
||||||
|
}).catch(() => {
|
||||||
|
isSwitch.value = false
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
moduleAdd(dataInfo.value).then(() => {
|
||||||
|
ElMessage.success('添加成功')
|
||||||
|
getInit()
|
||||||
|
isDialog.value = false
|
||||||
|
}).catch(() => {
|
||||||
|
isSwitch.value = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
function moveTreeClic(){ // 移动
|
||||||
|
}
|
||||||
|
function editTreeClic(){ // 编辑
|
||||||
|
isSwitch.value = false
|
||||||
|
if(dataInfo.value.nodeType == '01'){
|
||||||
|
title.value = '编辑目录'
|
||||||
|
}else{
|
||||||
|
title.value = '编辑模块'
|
||||||
|
}
|
||||||
|
isDialog.value = true
|
||||||
|
}
|
||||||
|
function delTreeClic(){ // 删除
|
||||||
|
ElMessageBox.confirm('是否确定删除该'+ (dataInfo.value.nodeType == '01'?'目录' : '模块'), {
|
||||||
|
confirmButtonType: 'primary',
|
||||||
|
type: 'warning',
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
}).then(() => {
|
||||||
|
moduleDel(dataInfo.value.id).then(res => {
|
||||||
|
if(res.data.code == '0'){
|
||||||
|
ElMessage.success('删除成功')
|
||||||
|
getInit()
|
||||||
|
}else{
|
||||||
|
ElMessage.error("删除成功")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<div class="project-left-box">
|
||||||
|
<div class="project-left-top">
|
||||||
|
<div class="project-left-title">模块列表</div>
|
||||||
|
<img src="@/assets/newimg/u76.png" alt="" style="margin-right: 10px;cursor: pointer;" @click="addClic('目录','1','00')">
|
||||||
|
<img src="@/assets/newimg/u43.png" alt="" style="cursor: pointer;" @click="addClic('模块','1','00')">
|
||||||
|
</div>
|
||||||
|
<el-input
|
||||||
|
placeholder="请输入"
|
||||||
|
class="keywordsClass"
|
||||||
|
maxlength="64"
|
||||||
|
v-model="keywords"
|
||||||
|
@blur="handleDatasetName"
|
||||||
|
>
|
||||||
|
<template #prepend>
|
||||||
|
<img src="@/assets/newimg/u62.png" alt="">
|
||||||
|
</template>
|
||||||
|
</el-input>
|
||||||
|
<el-scrollbar style="height: calc(100vh - 260px);margin-top: 10px;">
|
||||||
|
<el-tree v-loading="treeloading" id="treeRefClickId" ref="treeRef" node-key="id" :data="treeData" default-expand-all
|
||||||
|
:highlight-current="true" :props="defaultProps" :expand-on-click-node="false"
|
||||||
|
@node-click="handleNodeClick">
|
||||||
|
<template #default="{ data }">
|
||||||
|
<!-- @mouseleave="isTreeDrag = false" -->
|
||||||
|
<div class="el-tree-node__content" >
|
||||||
|
<img v-if="data.nodeType=='01'" src="@/assets/newimg/u74.png" alt="" style="width: 14px;height: 13px;margin-right: 10px;">
|
||||||
|
<div class="el-tree-node__label">{{ data.name }}</div>
|
||||||
|
<div class="operation-button-box">
|
||||||
|
<div style="
|
||||||
|
width: 20px;
|
||||||
|
height: 24px;">
|
||||||
|
<img v-if="data.nodeType == '01'" src="@/assets/newimg/icon/add.png" alt="" style="width: 14px;height: 13px;" @click="addTreeChildNode($event, Number(data.level)+1,data.id)">
|
||||||
|
<img v-if="data.nodeType == '02'" src="@/assets/newimg/icon/bianji.png" alt="" style="width: 14px;height: 13px;" @click="editClic(data.id)">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div style="
|
||||||
|
width: 20px;
|
||||||
|
height: 24px;" @click="moreClic($event,data)">
|
||||||
|
<img src="@/assets/newimg/icon/dian.png" alt="" style="width: 4px;height: 14px;margin-left: 15px;">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-tree>
|
||||||
|
</el-scrollbar>
|
||||||
|
<el-dialog
|
||||||
|
:title="title"
|
||||||
|
v-model="isDialog"
|
||||||
|
width="570px"
|
||||||
|
class="create-project-dialog"
|
||||||
|
:before-close="paramsCloseForm"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
ref="paramsObjRef"
|
||||||
|
:model="dataInfo"
|
||||||
|
>
|
||||||
|
<el-form-item :label="dataInfo.nodeType=='01'?'目录名称:':'模块名称:'" prop="name">
|
||||||
|
<el-input
|
||||||
|
:placeholder="'请输入'"
|
||||||
|
v-model="dataInfo.name"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="paramsCloseForm">{{ t('dataset.cancel') }} </el-button>
|
||||||
|
<el-button type="primary" @click="saveData">{{ t('dataset.confirm') }} </el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
<div id="drag_main_area" v-show="isTreeDrag"
|
||||||
|
@mousemove="isTreeDrag = true"
|
||||||
|
@mouseleave="isTreeDrag = false"
|
||||||
|
>
|
||||||
|
<div class="drag-main-text" v-if="popupType == 1" @click="addTreeClic('目录')">新建目录</div>
|
||||||
|
<div class="drag-main-text" v-if="popupType == 1" @click="addTreeClic('模块')">新建模块</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="drag-main-text" v-if="popupType == 2" @click="addTreeClic('目录')">复制</div>
|
||||||
|
<div class="drag-main-text" v-if="popupType == 2 || popupType == 3" @click="moveTreeClic">移动到</div>
|
||||||
|
<div class="drag-main-text" v-if="popupType == 2 || popupType == 3" @click="editTreeClic">重命名</div>
|
||||||
|
<div class="drag-main-text" v-if="popupType == 2 || popupType == 3" @click="delTreeClic">删除</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.project-left-box{
|
||||||
|
width: 260px;
|
||||||
|
height: calc(100vh - 60px);
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-right: 1px solid rgba(79, 80, 82, 1);
|
||||||
|
.keywordsClass{
|
||||||
|
margin-left:10px;
|
||||||
|
width: calc(100% - 20px) ;
|
||||||
|
height: 40px;
|
||||||
|
background: inherit;
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 1);
|
||||||
|
border-radius: 4px;
|
||||||
|
:deep(.ed-input__wrapper){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 0);
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow:0 0 0 1px transparent ;
|
||||||
|
}
|
||||||
|
:deep(.ed-input__inner){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 0);
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
:deep(.ed-input-group__prepend){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
border: 0;
|
||||||
|
box-shadow:0 0 0 1px transparent ;
|
||||||
|
padding:0 10px;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
:deep(.ed-tree){
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
:deep(.ed-tree-node__content){
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
.operation-button-box{
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
right: 20px;
|
||||||
|
// display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
}
|
||||||
|
:deep(.ed-tree-node__content:hover){
|
||||||
|
background: rgba(255, 255, 255, 0.1);
|
||||||
|
.operation-button-box{
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
:deep(.ed-tree--highlight-current .ed-tree-node.is-current>.ed-tree-node__content){
|
||||||
|
background: rgba(0, 137, 255, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tree-node__content{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.el-tree-node__label{
|
||||||
|
width: calc(100% - 40px);
|
||||||
|
font-size: 14px;
|
||||||
|
color: #F2F4F5;
|
||||||
|
text-align: left;
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.project-left-top{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding:20px 10px;
|
||||||
|
}
|
||||||
|
.project-left-title{
|
||||||
|
width: 200px;
|
||||||
|
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #F2F4F5;
|
||||||
|
}
|
||||||
|
:deep(.ed-input__wrapper){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 0);
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow:0 0 0 1px rgba(67, 67, 67, 1) ;
|
||||||
|
}
|
||||||
|
:deep(.ed-input__inner){
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(51, 51, 51, 0);
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
:deep(.ed-input__wrapper:hover){
|
||||||
|
box-shadow:0 0 0 1px rgba(80, 80, 80, 1) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<style>
|
||||||
|
.create-project-dialog{
|
||||||
|
--ed-dialog-bg-color: rgba(33, 33, 33, 1);
|
||||||
|
}
|
||||||
|
.create-project-dialog .ed-dialog__title{
|
||||||
|
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #F2F4F5;
|
||||||
|
}
|
||||||
|
.create-project-dialog .ed-form-item__label{
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #D2D2D2;
|
||||||
|
}
|
||||||
|
#drag_main_area{
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 150px;
|
||||||
|
background-color: rgba(51, 51, 51, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(70, 70, 70, 1);
|
||||||
|
border-radius: 5px;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.drag-main-text{
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding-left: 10px;
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #F2F4F5;
|
||||||
|
text-align: left;
|
||||||
|
margin-top: 5px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.drag-main-text:hover{
|
||||||
|
background-color: rgba(100, 100, 100, 1);
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,98 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
import {ref, onMounted,watch } from 'vue'
|
||||||
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
|
const props = defineProps({
|
||||||
|
projectInfo: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const projectInfo:any=ref({
|
||||||
|
|
||||||
|
})
|
||||||
|
watch(() => props.projectInfo, val => {
|
||||||
|
projectInfo.value = props.projectInfo
|
||||||
|
})
|
||||||
|
onMounted(()=>{
|
||||||
|
projectInfo.value = props.projectInfo
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<div class="project-left-box">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.project-header-box{
|
||||||
|
width: 100%;
|
||||||
|
height: 60px;
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-bottom: 1px solid rgba(79, 80, 82, 1);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 0 10px;
|
||||||
|
.project-header-left{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.project-header-right{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.return-box{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.return-box:hover{
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.header-title{
|
||||||
|
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #F2F4F5;
|
||||||
|
padding-left: 14px;
|
||||||
|
}
|
||||||
|
.preview-button{
|
||||||
|
width: 60px;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
background-color: rgba(54, 55, 56, 1);
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #F2F4F5;
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.design-button{
|
||||||
|
width: 60px;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
background-color: rgba(0, 137, 255, 1);
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #F2F4F5;
|
||||||
|
text-align: center;
|
||||||
|
margin-left: 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
108
core/core-frontend/src/viewsnew/application/module/header.vue
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
import {ref, onMounted,watch } from 'vue'
|
||||||
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
|
const props = defineProps({
|
||||||
|
projectInfo: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const projectInfo:any=ref({
|
||||||
|
|
||||||
|
})
|
||||||
|
watch(() => props.projectInfo, val => {
|
||||||
|
projectInfo.value = props.projectInfo
|
||||||
|
})
|
||||||
|
onMounted(()=>{
|
||||||
|
projectInfo.value = props.projectInfo
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<div class="project-header-box">
|
||||||
|
<div class="project-header-left">
|
||||||
|
<div class="return-box" @click="$router.go(-1)">
|
||||||
|
<img src="@/assets/newimg/u594.png" alt="">
|
||||||
|
</div>
|
||||||
|
<img src="@/assets/newimg/logosmall.png" alt="" style="margin-left: 10px;">
|
||||||
|
<div class="header-title">{{projectInfo.name }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="project-header-right">
|
||||||
|
<div class="preview-button">预览</div>
|
||||||
|
<div class="design-button">设计</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.project-header-box{
|
||||||
|
width: 100%;
|
||||||
|
height: 60px;
|
||||||
|
background-color: rgba(37, 38, 38, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-bottom: 1px solid rgba(79, 80, 82, 1);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 0 10px;
|
||||||
|
.project-header-left{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.project-header-right{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.return-box{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.return-box:hover{
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.header-title{
|
||||||
|
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #F2F4F5;
|
||||||
|
padding-left: 14px;
|
||||||
|
}
|
||||||
|
.preview-button{
|
||||||
|
width: 60px;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
background-color: rgba(54, 55, 56, 1);
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #F2F4F5;
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.design-button{
|
||||||
|
width: 60px;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
background-color: rgba(0, 137, 255, 1);
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #F2F4F5;
|
||||||
|
text-align: center;
|
||||||
|
margin-left: 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
39
core/core-frontend/src/viewsnew/application/module/index.vue
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref, onMounted, onUnmounted } from 'vue'
|
||||||
|
import Header from './header.vue'
|
||||||
|
import Leftmenu from './Leftmenu/index.vue'
|
||||||
|
import Rightmenu from './Rightmenu/index.vue'
|
||||||
|
import { findApplicationById } from "@/api/application/application";
|
||||||
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
|
const route = useRoute()
|
||||||
|
const projectInfo:any = ref({})
|
||||||
|
const applicationId:any = ref('')
|
||||||
|
onMounted(() => {
|
||||||
|
applicationId.value = route.query.id
|
||||||
|
getInit()
|
||||||
|
})
|
||||||
|
function getInit() {
|
||||||
|
findApplicationById(applicationId.value).then(res => {
|
||||||
|
projectInfo.value = res.data.data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<div class="project-box">
|
||||||
|
<Header :projectInfo="projectInfo"/>
|
||||||
|
<div class="project-content" v-if="applicationId != ''">
|
||||||
|
<Leftmenu v-if="applicationId != ''" :projectInfo="projectInfo"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.project-box{
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
background-color: rgba(21, 21, 21, 1);
|
||||||
|
.project-content{
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
36
core/core-frontend/src/viewsnew/layout/components/Header.vue
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
import avatar from '@/assets/newimg/avatar.png'
|
||||||
|
import { computed, onMounted, ref } from 'vue'
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<el-header class="header-flex">
|
||||||
|
<img :src="avatar" alt="">
|
||||||
|
<div class="username">欢迎!zhangsan</div>
|
||||||
|
<div class="line">|</div>
|
||||||
|
<img src="@/assets/newimg/exit.png" alt="">
|
||||||
|
</el-header>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.header-flex{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.line{
|
||||||
|
margin: 0 15px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.username{
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #F2F4F5;
|
||||||
|
padding-left: 10px;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
111
core/core-frontend/src/viewsnew/layout/components/Sidebar.vue
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
import { usePermissionStore } from '@/store/modules/permission'
|
||||||
|
import { formatRoute } from '@/router/establish'
|
||||||
|
import { ref, onMounted } from 'vue'
|
||||||
|
import router from '@/router';
|
||||||
|
const permissionStore = usePermissionStore()
|
||||||
|
const routers: any[] = formatRoute(permissionStore.getRoutersNotHidden as AppCustomRouteRecordRaw[])
|
||||||
|
const activeIndex:any = ref(0)
|
||||||
|
onMounted(async () => {
|
||||||
|
})
|
||||||
|
|
||||||
|
function clickRoute(params:any) {
|
||||||
|
if(activeIndex.value == params){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
activeIndex.value = params
|
||||||
|
if(params == 0){
|
||||||
|
router.push('/application/index')
|
||||||
|
}else{
|
||||||
|
if(params == 0){
|
||||||
|
router.push('/application/index')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="flexlogo-box">
|
||||||
|
<img src="@/assets/newimg/logo.png" alt="" >
|
||||||
|
<div class="logo-left-text">GIS-BI开发平台</div>
|
||||||
|
</div>
|
||||||
|
<!-- <div v-for="(item,index) in routers" class="navmuen">{{ item.meta.title }}</div> -->
|
||||||
|
<div style="margin: auto;width: 220px;">
|
||||||
|
<img src="@/assets/newimg/u17.png" alt="" >
|
||||||
|
<div class="logo-left-title">项目</div>
|
||||||
|
</div>
|
||||||
|
<div class="navmuen" :class="activeIndex === 0 && 'active'" @click="clickRoute(0)">
|
||||||
|
<img src="@/assets/newimg/u22.png" alt="" style="margin-left: 15px;margin-right: 10px;">
|
||||||
|
<div>平台项目</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="margin: auto;width: 220px;">
|
||||||
|
<img src="@/assets/newimg/u17.png" alt="" >
|
||||||
|
<div class="logo-left-title">模板</div>
|
||||||
|
</div>
|
||||||
|
<div class="navmuen" :class="activeIndex === 1 && 'active'" @click="activeIndex = 1">
|
||||||
|
<img src="@/assets/newimg/u56.png" alt="" style="margin-left: 15px;margin-right: 10px;">
|
||||||
|
<div>模板资源</div>
|
||||||
|
</div>
|
||||||
|
<div style="margin: auto;width: 220px;">
|
||||||
|
<img src="@/assets/newimg/u17.png" alt="" >
|
||||||
|
<div class="logo-left-title">平台用户管理</div>
|
||||||
|
</div>
|
||||||
|
<div class="navmuen" :class="activeIndex === 2 && 'active'" @click="activeIndex = 2">
|
||||||
|
<img src="@/assets/newimg/u42.png" alt="" style="margin-left: 15px;margin-right: 10px;">
|
||||||
|
<div>平台菜单配置</div>
|
||||||
|
</div>
|
||||||
|
<div class="navmuen" :class="activeIndex === 3 && 'active'" @click="activeIndex = 3">
|
||||||
|
<img src="@/assets/newimg/u47.png" alt="" style="margin-left: 15px;margin-right: 10px;">
|
||||||
|
<div>平台用户配置</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<style scoped>
|
||||||
|
.flexlogo-box{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
padding-top: 24px;
|
||||||
|
}
|
||||||
|
.logo-left-title{
|
||||||
|
width: 220px;
|
||||||
|
padding-left: 10px;
|
||||||
|
font-family: 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #70737C;
|
||||||
|
margin-top: 15px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
.logo-left-text{
|
||||||
|
font-family: "微软雅黑 Bold", "微软雅黑 Regular", 微软雅黑;
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 20px;
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
margin-left: 10px;
|
||||||
|
|
||||||
|
}
|
||||||
|
.navmuen{
|
||||||
|
width: 220px;
|
||||||
|
height: 40px;
|
||||||
|
font-family: 微软雅黑;
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: rgb(242, 244, 245);
|
||||||
|
text-align: left;
|
||||||
|
border-radius: 4px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin: auto;
|
||||||
|
cursor: pointer;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
.navmuen.active{
|
||||||
|
background: rgb(0, 137, 255);
|
||||||
|
}
|
||||||
|
</style>
|
104
core/core-frontend/src/viewsnew/layout/index.vue
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
import { computed, ref } from 'vue'
|
||||||
|
import Header from './components/Header.vue'
|
||||||
|
import Sidebar from './components/Sidebar.vue'
|
||||||
|
import Menu from '../../layout/components/Menu.vue'
|
||||||
|
import Main from '../../layout/components/Main.vue'
|
||||||
|
import CollapseBar from '../../layout/components/CollapseBar.vue'
|
||||||
|
import { ElContainer } from 'element-plus-secondary'
|
||||||
|
import { useRoute } from 'vue-router'
|
||||||
|
import { XpackComponent } from '@/components/plugin'
|
||||||
|
import { useI18n } from '@/hooks/web/useI18n'
|
||||||
|
const route = useRoute()
|
||||||
|
const systemMenu = computed(() => route.path.includes('system'))
|
||||||
|
const settingMenu = computed(() => route.path.includes('sys-setting'))
|
||||||
|
const marketMenu = computed(() => route.path.includes('template-market'))
|
||||||
|
const toolboxMenu = computed(() => route.path.includes('toolbox'))
|
||||||
|
const msgFillMenu = computed(() => route.path.includes('msg-fill'))
|
||||||
|
const isCollapse = ref(false)
|
||||||
|
const setCollapse = () => {
|
||||||
|
isCollapse.value = !isCollapse.value
|
||||||
|
}
|
||||||
|
const { t } = useI18n()
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="common-layout">
|
||||||
|
<Sidebar class="left-sidebar"> </Sidebar>
|
||||||
|
<el-container class="layout-container">
|
||||||
|
<Header class="layout-header"></Header>
|
||||||
|
<Main
|
||||||
|
class="layout-main"
|
||||||
|
></Main>
|
||||||
|
</el-container>
|
||||||
|
</div>
|
||||||
|
<XpackComponent jsname="L2NvbXBvbmVudC9sb2dpbi9Qd2RJbnZhbGlkVGlwcw==" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.common-layout {
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
// flex-direction: column;
|
||||||
|
background: rgb(21,21,21);
|
||||||
|
color: #1f2329;
|
||||||
|
min-width: 1000px;
|
||||||
|
overflow-x: auto;
|
||||||
|
.left-sidebar{
|
||||||
|
width:260px;
|
||||||
|
|
||||||
|
height: 100vh;
|
||||||
|
background: rgba(37, 38, 38, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.layout-container {
|
||||||
|
position: relative;
|
||||||
|
width:calc(100vw - 260px);
|
||||||
|
|
||||||
|
z-index: 1;
|
||||||
|
.layout-header{
|
||||||
|
position:absolute;
|
||||||
|
right: 0;
|
||||||
|
z-index:1
|
||||||
|
}
|
||||||
|
.layout-sidebar {
|
||||||
|
height: calc(100vh - 106px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.layout-sidebar-collapse {
|
||||||
|
width: 64px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-config-center {
|
||||||
|
height: 48px;
|
||||||
|
padding-left: 24px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 22px;
|
||||||
|
color: #8f959e;
|
||||||
|
border-bottom: 1px solid #1f232926;
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
background: #fff;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layout-main {
|
||||||
|
flex: 1;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.with-sider {
|
||||||
|
padding: 16px 24px 24px 24px;
|
||||||
|
}
|
||||||
|
.with-sider:has(.appearance-foot) {
|
||||||
|
padding: 16px 24px 0px 24px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|