<template>
  <el-card class="content-div">
    <div class="all-content">
      <div class="top-div">
        <el-button type="primary" @click="addData">新增</el-button>
      </div>
      <el-table
        :data="tableData"
        height="730"
        style="width: 100%"
        border
        stripe
        :header-cell-style="{ background: '#F6F7FC' }"
      >
        <el-table-column type="index" label="序号" width="80" align="center" />
        <el-table-column
          prop="name"
          label="通讯名称"
          width="350"
          align="center"
        />
        <el-table-column
          prop="drive"
          label="上报驱动"
          width="200"
          align="center"
        />
        <el-table-column
          prop="host"
          label="主机地址"
          width="200"
          align="center"
        >
        </el-table-column>
        <el-table-column
          prop="status"
          label="通讯状态"
          width="200"
          align="center"
        >
        <template #default="scope">
            <span
              class="txStatusDiv"
              :style="{
                background: scope.row.status == 1 ? '#13ce66' : '#f8cecc',
              }"
              >{{ scope.row.status == 1 ? "正常" : "未连接" }}</span
            >
          </template>
        </el-table-column>
        <el-table-column
          prop="description"
          label="通讯描述"
          width="200"
          align="center"
        >
        </el-table-column>
        <el-table-column
          prop="status"
          label="启用状态"
          width="350"
          align="center"
        >
        <template #default="scope">
            <el-switch
              v-model="scope.row.enable"
              inline-prompt
              active-text="启用"
              inactive-text="停用"
              :active-value="false"
              :inactive-value="true"
              active-color="#13ce66"
              inactive-color="red"
              @change="changeStatus(scope.row)"
            />
        </template>
        </el-table-column>
        <el-table-column label="操作" align="center" show-overflow-tooltip>
          <template #default="scope">
            <el-button type="primary" @click="editData(scope.row)">
              编辑
            </el-button>
            <el-button type="danger" @click="delData(scope.row)">
              删除
            </el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
    <AddReport
      :formData="formData"
      :type = "type"
      :dialogVisible="dialogVisible"
      @dialogClose="dialogClose"
      @dialogSuccess="dialogSuccess"
    ></AddReport>
  </el-card>
</template>

<script>
import { onMounted, reactive, ref, toRefs } from "vue";
import infoApi from "@/api/infoApi.js";
import { ElMessage, ElMessageBox } from "element-plus";
import AddReport from "@/components/AddReport.vue";
import { sb_list, sb_info, sb_drive_list, sb_add, response } from '../proto/data/pd'
export default {
  name: "page",
  components: {
    AddReport
  },
  setup() {
    const state = reactive({
      tableData: [],
      formData: {},
      dialogVisible: false,
      type: 'I'
    });

    onMounted(() => {
      getTableData();
    });

    const getTableData = async () => {
      const res = await infoApi.getSc();
      const ret = response.decode(new Uint8Array(res));
      if (ret.code == 0) {
        // 获取数据
        const infodata = sb_list.decode(ret.data).sb;
        console.log(123, infodata);
        state.tableData = infodata;
      }
    };
    const dialogClose = () => {
      state.dialogVisible = false;
    };

    const dialogSuccess = () => {
      state.dialogVisible = false;
      getTableData();
    };

    const addData = () => {
      state.formData = {
        name: "",
        drive: "",
        host: ""
      };
      state.dialogVisible = true;
      state.type='I';
    };

    const editData = (item) => {
      state.formData = JSON.parse(JSON.stringify(item));
      state.dialogVisible = true;
      state.type = 'U';
    };

    const delData = (item) => {
      ElMessageBox.confirm("确定删除该数据?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(async () => {
          const parm = {
            name: item.name,
          }
          const req_databuf = sb_info.encode(parm).finish();
          const req_data = req_databuf.slice(0, req_databuf.length);

          const res = await infoApi.delSc(req_data);
          const ret = response.decode(new Uint8Array(res));
          console.log('删除', ret)
          if (ret.code == 0) {
            ElMessage.success(res.msg || "请求成功");
            getTableData();
          } else {
            ElMessage.error(res.msg);
          }
        })
        .catch(() => {
          ElMessage.info("已取消删除");
        });
    };
    const changeStatus = async (item) => {
      let param = {
        host: item.host,
        cmd: true,
      };
      const res = await infoApi.stopSc(param);
      if (res.code == 0) {
        ElMessage.success(res.msg || "请求成功");
        getTableData();
      } else {
        ElMessage.error(res.msg);
      }
    };

    return {
      ...toRefs(state),
      addData,
      editData,
      delData,
      dialogClose,
      dialogSuccess,
      changeStatus
    };
  },
};
</script>
<style lang="scss" scoped>
.all-content {
  display: flex;
  flex-direction: column;
}
.top-div {
  display: flex;
  justify-content: flex-end;
}
.txStatusDiv {
  padding: 0 15px;
  border-radius: 10px;
  color: #fff;
}
</style>
