pengwei
2025-03-12 18fcb8ad28f583e3e1b99b23e4f7d9e1833dcd83
ÏîÄ¿´úÂë/client/src/views/tts/TaskManagement/Tasktemplates.vue
@@ -26,27 +26,44 @@
          />
        </div>
        <div class="serch_box">
          <div class="serchb">全局搜索</div>
          <div class="serchb">
            <el-select
              v-model="queryForm.selectType"
              placeholder="请选择"
              size="small"
              style="width: 100%; height: 100%; font-size: 0.15rem"
            >
              <el-option
                v-for="item in selectoptions"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              />
            </el-select>
          </div>
          <input
            v-model="queryForm.selectName"
            v-model="queryForm.selectInput"
            placeholder="请输入关键词搜索"
            style="border-left: 0.06rem solid #e2e2e2"
          />
        </div>
        <el-button
          @click="handleQuery"
          type="primary"
          size="small"
          style="margin-left: 0.98rem; height: 2rem"
          >查询</el-button
        >
        <el-button size="small" style="height: 2rem">重置</el-button>
        <el-button size="small" style="height: 2rem" @click="resetQuery"
          >重置</el-button
        >
      </div>
      <div class="btns">
        <div style="display: flex; align-items: center">
          <el-button
            type="primary"
            size="small"
            @click="dialogVisible = true"
            @click="add('新建')"
            style="
              width: 5.5rem;
              height: 2rem;
@@ -61,9 +78,11 @@
          <el-button
            size="small"
            style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
            @click="printExcel"
            >批量导出</el-button
          >
          <el-button
            @click="Delete"
            size="small"
            style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
            >批量删除</el-button
@@ -87,25 +106,39 @@
            fontSize: '0.88rem',
            height: '3rem',
          }"
          @Select="getSelectionRows"
        >
          <el-table-column type="selection" align="center" />
          <el-table-column prop="address" label="模板名称" align="center" />
          <el-table-column prop="date" label="任务名称" align="center" />
          <el-table-column prop="name" label="技术员" align="center" />
          <el-table-column prop="address" label="检修工长" align="center" />
          <el-table-column prop="address" label="电气质检员" align="center" />
          <el-table-column prop="address" label="机械质检员" align="center" />
          <el-table-column prop="address" label="电力矩作业员" align="center" />
          <el-table-column prop="address" label="电力辅助员" align="center" />
          <el-table-column prop="address" label="创建日期" align="center" />
          <el-table-column prop="address" label="机械矩作业员" align="center" />
          <el-table-column prop="address" label="机械辅助员" align="center" />
          <el-table-column prop="address" label="地沟矩作业员" align="center" />
          <el-table-column prop="address" label="地沟辅助员" align="center" />
          <el-table-column prop="address" label="创建日期" align="center" />
          <el-table-column prop="address" label="操作" align="center">
            <template #default="">
              <el-button size="small" type="text" @click="Edit">编辑</el-button>
          <el-table-column
            prop="templateName"
            label="模板名称"
            align="center"
          />
          <el-table-column prop="takeName" label="任务名称" align="center" />
          <el-table-column prop="jiShuYuan" label="技术员" align="center" />
          <el-table-column prop="gongZhang" label="检修工长" align="center" />
          <el-table-column
            prop="zhiJianYuan_Dq"
            label="电气质检员"
            align="center"
          />
          <el-table-column
            prop="zhiJianYuan_Lc"
            label="机械质检员"
            align="center"
          />
          <el-table-column prop="liJu_Dq" label="电气矩作业员" align="center" />
          <el-table-column prop="fuZhu_Dq" label="电气辅助员" align="center" />
          <el-table-column prop="liJu_Lc" label="机械矩作业员" align="center" />
          <el-table-column prop="fuZhu_Lc" label="机械辅助员" align="center" />
          <el-table-column prop="liJu_Dq" label="地沟矩作业员" align="center" />
          <el-table-column prop="fuZhu_Dg" label="地沟辅助员" align="center" />
          <el-table-column prop="createDate" label="创建日期" align="center" />
          <el-table-column label="操作" align="center">
            <template #default="scope">
              <el-button size="small" type="text" @click="Edit(scope.row)"
                >编辑</el-button
              >
            </template>
          </el-table-column>
        </el-table>
@@ -123,7 +156,11 @@
          size="small"
          background
          layout="prev, pager, next"
          :total="1"
          :current-page="pageQuery.page"
          :page-size="pageQuery.rows"
          :total="pageTotal"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
        />
      </div>
    </div>
@@ -133,7 +170,7 @@
      v-model="dialogVisible"
      title=""
      width="60%"
      :before-close="handleClose"
      @close="handleClose(formRef)"
      top="2%"
    >
      <template #title>
@@ -150,10 +187,15 @@
          >
        </div>
      </template>
      <el-form :model="form" label-width="auto" label-position="top">
      <el-form
        :model="form"
        label-width="auto"
        label-position="top"
        ref="formRef"
      >
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="takeName">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -163,11 +205,15 @@
                  >
                </div>
              </template>
              <el-input size="small" v-model="form.name" placeholder="请输入" />
              <el-input
                size="small"
                v-model="form.takeName"
                placeholder="请输入"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="jiShuYuan">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -177,11 +223,15 @@
                  >
                </div>
              </template>
              <el-input size="small" v-model="form.name" placeholder="请输入" />
              <el-input
                size="small"
                v-model="form.jiShuYuan"
                placeholder="请输入"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="gongZhang">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -191,7 +241,11 @@
                  >
                </div>
              </template>
              <el-input size="small" v-model="form.name" placeholder="请输入" />
              <el-input
                size="small"
                v-model="form.gongZhang"
                placeholder="请输入"
              />
            </el-form-item>
          </el-col>
        </el-row>
@@ -208,7 +262,7 @@
        </el-row>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="zhiJianYuan_Dq">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -218,18 +272,22 @@
                  >
                </div>
              </template>
              <el-select v-model="value" placeholder="请选择" size="small">
              <el-select
                v-model="form.zhiJianYuan_Dq"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                  v-for="item in UerTypeoptions.quality"
                  :key="item.userTrueName"
                  :label="item.userTrueName"
                  :value="item.userTrueName"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="zhiJianYuan_Lc">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -239,18 +297,22 @@
                  >
                </div>
              </template>
              <el-select v-model="value" placeholder="请选择" size="small">
              <el-select
                v-model="form.zhiJianYuan_Lc"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                  v-for="item in UerTypeoptions.quality"
                  :key="item.userTrueName"
                  :label="item.userTrueName"
                  :value="item.userTrueName"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="zhiJianYuan_Dg">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -260,12 +322,16 @@
                  >
                </div>
              </template>
              <el-select v-model="value" placeholder="请选择" size="small">
              <el-select
                v-model="form.zhiJianYuan_Dg"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                  v-for="item in UerTypeoptions.quality"
                  :key="item.userTrueName"
                  :label="item.userTrueName"
                  :value="item.userTrueName"
                />
              </el-select>
            </el-form-item>
@@ -284,7 +350,7 @@
        </el-row>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="liJu_Dg">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -294,18 +360,22 @@
                  >
                </div>
              </template>
              <el-select v-model="value" placeholder="请选择" size="small">
              <el-select
                v-model="form.liJu_Dq"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                  v-for="item in UerTypeoptions.electric"
                  :key="item.userTrueName"
                  :label="item.userTrueName"
                  :value="item.userTrueName"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="fuZhu_Dg">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -315,12 +385,16 @@
                  >
                </div>
              </template>
              <el-select v-model="value" placeholder="请选择" size="small">
              <el-select
                v-model="form.fuZhu_Dq"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                  v-for="item in UerTypeoptions.electric"
                  :key="item.userTrueName"
                  :label="item.userTrueName"
                  :value="item.userTrueName"
                />
              </el-select>
            </el-form-item>
@@ -339,7 +413,7 @@
        </el-row>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="liJu_Lc">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -349,18 +423,22 @@
                  >
                </div>
              </template>
              <el-select v-model="value" placeholder="请选择" size="small">
              <el-select
                v-model="form.liJu_Lc"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                  v-for="item in UerTypeoptions.mechanical"
                  :key="item.userTrueName"
                  :label="item.userTrueName"
                  :value="item.userTrueName"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="fuZhu_Lc">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -370,12 +448,16 @@
                  >
                </div>
              </template>
              <el-select v-model="value" placeholder="请选择" size="small">
              <el-select
                v-model="form.fuZhu_Lc"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                  v-for="item in UerTypeoptions.mechanical"
                  :key="item.userTrueName"
                  :label="item.userTrueName"
                  :value="item.userTrueName"
                />
              </el-select>
            </el-form-item>
@@ -404,12 +486,16 @@
                  >
                </div>
              </template>
              <el-select v-model="value" placeholder="请选择" size="small">
              <el-select
                v-model="form.liJu_Dg"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                  v-for="item in UerTypeoptions.trench"
                  :key="item.userTrueName"
                  :label="item.userTrueName"
                  :value="item.userTrueName"
                />
              </el-select>
            </el-form-item>
@@ -425,12 +511,16 @@
                  >
                </div>
              </template>
              <el-select v-model="value" placeholder="请选择" size="small">
              <el-select
                v-model="form.fuZhu_Dg"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                  v-for="item in UerTypeoptions.trench"
                  :key="item.userTrueName"
                  :label="item.userTrueName"
                  :value="item.userTrueName"
                />
              </el-select>
            </el-form-item>
@@ -449,7 +539,7 @@
          <el-button
            size="small"
            type="primary"
            @click="dialogVisible = false"
            @click="SaveData(formRef)"
            style="height: 2rem; font-size: 0.88rem"
          >
            ä¿å­˜
@@ -460,19 +550,88 @@
  </div>
</template>
<script setup>
import { ref, reactive } from "vue";
import { ref, reactive, onMounted } from "vue";
import {
  GetTemplateList,
  AddData,
  UpdateData,
  DeleteData,
  ExportApi,
} from "@/api/newapi/Template";
import { GetUerType } from "@/api/user";
import { ElMessage } from "element-plus";
import { formatTime } from "@/utils/index.js";
const queryForm = reactive({
  selectName: "",
  selectTime: [], // æ—¶é—´èŒƒå›´
  selectType: "",
  selectInput: "",
});
const tableData = ref([]);
const options = ref([]);
const props = { multiple: true };
const table = ref(false);
const form = reactive({});
//新建/编辑  æäº¤æ•°æ®
const form = ref({
  templateName: "",
  templateGroup: "",
  takeName: "",
  jiShuYuan: "",
  gongZhang: "",
  zhiJianYuan_Dq: "",
  zhiJianYuan_Lc: "",
  zhiJianYuan_Dg: "",
  liJu_Dq: "",
  fuZhu_Dq: "",
  liJu_Lc: "",
  fuZhu_Lc: "",
  liJu_Dg: "",
  fuZhu_Dg: "",
});
const selectoptions = ref([
  {
    value: "电气",
    label: "电气",
  },
  {
    value: "机械",
    label: "机械",
  },
  {
    value: "地沟",
    label: "地沟",
  },
]);
const rules = reactive({
  templateName: [
    { required: true, message: "请输入模板名称", trigger: "blur" },
  ],
  takeName: [{ required: true, message: "请输入任务名称", trigger: "blur" }],
  jiShuYuan: [{ required: true, message: "请输入技术员", trigger: "blur" }],
  gongZhang: [{ required: true, message: "请输入工长", trigger: "blur" }],
  zhiJianYuan_Dq: [
    { required: true, message: "请输入电气质检员", trigger: "blur" },
  ],
  zhiJianYuan_Lc: [
    { required: true, message: "请输入机械质检员", trigger: "blur" },
  ],
  zhiJianYuan_Dg: [
    { required: true, message: "请输入地沟质检员", trigger: "blur" },
  ],
  liJu_Dq: [
    { required: true, message: "请输入电气力矩作业员", trigger: "blur" },
  ],
  fuZhu_Dq: [{ required: true, message: "请输入电气辅助员", trigger: "blur" }],
  liJu_Lc: [
    { required: true, message: "请输入机械力矩作业员", trigger: "blur" },
  ],
  fuZhu_Lc: [{ required: true, message: "请输入机械辅助员", trigger: "blur" }],
  liJu_Dg: [
    { required: true, message: "请输入地沟力矩作业员", trigger: "blur" },
  ],
  fuZhu_Dg: [{ required: true, message: "请输入地沟辅助员", trigger: "blur" }],
});
function cancelClick() {
  table.value = false;
@@ -482,14 +641,206 @@
}
//弹出框
const dialogVisible = ref(false);
//删除方法
const add = () => {
  dialogVisible.value = true;
const UerTypeoptions = ref({
  quality: [], //质检
  electric: [], //电气
  mechanical: [], //机械
  trench: [], //地沟
});
const type = ref("新建");
//添加方法
const add = (val) => {
  type.value = val;
  GetUerType().then((res) => {
    UerTypeoptions.value.quality = res.data.filter(
      (item) => item.roleId != 1 && item.roleId == 2
    );
    UerTypeoptions.value.electric = res.data.filter(
      (item) => item.roleId != 1 && item.roleId == 3
    );
    UerTypeoptions.value.mechanical = res.data.filter(
      (item) => item.roleId != 1 && item.roleId == 4
    );
    UerTypeoptions.value.trench = res.data.filter(
      (item) => item.roleId != 1 && item.roleId == 5
    );
    dialogVisible.value = true;
  });
};
//编辑方法
const Edit = () => {
const Edit = (val) => {
  let obj = val;
  type.value = "编辑";
  form.value = Object.assign({}, obj);
  dialogVisible.value = true;
  GetUerType().then((res) => {
    UerTypeoptions.value.quality = res.data.filter(
      (item) => item.roleId != 1 && item.roleId == 2
    );
    UerTypeoptions.value.electric = res.data.filter(
      (item) => item.roleId != 1 && item.roleId == 3
    );
    UerTypeoptions.value.mechanical = res.data.filter(
      (item) => item.roleId != 1 && item.roleId == 4
    );
    UerTypeoptions.value.trench = res.data.filter(
      (item) => item.roleId != 1 && item.roleId == 5
    );
    dialogVisible.value = true;
  });
};
// èŽ·å–æ•°æ®
const getpagedata = () => {};
//获取需要删除的数据
const deletid = ref([]);
const getSelectionRows = (val) => {
  deletid.value = val.map((item) => item.templateID);
  console.log(val, deletid.value);
};
//批量删除方法
const Delete = () => {
  if (deletid.value.length == 0) {
    ElMessage({
      message: "请选择需要删除的数据",
      type: "warning",
    });
    return;
  }
  DeleteData(deletid.value).then((res) => {
    if (res.code == 0) {
      ElMessage({
        message: "删除成功",
        type: "success",
      });
      getpagedata();
    }
  });
};
const printExcel = () => {
  // æŸ¥è¯¢æ¡ä»¶
  const startTime = formatTime(queryForm.selectTime[0]);
  const endTime = formatTime(queryForm.selectTime[1]);
  const filter = [
    {
      name: queryForm.selectType,
      value: queryForm.selectInput,
      displayType: "String",
    },
    {
      name: "pustatus",
      value: queryForm.selectName,
      displayType: "String",
    },
    { name: "createDate", value: startTime, displayType: "ThanOrEqual" },
    { name: "createDate", value: endTime, displayType: "LessOrEqual" },
  ];
  ExportApi({
    ...pageQuery.value,
    filter,
  });
};
//保存
const SaveData = async (formEl) => {
  let data = {
    ...form.value,
    templateName: form.value.takeName,
  };
  if (!formEl) return;
  await formEl.validate((valid, fields) => {
    if (valid) {
      if (type.value == "新建") {
        AddData(data).then((res) => {
          if (res.code == 0) {
            ElMessage({
              message: "添加成功",
              type: "success",
            });
            dialogVisible.value = false;
            initData();
          }
        });
      } else {
        UpdateData(data).then((res) => {
          if (res.code == 0) {
            ElMessage({
              message: "编辑成功",
              type: "success",
            });
            dialogVisible.value = false;
            initData();
          }
        });
      }
    } else {
      console.log("error submit!", fields);
    }
  });
};
//分页请求参数
const pageQuery = ref({
  page: 1, //当前页面
  rows: 10, //每页显示条数
  order: "desc", //排序方式
  sort: "createDate", //排序字段
  wheres: "", //条件查询
});
//分页页面大小改变
const handleSizeChange = (val) => {
  pageQuery.value.rows = val;
  initData();
};
//分页页面改变
const handleCurrentChange = (val) => {
  pageQuery.value.page = val;
  initData();
};
const pageTotal = ref(0);
const initData = () => {
  // æŸ¥è¯¢æ¡ä»¶
  const startTime = formatTime(queryForm.selectTime[0]);
  const endTime = formatTime(queryForm.selectTime[1]);
  const filter = [
    {
      name: "",
      value: queryForm.selectName,
      displayType: "Contains",
    },
    { name: "createDate", value: startTime, displayType: "ThanOrEqual" },
    { name: "createDate", value: endTime, displayType: "LessOrEqual" },
  ];
  GetTemplateList({
    ...pageQuery.value,
    filter,
  }).then((res) => {
    tableData.value = res.rows;
    pageTotal.value = res.total;
  });
};
//数据检索事件
const handleQuery = () => {
  pageQuery.value.page = 1;
  initData();
};
const resetQuery = () => {
  queryForm.value = { selectName: "", selectTime: [] };
  pageQuery.value.page = 1;
  initData();
};
const formRef = ref();
//重置表单
const handleClose = (formEl) => {
  if (!formEl) return;
  formEl.resetFields();
};
onMounted(() => {
  initData();
});
</script>
<style lang="scss" scoped>
.Tasktemplates {