<template>
  <div style="display: flex">
    <div :style="`width: ${window.pageWidth - 120}px;`">
      <el-table
        :data="phoneFollowUp"
        border
        :height="
          window.pageHeight < 600
            ? 124
            : Math.floor((window.pageHeight - 228) / 3)
        "
        size="small"
        highlight-current-row
        ref="phoneFollowUp"
        @row-click="rowick"
      >
        <el-table-column type="index" label="序号" width="50" align="center" />
        <el-table-column
          prop="followUpContent"
          label="随访内容"
          min-width="250"
        />
        <el-table-column
          prop="replyContent"
          label="回复内容"
          min-width="200"
          align="center"
        />
        <el-table-column
          prop="isComplete"
          label="完成"
          min-width="40"
          align="center"
        >
          <template slot-scope="scope">
            <el-checkbox
              v-model="scope.row.isComplete"
              true-label="Y"
              false-label="N"
              disabled
            />
          </template>
        </el-table-column>
        <el-table-column
          prop="planFollowDate"
          label="随访日期"
          min-width="100"
          align="center"
        >
          <template slot-scope="scope">
            <div>
              {{ moment(scope.row.planFollowDate).format("yyyy-MM-DD") }}
            </div>
          </template>
        </el-table-column>
        <el-table-column
          prop="lastModifierName"
          label="修改人"
          min-width="80"
          align="center"
        />
        <el-table-column
          prop="lastModificationTime"
          label="修改日期"
          min-width="100"
          align="center"
        >
          <template slot-scope="scope">
            <div>{{ moment(scope.row.creationTime).format("yyyy-MM-DD") }}</div>
          </template>
        </el-table-column>
        <el-table-column
          prop="creatorName"
          label="登记人"
          min-width="80"
          align="center"
        />
        <el-table-column
          prop="creationTime"
          label="登记日期"
          min-width="100"
          align="center"
        >
          <template slot-scope="scope">
            <div>{{ moment(scope.row.creationTime).format("yyyy-MM-DD") }}</div>
          </template>
        </el-table-column>
      </el-table>
    </div>
    <div style="width: 120px; margin-top: 50px">
      <div style="margin-left: 10px">
        <el-button class="commonbutton" type="primary" @click="btnAdd"
          >新增随访</el-button
        >
      </div>
      <div style="margin: 10px">
        <el-button class="commonbutton" type="primary" @click="btnEdit"
          >编辑随访</el-button
        >
      </div>
      <div style="margin-left: 10px">
        <el-button class="commonbutton" type="primary" @click="btnDel"
          >删除随访</el-button
        >
      </div>
    </div>
    <el-dialog
      :title="title == 1 ? '新增' : '修改'"
      :visible.sync="dialogVisible"
      width="75%"
      :close-on-click-modal="false"
    >
      <el-form ref="form" :model="form" label-width="80px">
        <el-row>
          <el-col :span="title==1?'4':'6'">
            <el-form-item label="编号">
              <el-input v-model="form.id" disabled size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6" v-if="title == 1">
            <el-form-item label="生成模式">
              <el-select v-model="mode" placeholder="生成模式" size="small">
                <el-option
                  v-for="item in modes"
                  :key="item.id"
                  :label="item.displayName"
                  :value="item.id"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="4" v-if="title == 1&&mode == 1">
            <el-form-item label="间隔天数">
              <el-input v-model="form.intervalDays" size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="4" v-if="title == 1&&mode == 1">
            <el-form-item label="生成次数">
              <el-input v-model="form.generateCount" size="small"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="4" v-if="title == 1&&mode == 1">
            <el-form-item label="开始时间">
              <el-date-picker
                placeholder="选择日期时间"
                size="small"
                v-model="form.startDate"
                value-format="yyyy-MM-dd"
                editable
                style="width: 177px"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="4" v-if="title == 1&&mode == 0">
            <el-form-item label="随访日期">
              <el-date-picker
                placeholder="选择日期时间"
                size="small"
                v-model="form.planFollowDate"
                value-format="yyyy-MM-dd"
                editable
                style="width: 177px"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
                    <el-col :span="4" v-if="title != 1">
            <el-form-item label="是否完成">
              <el-checkbox
                v-model="form.isComplete"
                true-label="Y"
                false-label="N"
              />
            </el-form-item>
          </el-col>
          <el-col :span="4" v-if="title !=1">
            <el-form-item label="随访日期">
              <el-date-picker
                placeholder="选择日期时间"
                size="small"
                v-model="form.planFollowDate"
                value-format="yyyy-MM-dd"
                editable
                style="width: 177px"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="24">
            <el-form-item label="随访内容">
              <!-- <el-input
                    v-model="form.parmValue"
                    size="small"
                  ></el-input> -->
              <el-input v-model="form.followUpContent"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="24" v-if="title != 1">
            <el-form-item label="回复内容">
              <!-- <el-input
                    v-model="form.parmValue"
                    size="small"
                  ></el-input> -->
              <el-input v-model="form.replyContent"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-divider></el-divider>
          <el-col :span="4" style="margin-left: 15px">
            <el-form-item label="创建者">
              <el-input
                v-model="form.creatorName"
                disabled
                size="small"
              ></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="创建时间">
              <el-input
                :value="form.creationTime | dateFormat"
                disabled
                size="small"
              ></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="4">
            <el-form-item label="修改者">
              <el-input
                v-model="form.lastModifierName"
                disabled
                size="small"
              ></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="修改时间">
              <el-input
                style="width: 85%"
                :value="form.lastModificationTime | dateFormat"
                disabled
                size="small"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false" class="difference"
          >取 消</el-button
        >
        <el-button type="primary" @click="addoredit" class="commonbutton"
          >确 定</el-button
        >
      </span>
    </el-dialog>
  </div>
</template>
<script>
import moment from "moment";
import { mapState } from "vuex";
import { dddw } from "../../utlis/proFunc";
import { getapi, postapi, putapi, deletapi } from "../../api/api";

export default {
  components: {},
  data() {
    return {
      phoneFollowUp: [], // 电话随访
      dialogVisible: false,
      curRow: {},
      form: {
        followUpContent: "",
        replyContent: "",
        followUpId: "",
        planFollowDate: "",
        isComplete: "",
        generateCount: "",
        intervalDays: "",
        generateCount: "",
        replyContent:""
      },
      mode: "0",
      modes: [
        {
          id: "0",
          displayName: "生成单条",
        },
        {
          id: "1",
          displayName: "生成多条",
        },
      ],
      title: "",
    };
  },

  created() {},

  updated() {
    this.$nextTick(() => {
      this.$refs["phoneFollowUp"].doLayout();
    });
  },

  //挂载完成
  mounted() {
    this.dictInit();
  },

  computed: {
    ...mapState(["window", "dataTransOpts", "dict", "patientRegister"]),
  },
  methods: {
    dddw,
    moment,

    // 初始化字典信息
    dictInit() {
      // 获取组合项目包含的明细
      postapi("/api/app/Asbitem/GetSimpleAsbitemWithDetails").then((res) => {
        if (res.code > -1) this.asbItems = res.data;
      });
    },
    getLists() {
      postapi("/api/app/PhoneFollowUp/GetList", {
        followUpId: this.dataTransOpts.tableS.patient_register.followUpId,
      }).then((res) => {
        if (res.code > -1) this.phoneFollowUp = res.data;
      });
    },
    addoredit() {
      if (this.title == 1) {
        if (this.mode == 1) {
           if (this.form.intervalDays == "") {
            this.$message.warning("请输入间隔天数");
          } else if (this.form.startDate == "") {
            this.$message.warning("请选择开始时间");
          } else if (this.form.generateCount == "") {
            this.$message.warning("请输入生成次数");
          } else {
            postapi("/api/app/PhoneFollowUp/AutoCreate", {
              followUpId: this.dataTransOpts.tableS.patient_register.followUpId,
              intervalDays: this.form.intervalDays,
              startDate: this.form.startDate,
              followUpContent: this.form.followUpContent,
              generateCount: this.form.generateCount,
            }).then((res) => {
              if (res.code > -1) {
                this.getLists();
                this.dialogVisible = false;
                this.mode = "0";
              }
            });
          }
        } else {
          if (this.form.planFollowDate == "") {
            this.$message.warning("请选择随访日期");
          } else {
            postapi("/api/app/PhoneFollowUp/Create", {
              followUpId: this.dataTransOpts.tableS.patient_register.followUpId,
              planFollowDate: this.form.planFollowDate,
              followUpContent: this.form.followUpContent,
              replyContent: this.form.replyContent,
            }).then((res) => {
              if (res.code > -1) {
                this.getLists();
                this.dialogVisible = false;
                this.mode = "0";
              }
            });
          }
        }
      } else {
        postapi("/api/app/PhoneFollowUp/Update", {
          phoneFollowUpId: this.form.id,
          planFollowDate: this.form.planFollowDate,
          followUpContent: this.form.followUpContent,
          replyContent: this.form.replyContent,
          isComplete: this.form.isComplete,
        }).then((res) => {
          if (res.code > -1) {
            this.getLists();
            this.dialogVisible = false;
            this.mode = "0";
          }
        });
      }
    },
    rowick(row) {
      this.curRow = { ...row };
    },
    // 设置颜色
    setColor(checkCompleteFlag) {
      let color = "#52555F";
      switch (checkCompleteFlag) {
        case "0":
          color = "#FF5054";
          break;
        case "2":
          color = "#396FFA";
          break;
        default:
          break;
      }
      return color;
    },

    // 新增
    btnAdd() {
      this.dialogVisible = true;
      this.title = 1;
      this.form = this.$options.data().form;
    },

    // 编辑
    btnEdit() {
      if (this.curRow.id == undefined) {
        this.$message.warning("请选择操作的数据");
      } else {
        this.title = 2;
        this.dialogVisible = true;
        postapi("/api/app/PhoneFollowUp/Get", {
          phoneFollowUpId: this.curRow.id,
        }).then((res) => {
          if (res.code != -1) {
            this.form = res.data;
          }
        });
      }
    },

    // 删除
    btnDel() {
      if (this.curRow.id == undefined) {
        this.$message.warning("请选择删除的数据");
      } else {
        this.$confirm("是否确认删除,是否继续", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning",
          cancelButtonClass: "difference",
          confirmButtonClass: "commonbutton",
        })
          .then(() => {
            postapi("/api/app/PhoneFollowUp/Delete", {
              phoneFollowUpId: this.curRow.id,
            }).then((res) => {
              if (res.code != -1) {
                this.curRow = this.$options.data().curRow;
                this.getLists();
                //this.$message.success("删除成功");
              }
            });
          })
          .catch(() => {});
      }
    },
  },

  //监听事件
  watch: {
    //人员ID未切换换时 也可以强制刷新数据
    "dataTransOpts.refresh.register_check_asbitem.M": {
      // immediate:true,
      handler(newVal, oldVal) {
        console.log(
          `watch 人员登记 newVal:${newVal} oldVal:${oldVal} registerCheckId: ${this.dataTransOpts.tableS.patient_register.id}`
        );
        // if (newVal != oldVal)
        this.getLists();
      },
    },
  },
};
</script>
<style scoped>
@import "../../assets/css/global.css";

.box {
  display: flex;
}
</style>
