123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448 |
- <template>
- <div class="main" v-if="values.length > 0">
- <div>{{ title }}</div>
- <div class="content">
- <div
- class="card"
- v-for="(item, index) in values"
- :key="index"
- :class="
- item.active
- ? 'card-select-' + item.status
- : 'card-unselect-' + item.status
- "
- @click="onSelectHandler(item)"
- @dblclick="sendMsg(item)"
- >
- <div
- class="card-left"
- :class="
- item.active
- ? 'card-left-select-' + item.status
- : 'card-left-unselect-' + item.status
- "
- >
- <div>{{ item.windturbineId.slice(0, 2) }}</div>
- <div>{{ item.windturbineId.slice(5) }}</div>
- </div>
- <div
- class="card-right"
- :class="
- item.active
- ? 'card-right-select-' + item.status
- : 'card-right-unselect-' + item.status
- "
- >
- <div class="rightrow">{{ item.windSpeed.toFixed(2) }} m/s</div>
- <div class="rightrow">{{ item.power.toFixed(2) }} kw</div>
- <div class="rightrow">{{ item.rollSpeed.toFixed(2) }} rpm</div>
- </div>
- </div>
- </div>
- <div class="bottom"></div>
- </div>
- <WindturbineDetailPages
- v-model="dialogVisible"
- :windturbine="currentWindturbine"
- ></WindturbineDetailPages>
- </template>
- <script>
- import WindturbineDetailPages from "../WindturbineDetailPages.vue";
- export default {
- name: "ControlMatrixCard",
- props: { title: String, type: Number, datas: Object },
- data() {
- return {
- values: [],
- dialogVisible: false,
- currentWindturbine:{},
- };
- },
- components: {
- WindturbineDetailPages,
- },
- methods: {
- // 点击卡片事件
- onSelectHandler(item) {
- item.active = !item.active;
- },
- sendMsg: function (itm) {
- this.dialogVisible = true;
- this.currentWindturbine=itm;
- },
- filter(value, windturbineId) {
- var array = [];
- var flag = false;
- for (var i = 0; i < value.length; i++) {
- if (value[i].windturbineId == windturbineId) {
- flag = true;
- array.push(flag); // 风机是否已经存在
- array.push(i); // 风机在values数组的位置
- array.push(value[i].active); // 当前风机是否被选中
- break;
- }
- }
- return array;
- },
- addCard(val) {
- var active = false;
- var array = this.filter(this.values, val.windturbineId);
- if (!array[0]) {
- // 维护
- val.active = active;
- if(val.modelId.indexOf("105")>=0){
- val.rollSpeed*=9.55;
- }
- this.values.push(val);
- } else {
- val.active = array[2];
- this.values.splice(array[1], 1, val);
- }
- },
- /* 获取选中的项目 */
- getSelectedItems() {
- var ls = new Array();
- this.values.forEach((item) => {
- if (item.active) {
- ls.push(item);
- }
- });
- return ls;
- },
- /* 将选中的项目填充到数组中 */
- outputSelectedItems(ls) {
- this.values.forEach((item) => {
- if (item.active && !this.isHas(item, ls)) {
- ls.push(item);
- }
- });
- },
- /* 清除选中的项目 */
- clearSelected() {
- this.values.forEach((item) => (item.active = false));
- },
- isHas(item, ls) {
- for (var id in ls) {
- if (ls[id].windturbineId == item.windturbineId) {
- return true;
- }
- }
- return false;
- },
- clear(vs) {
- var ll = new Array();
- this.values.forEach((item) => {
- var it = vs[item.windturbineId];
- if (typeof it === "undefined") {
- ll.push(item);
- }
- });
- for (var v1 in ll) {
- var ind = this.values.indexOf(ll[v1]);
- if (ind < 0) continue;
- this.values.splice(ind, 1);
- }
- },
- },
- watch: {
- "$store.getters.windturbinelist": {
- deep: true,
- handler: function (json) {
- var vs = {};
- for (var id in json) {
- var val = json[id];
- if (val.status == this.type) {
- this.addCard(val);
- vs[val.windturbineId] = 0;
- }
- if (this.type < 0 && val.lockValue) {
- this.addCard(val);
- vs[val.windturbineId] = 0;
- }
- }
- this.clear(vs);
- },
- },
- },
- };
- </script>
- <style scoped>
- .rightrow{
- margin-right:3px;
- }
- .content {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- }
- .bottom {
- background-color: #292929;
- width: 100%;
- height: 2px;
- margin-top: 5px;
- }
- .main {
- margin: 0 5px 15px 5px;
- }
- /* 最外层卡片 */
- .card {
- width: 112px;
- height: 49px;
- font-size: 12px;
- margin-left: 3px;
- margin-top: 4px;
- display: flex;
- flex-direction: row;
- cursor: pointer;
- /* border: 2px solid rgb(75, 85, 174); */
- }
- /* 卡片左边部分 */
- .card-left {
- width: 25px;
- margin: 3px;
- font-size: 14px;
- display: flex;
- flex-direction: column;
- justify-content: space-around;
- align-items: center;
- /* background-color: rgb(75, 85, 174); */
- }
- /* 卡片右边部分 */
- .card-right {
- display: flex;
- flex: 1;
- flex-direction: column;
- justify-content: space-around;
- align-items: flex-end;
- padding-right: 3px;
- /* border-left: 2px dashed rgb(75, 85, 174); */
- }
- /* ***********颜色************ */
- /* *********************** */
- /* 最外层卡片选中和未选中 */
- .card-select-0 {
- border: 2px solid rgb(255, 255, 255, 0.5);
- }
- .card-unselect-0 {
- border: 2px solid rgb(255, 255, 255);
- }
- /* 左边卡片选中和未选中 */
- .card-left-select-0 {
- background-color: rgb(255, 255, 255, 0.5);
- color:rgb(0, 0, 0,0.5);
- }
- .card-left-unselect-0 {
- background-color: rgb(255, 255, 255, .5);
- color:rgb(0, 0, 0);
- }
- /* 右边卡片选中和未选中 */
- .card-right-select-0 {
- border-left: 2px dashed rgb(255, 255, 255, 0.5);
- }
- .card-right-unselect-0 {
- border-left: 2px dashed rgb(255, 255, 255, .5);
- background-color: rgb(255, 255, 255, .15);
- }
- /* ***********颜色************ */
- /* *********************** */
- /* 最外层卡片选中和未选中 */
- .card-select-1 {
- border: 2px solid rgb(197, 48, 200, 0.5);
- }
- .card-unselect-1 {
- border: 2px solid rgb(197, 48, 200);
- }
- .card-select-1 {
- border: 2px solid rgb(197, 48, 200, 0.5);
- }
- /* 左边卡片选中和未选中 */
- .card-left-select-1 {
- background-color: rgb(197, 48, 200, 0.5);
- }
- .card-left-unselect-1 {
- background-color: rgb(197, 48, 200, .5);
- }
- /* 右边卡片选中和未选中 */
- .card-right-select-1 {
- border-left: 2px dashed rgb(197, 48, 200, 0.5);
- }
- .card-right-unselect-1 {
- border-left: 2px dashed rgb(197, 48, 200, .5);
- background-color: rgb(197, 48, 200, .15);
- }
- /* ***********颜色************ */
- /* *********************** */
- /* 最外层卡片选中和未选中 */
- .card-select-2 {
- border: 2px solid rgb(05, 187, 76, 0.5);
- }
- .card-unselect-2 {
- border: 2px solid rgb(05, 187, 76);
- }
- .card-select-2 {
- border: 2px solid rgb(05, 187, 76, 0.5);
- }
- /* 左边卡片选中和未选中 */
- .card-left-select-2 {
- background-color: rgb(05, 187, 76, 0.5);
- }
- .card-left-unselect-2 {
- background-color: rgb(05, 187, 76, .5);
- }
- /* 右边卡片选中和未选中 */
- .card-right-select-2 {
- border-left: 2px dashed rgb(05, 187, 76, 0.5);
- }
- .card-right-unselect-2 {
- border-left: 2px dashed rgb(05, 187, 76, .5);
- background-color: rgb(05, 187, 76,.15);
- }
- /* ***********颜色************ */
- /* *********************** */
- /* 最外层卡片选中和未选中 */
- .card-select-3 {
- border: 2px solid rgb(05, 187, 76, 0.5);
- }
- .card-unselect-3 {
- border: 2px solid rgb(05, 187, 76);
- }
- .card-select-3 {
- border: 2px solid rgb(05, 187, 76, 0.5);
- }
- /* 左边卡片选中和未选中 */
- .card-left-select-3 {
- background-color: rgb(05, 187, 76, 0.5);
- }
- .card-left-unselect-3 {
- background-color: rgb(05, 187, 76,.5);
- }
- /* 右边卡片选中和未选中 */
- .card-right-select-3 {
- border-left: 2px dashed rgb(05, 187, 76, 0.5);
- }
- .card-right-unselect-3 {
- border-left: 2px dashed rgb(05, 187, 76, .5);
- background-color: rgb(05, 187, 76,.15);
- }
- /* ***********颜色************ */
- /* *********************** */
- /* 最外层卡片选中和未选中 */
- .card-select-4 {
- border: 2px solid rgb(75, 85, 174, 0.5);
- }
- .card-unselect-4 {
- border: 2px solid rgb(75, 85, 174);
- }
- .card-select-4 {
- border: 2px solid rgb(75, 85, 174, 0.5);
- }
- /* 左边卡片选中和未选中 */
- .card-left-select-4 {
- background-color: rgb(75, 85, 174, 0.5);
- }
- .card-left-unselect-4 {
- background-color: rgb(75, 85, 174, .5);
- }
- /* 右边卡片选中和未选中 */
- .card-right-select-4 {
- border-left: 2px dashed rgb(75, 85, 174, 0.5);
- }
- .card-right-unselect-4 {
- border-left: 2px dashed rgb(75, 85, 174, .5);
- background-color: rgb(75, 85, 174, .15);
- }
- /* ***********颜色************ */
- /* *********************** *
- /* 最外层卡片选中和未选中 */
- .card-select-5 {
- border: 2px solid rgb(186, 50, 55, 0.5);
- }
- .card-unselect-5 {
- border: 2px solid rgb(186, 50, 55);
- }
- .card-select-5 {
- border: 2px solid rgb(186, 50, 55, 0.5);
- }
- /* 左边卡片选中和未选中 */
- .card-left-select-5 {
- background-color: rgb(186, 50, 55, 0.5);
- }
- .card-left-unselect-5 {
- background-color: rgb(186, 50, 55, .5);
- }
- /* 右边卡片选中和未选中 */
- .card-right-select-5 {
- border-left: 2px dashed rgb(186, 50, 55, 0.5);
- }
- .card-right-unselect-5 {
- border-left: 2px dashed rgb(186, 50, 55, .5);
- background-color: rgb(186, 50, 55,.15);
- }
- /* ***********颜色************ */
- /* *********************** *
- /* 最外层卡片选中和未选中 */
- .card-select-6 {
- border: 2px solid rgb(225, 125, 36, 0.5);
- }
- .card-unselect-6 {
- border: 2px solid rgb(225, 125, 36);
- }
- .card-select-6 {
- border: 2px solid rgb(225, 125, 36, 0.5);
- }
- /* 左边卡片选中和未选中 */
- .card-left-select-6 {
- background-color: rgb(225, 125, 36, 0.5);
- }
- .card-left-unselect-6 {
- background-color: rgb(225, 125, 36, .5);
- }
- /* 右边卡片选中和未选中 */
- .card-right-select-6 {
- border-left: 2px dashed rgb(225, 125, 36, 0.5);
- }
- .card-right-unselect-6 {
- border-left: 2px dashed rgb(225, 125, 36, .5);
- background-color: rgb(225, 125, 36, .15);
- }
- /* ***********颜色************ */
- /* *********************** *
- /* 最外层卡片选中和未选中 */
- .card-select-7 {
- border: 2px solid rgb(96, 103, 105, 0.5);
- }
- .card-unselect-7 {
- border: 2px solid rgb(96, 103, 105);
- }
- .card-select-7 {
- border: 2px solid rgb(96, 103, 105, 0.5);
- }
- /* 左边卡片选中和未选中 */
- .card-left-select-7 {
- background-color: rgb(96, 103, 105, 0.5);
- }
- .card-left-unselect-7 {
- background-color: rgb(96, 103, 105, .5);
- }
- /* 右边卡片选中和未选中 */
- .card-right-select-7 {
- border-left: 2px dashed rgb(96, 103, 105, 0.5);
- }
- .card-right-unselect-7 {
- border-left: 2px dashed rgb(96, 103, 105, .5);
- background-color: rgb(96, 103, 105, .15);
- }
- </style>
|