<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
      <el-form-item label="工位名称" prop="stationName">
        <el-input
          v-model="queryParams.stationName"
          placeholder="请输入工序名称"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="工序" prop="processId">
        <el-select v-model="queryParams.processId">
          <el-option
            v-for="(item,index) in processList"
            :key="index"
            :label="item.label"
            :value="item.value"
          ></el-option>
        </el-select>
      </el-form-item>
      <!--      <el-form-item label="班组名称" prop="teamName">-->
      <!--        <el-input-->
      <!--          v-model="queryParams.teamName"-->
      <!--          placeholder="请输入班组名称"-->
      <!--          clearable-->
      <!--          @keyup.enter.native="handleQuery"-->
      <!--        />-->
      <!--      </el-form-item>-->
      <el-form-item label="人员姓名" prop="personnelName">
        <el-input
          v-model="queryParams.personnelName"
          placeholder="请输入人员姓名"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="设备名称" prop="deviceName">
        <el-input
          v-model="queryParams.deviceName"
          placeholder="请输入设备名称"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>

    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          v-hasPermi="['amichi:stationInformation:add']"
        >新增</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="success"
          plain
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="handleUpdate"
          v-hasPermi="['amichi:stationInformation:edit']"
        >修改</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="danger"
          plain
          icon="el-icon-delete"
          size="mini"
          :disabled="multiple"
          @click="handleDelete"
          v-hasPermi="['amichi:stationInformation:remove']"
        >删除</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="el-icon-download"
          size="mini"
          @click="handleExport"
          v-hasPermi="['amichi:stationInformation:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>

    <el-table v-loading="loading" :data="stationInformationList" @selection-change="handleSelectionChange" style="margin-top: 20px">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="工序"  align="center" prop="processId">
        <template  v-slot="scope">
           <span v-for="option in processList" :key="option.value" v-if="option.value == scope.row.processId" class="custom-label">
                   {{ option.label }}
           </span>
        </template>
      </el-table-column>
<!--            <el-table-column label="工序"  align="center" prop="processName"/>-->
      <el-table-column label="工位名称" align="center" prop="stationName" />
      <el-table-column label="人员姓名" align="center" prop="personnelName"/>
      <el-table-column label="设备mac" align="center"  prop="deviceNumber" />
      <el-table-column label="备注" align="center" prop="remark" />
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-dropdown @command="(command)=>{handleCommand(command, scope.row)}">
            <el-button type="warning">操作<i class="el-icon-arrow-down el-icon--right"></i>
            </el-button>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item  icon="el-icon-edit"  command="viewPersonCode">查看人员码</el-dropdown-item>
              <el-dropdown-item  icon="el-icon-edit"  command="handleUpdate">修改</el-dropdown-item>
              <el-dropdown-item  icon="el-icon-delete" command="handleDelete">删除</el-dropdown-item>
            </el-dropdown-menu>
          </el-dropdown>
        </template>
      </el-table-column>
    </el-table>

    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />

    <!-- 添加或修改工位信息对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label="工位名称" prop="stationName">
          <el-input v-model="form.stationName" placeholder="请输入工位名称" />
        </el-form-item>
        <el-form-item label="工位类型" prop="processId">
          <el-select
            v-model="form.processId"
            size="small"
            style="width: 680px"
            filterable
            @change="processNametSelected()"
          >
            <el-option
              v-for="(item,index) in processList"
              :key="index"

              :label="item.label"
              :value="item.value"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="人员姓名" prop="personnelId">
          <el-select
            v-model="form.personnelId"
            size="small"
            style="width: 680px"
            filterable
            @change="personnelNametSelected()"
          >
            <el-option
              v-for="(item,index) in userInfo"
              :key="index"
              :label="item.nickName"
              :value="item.userId"
            ></el-option>
          </el-select>
        </el-form-item>
<!--        <el-form-item label="设备名称" prop="deviceName">-->
<!--          <el-input v-model="form.deviceName" placeholder="请输入设备名称" />-->
<!--        </el-form-item>-->
        <el-form-item label="备注" prop="remark">
          <el-input v-model="form.remark" placeholder="请输入备注" />
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitForm">确 定</el-button>
        <el-button @click="cancel">取 消</el-button>
      </div>
    </el-dialog>


    <!-- 添加或修改工位信息对话框 -->
    <el-dialog :title="title" :visible.sync="viewPersonCodeFlag" width="800px" append-to-body>
      <div class="mBox" id="printView">
         <div class="top">
            <div class="topnr">
              <img :src="imgBase" alt="" style="text-align: center;width:320px;height: 320px">
            </div>
         </div>
          <div class="bottom" style="border-bottom: 2px solid black;border-top: 2px solid black">
            <div class="bottom-left" style="border-right: 2px solid black;height: 50px">姓名</div>
            <div class="bottom-right">{{currentUserName}}</div>
          </div>
          <div class="bottom">
            <div class="bottom-left" style="border-right: 2px solid black;height: 50px">工段</div>
            <div class="bottom-right">{{currentProcessName}}</div>
          </div>
      </div>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" v-print="printViewInfo">打印</el-button>
        <el-button @click="cancel">取 消</el-button>
      </div>
    </el-dialog>
    <!-- print -->
    <div id="printDom" style="width: 160px; height: 160px"></div>
  </div>
</template>

<script>
import { listStationInformation, getStationInformation, delStationInformation, addStationInformation, updateStationInformation } from "@/api/amichi/stationInformation/stationInformation";
import qrCodeList from "@/views/amichi/print/qrCodeList";
import {listUserInformation} from  "@/api/amichi/user/user"
import {listList} from "@/api/amichi/procedureList/list";
import {generateEmployeeCode} from "@/api/system/user";
export default {
  name: "StationInformation",
  dicts:["gxlxinfo"],
  data() {
    return {
      msg: "打印",
      printViewInfo: {
        id: "printView", //打印区域的唯一的id属性
        // popTitle: '配置页眉标题', // 页眉文字 （不设置时显示undifined）（页眉页脚可以在打印页面的更多设置的选项中取消勾选）
        // extraHead: '打印，印刷', // 最左上方的头部文字，附加在head标签上的额外标签，使用逗号分割
        preview: false, // 是否启动预览模式，默认是false （开启预览模式ture会占满整个屏幕，不建议开启，除非业务需要）
        // previewTitle: '预览的标题', // 打印预览的标题(预览模式preview为true时才显示)
        // previewPrintBtnLabel: '预览结束，开始打印', // 打印预览的标题下方的按钮文本，点击可进入打印(预览模式preview为true时才显示)
        zIndex: 20002, // 预览窗口的z-index，默认是20002，最好比默认值更高
        previewBeforeOpenCallback (that) { console.log('正在加载预览窗口！'); console.log(that.msg, this) }, // 预览窗口打开之前的callback (预览模式preview为true时才执行) （that可以取到data里的变量值）
        previewOpenCallback () { console.log('已经加载完预览窗口，预览打开了！') }, // 预览窗口打开时的callback (预览模式preview为true时才执行)
        beforeOpenCallback () { console.log('开始打印之前！') }, // 开始打印之前的callback
        openCallback () { console.log('执行打印了！') }, // 调用打印时的callback
        closeCallback () { console.log('关闭了打印工具！') }, // 关闭打印的callback(无法区分确认or取消)
        clickMounted () { console.log('点击v-print绑定的按钮了！') },
        // url: 'http://localhost:8080/', // 打印指定的URL，确保同源策略相同
        // asyncUrl (reslove) {
        //   setTimeout(() => {
        //     reslove('http://localhost:8080/')
        //   }, 2000)
        // },
        standard: '',
        extarCss: ''
      },
      //是否显示弹窗
      viewPersonCodeFlag:false,
      //工序列表
      processList:[],
      //当前选择弹窗展开的工段信息
      currentProcessName:"",
      //当前姓名
      currentUserName:"",
      //二维码信息
      imgBase:"",
      // 遮罩层
      loading: true,
      // 选中数组
      ids: [],
      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
      // 显示搜索条件
      showSearch: true,
      // 总条数
      total: 0,
      // 工位信息表格数据
      stationInformationList: [],
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      // 查询参数
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        stationCode: null,
        stationName: null,
        personnelId: null,
        personnelName: null,
        deviceId: null,
        deviceName: null,
        createById: null,
        updateById: null,
        dataApprovalStatus: null,
        processKey: null,
        taskProcessKey: null,
        taskNodeKey: null,
        teamName:null
      },
      userInfo:[],
      // 表单参数
      form: {},
      // 表单校验
      rules: {
      }
    };
  },
  created() {
    this.processListApi();
    this.getListUserInformation();
    this.getList();
  },
  methods: {
    processNametSelected(){
      let obj = this.processList.find(item=>item.value==this.form.processId);
      console.log(obj,"dddd");
      this.form.processName=obj.label;
      console.log(this.form);
    },
    personnelNametSelected(){
      let obj = this.userInfo.find(item=>item.userId==this.form.personnelId);
      this.form.personnelName=obj.nickName;
    },
    getListUserInformation(){
      let obj= {"isEnablePaging":false}
      listUserInformation(obj).then(resp=>{
        this.userInfo=resp.rows.filter(item=>item.userName!="fjqyAdmin");
        console.log(this.userInfo);
      })
    },
    dym(){
      this.viewPersonCodeFlag=false;
    },
    //下拉菜单点击事件
    handleCommand(command, row) {
      switch (command) {
        case "handleUpdate":
          this.handleUpdate(row)
          break;
        case "handleDelete":
          this.handleDelete(row)
          break;
        case "printStationCode":
          this.printStationCode(row)
          break;
        case "viewPersonCode":
          this.viewPersonCode(row)
          break;
        default:
          break;
      }
    },
    viewPersonCode(row){
      console.log("hmc")
      this.title="人员码"
      this.currentProcessName=row.processName;
      this.currentUserName=row.personnelName;
      this.employeeNumber=row.personnelId;
      this.employeeName=row.personnelName;
      this.generateEmployeeCodeApi({"userNumber":row.personnelId,"userName":row.personnelName});
    },
    async generateEmployeeCodeApi(obj){
      await generateEmployeeCode(obj).then((res) => {
        console.log(res);
        if (res.code == 200) {
          this.imgBase=res.data;
          this.viewPersonCodeFlag=true;
        }
      });
    },
    //打印逻辑方法
    printStationCode(row){
      console.log("打印工位码信息")
      console.log(row)
      let codeString = "scan@&"+row.stationCode;
      let allPringtData = [];
      //添加内容
      allPringtData.push({
        codeData: codeString,
        showMsg: [
          { label: "工位码", value: row.stationCode },
        ],
      });
      qrCodeList(allPringtData, "printDom");
    },
    /** 查询工位信息列表 */
    getList() {
      this.loading = true;
      listStationInformation(this.queryParams).then(response => {
        this.stationInformationList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // 取消按钮
    cancel() {
      this.open = false;
      this.viewPersonCodeFlag=false;
      this.reset();
    },
    // 表单重置
    reset() {
      this.form = {
        id: null,
        stationCode: null,
        stationName: null,
        personnelId: null,
        personnelName: null,
        deviceId: null,
        deviceName: null,
        remark: null,
        createById: null,
        createBy: null,
        createTime: null,
        updateById: null,
        updateBy: null,
        updateTime: null,
        delFlag: null,
        dataApprovalStatus: null,
        processKey: null,
        taskProcessKey: null,
        taskNodeKey: null
      };
      this.resetForm("form");
    },
    /**
     * 查询工序列表
     */
    processListApi(){
      this.processList=[];
      listList({"isEnablePaging":false}).then(response => {
        let newData=response.rows.map(item=>{
          return {"value":item.id,"label":item.procedurName}
        })
        this.processList=newData;
        console.log(this.processList)
      });
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.resetForm("queryForm");
      this.handleQuery();
    },
    // 多选框选中数据
    handleSelectionChange(selection) {
      this.ids = selection.map(item => item.id)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** 新增按钮操作 */
    handleAdd() {
      this.reset();
      this.getListUserInformation();
      this.processListApi();
      this.open = true;
      this.title = "添加工位信息";
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
      this.reset();
      this.getListUserInformation();
      this.processListApi();
      const id = row.id || this.ids
      getStationInformation(id).then(response => {
        this.form = response.data;
        this.form.personnelId=parseInt(response.data.personnelId);
        this.form.processId=parseInt(response.data.processId);
        // this.form.stationType=parseInt(response.data.stationType);
        this.open = true;
        this.title = "修改工位信息";
      });
    },
    /** 提交按钮 */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.id != null) {
            updateStationInformation(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addStationInformation(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal.confirm('是否确认删除工位信息编号为"' + ids + '"的数据项？').then(function() {
        return delStationInformation(ids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** 导出按钮操作 */
    handleExport() {
      this.download('amichi/stationInformation/export', {
        ...this.queryParams
      }, `stationInformation_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>

<style scoped>
.mBox{
  width: 404px;
  height: 506px;
  border: 2px solid black;
  margin: 0 auto;
  color: black;
  .top{
    width: 400px;
    height: 400px;
    margin: 0 auto;
    box-sizing: border-box;

    .topnr{
      width: 320px;
      height: 320px;
      align-content: center;
      align-items: center;
      //border: 1px solid black;
      margin: 0 auto;
      img{
        margin-top: 40px;
      }
    }
  }
  .bottom{
    display: flex;
    justify-content: space-evenly;
    align-content: center;
    .bottom-left{
      width: 150px;
      height: 50px;
      line-height: 50px;
      //border: 1px solid black;
      box-sizing: border-box;
      text-align: center;
      font-size: 18px;
    }
    .bottom-right{
      width: 250px;
      height: 50px;
      line-height: 50px;
      //border: 1px solid black;
      box-sizing: border-box;
      text-align: center;
      font-size: 18px;
    }

  }
}


</style>
