|
@@ -0,0 +1,226 @@
|
|
|
+<!-- 工单新增或编辑 -->
|
|
|
+<template>
|
|
|
+ <div class="product-template">
|
|
|
+ <el-dialog
|
|
|
+ :title="!isModify ? '新增工单' : '修改工单'"
|
|
|
+ width="70%"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ :visible.sync="visible"
|
|
|
+ >
|
|
|
+ <el-form
|
|
|
+ :model="dataForm"
|
|
|
+ :rules="dataRule"
|
|
|
+ ref="dataForm"
|
|
|
+ label-width="120px"
|
|
|
+ >
|
|
|
+ <el-row class="my-row">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="工单编码" prop="taskCode">
|
|
|
+ <el-input
|
|
|
+ v-model="dataForm.taskCode"
|
|
|
+ placeholder="请输入"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="工单类型" prop="taskType">
|
|
|
+ <el-select
|
|
|
+ v-model="dataForm.taskType"
|
|
|
+ placeholder="请选择"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in taskTypeOption"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="工单级别" prop="rank">
|
|
|
+ <el-select
|
|
|
+ v-model="dataForm.rank"
|
|
|
+ placeholder="请选择"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in rankTypeOption"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="my-row">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="工单名称" prop="taskName">
|
|
|
+ <el-input
|
|
|
+ v-model="dataForm.taskName"
|
|
|
+ placeholder="请输入"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="工单内容" prop="content">
|
|
|
+ <el-input
|
|
|
+ v-model="dataForm.content"
|
|
|
+ placeholder="请输入"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="要求完成时间" prop="planCompletionTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="dataForm.planCompletionTime"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ type="date"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="my-row">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="任务接收人" prop="receiver">
|
|
|
+ <el-select
|
|
|
+ v-model="dataForm.receiver"
|
|
|
+ placeholder="请选择"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in userList"
|
|
|
+ :key="item.userId"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.userId"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="16">
|
|
|
+ <el-form-item label="备注" prop="notes">
|
|
|
+ <el-input
|
|
|
+ type="textarea"
|
|
|
+ v-model="dataForm.notes"
|
|
|
+ placeholder="备注"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="my-row"> </el-row>
|
|
|
+ <el-row class="my-row">
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="工单附件" prop="attchList">
|
|
|
+ <upload-component-v2
|
|
|
+ :display="display"
|
|
|
+ :displayStar="true"
|
|
|
+ :title="'工单附件'"
|
|
|
+ :accept="'*'"
|
|
|
+ :file-obj-list="attachList"
|
|
|
+ @uploadSuccess="uploadSuccess"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ <span slot="footer">
|
|
|
+ <el-button @click="onChose">取消</el-button>
|
|
|
+ <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import uploadComponentV2 from "../common/upload-component-v2";
|
|
|
+import { getUserList } from "@/api/user";
|
|
|
+export default {
|
|
|
+ name: "worder-add-or-update",
|
|
|
+ components: { uploadComponentV2 },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ id: 0,
|
|
|
+ visible: false,
|
|
|
+ isModify: false,
|
|
|
+ display: false,
|
|
|
+ bizType: 1,
|
|
|
+ dataForm: {},
|
|
|
+ attachList: [],
|
|
|
+ userList: [],
|
|
|
+ taskTypeOption: [
|
|
|
+ { label: "开始", value: "start" },
|
|
|
+ { label: "生产", value: "produce" },
|
|
|
+ { label: "检验", value: "check" },
|
|
|
+ { label: "总检", value: "t-check" },
|
|
|
+ { label: "结束", value: "end" },
|
|
|
+ { label: "常规", value: "routine" },
|
|
|
+ ],
|
|
|
+ rankTypeOption: [
|
|
|
+ { label: "普通", value: 1 },
|
|
|
+ { label: "紧急", value: 2 },
|
|
|
+ { label: "加急", value: 3 },
|
|
|
+ ],
|
|
|
+ dataRule: {
|
|
|
+ taskCode: [
|
|
|
+ { required: true, message: "请输入工单编码", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ taskType: [
|
|
|
+ { required: true, message: "请选择工单类型", trigger: "change" },
|
|
|
+ ],
|
|
|
+ rank: [
|
|
|
+ { required: true, message: "请选择工单级别", trigger: "change" },
|
|
|
+ ],
|
|
|
+ taskName: [
|
|
|
+ { required: true, message: "请输入工单名称", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ content: [
|
|
|
+ { required: true, message: "请输入工单内容", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ planCompletionTime: [
|
|
|
+ { required: true, message: "请选择要求完成时间", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ receiver: [
|
|
|
+ { required: true, message: "请输入工单任务接收人", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ onChose() {
|
|
|
+ this.visible = false;
|
|
|
+ },
|
|
|
+ // 初始化
|
|
|
+ async init(id) {
|
|
|
+ this.id = id || 0;
|
|
|
+ this.visible = true;
|
|
|
+ await getUserList().then(({ data }) => {
|
|
|
+ if (data && data.code === "200") {
|
|
|
+ this.userList = data.data.records;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 表单提交
|
|
|
+ dataFormSubmit() {
|
|
|
+ this.$refs["dataForm"].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ this.visible = false;
|
|
|
+ this.$emit("addItem", this.dataForm);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ prodSelected(item) {
|
|
|
+ this.dataForm.productId = item.value;
|
|
|
+ this.dataForm.relatedProduct = item.label;
|
|
|
+ },
|
|
|
+ uploadSuccess(fileList) {
|
|
|
+ this.attachList = fileList;
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped></style>
|