user 4 днів тому
коміт
c7be7e93d2
1 змінених файлів з 224 додано та 0 видалено
  1. 224 0
      views/home/src/projects/worker/views/worker/addworker.vue

+ 224 - 0
views/home/src/projects/worker/views/worker/addworker.vue

@@ -0,0 +1,224 @@
+<template>
+  <div>
+    <van-nav-bar
+      :title="$route.params && $route.params.id ? '编辑工人' : '添加工人'"
+      left-text="返回"
+      left-arrow
+      class="shadow mb-4"
+      @click-left="$router.back(-1)"
+    />
+    <van-form class="w-11/12 mx-auto" @submit="onSubmit">
+      <div class="shadow">
+        <van-field name="工种" label="工种">
+          <template #input>
+            <van-checkbox-group
+              :value="form.type_ids.toString().split(',')"
+              @input="$set(form, 'type_ids', $event.join(','))"
+              direction="horizontal"
+            >
+              <van-checkbox
+                v-for="(type, index) in types"
+                :key="index"
+                :name="type.id.toString()"
+                shape="square"
+                >{{ type.name }}</van-checkbox
+              >
+            </van-checkbox-group>
+          </template>
+        </van-field>
+        <!--Select
+          v-model="form.type_ids"
+          name="工种"
+          label="工种"
+          placeholder="工种"
+          :columns="types"
+          :rules="[{ required: true, message: '请选择工种' }]"
+        /-->
+        <van-field
+          v-model="form.name"
+          name="工人姓名"
+          label="工人姓名"
+          placeholder="工人姓名"
+          :rules="[{ required: true, message: '请填写工人姓名' }]"
+        />
+        <van-field
+          v-model="form.phone"
+          clearable
+          label="手机号码"
+          placeholder="请输入手机号码"
+          type="tel"
+          :rules="[
+            { required: true, message: '请输入手机号码' },
+            {
+              pattern:
+                /^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|162|166|198|199|191|(147))\d{8}$/,
+              message: '手机号码格式错误!',
+            },
+          ]"
+        />
+        <Select
+          v-model="form.sex"
+          name="性别"
+          label="性别"
+          placeholder="性别"
+          :columns="[
+            { id: 0, name: '未知' },
+            { id: 1, name: '男' },
+            { id: 2, name: '女' },
+          ]"
+        />
+        <van-field v-model="form.age" type="digit" label="年龄" />
+        <van-field
+          v-model="form.idcode"
+          name="身份证号"
+          label="身份证号"
+          placeholder="身份证号"
+        />
+        <van-field name="是否买保险" label="是否买保险">
+          <template #input>
+            <van-radio-group v-model="form.insure" direction="horizontal">
+              <van-radio :name="1">是</van-radio>
+              <van-radio :name="0">否</van-radio>
+            </van-radio-group>
+          </template>
+        </van-field>
+        <DatetimeSelect
+          v-model="form.insure_start"
+          name="保险开始日期"
+          label="保险开始日期"
+          placeholder="保险开始日期"
+        />
+        <DatetimeSelect
+          v-model="form.insure_end"
+          name="保险结束日期"
+          label="保险结束日期"
+          placeholder="保险结束日期"
+        />
+        <van-field
+          v-model="form.bank_name"
+          name="开户行"
+          label="开户行"
+          placeholder="开户行"
+        />
+        <van-field
+          v-model="form.bank_card_no"
+          name="银行卡号"
+          label="银行卡号"
+          placeholder="银行卡号"
+        />
+        <AddressCode
+          v-model="form.areacode"
+          :level="3"
+          label="所在区域"
+        />
+      </div>
+
+      <div class="mt-8">
+        <van-button
+          :loading="submitLoading"
+          block
+          type="info"
+          loading-text="加载中..."
+          native-type="submit"
+          >提交</van-button
+        >
+      </div>
+    </van-form>
+  </div>
+</template>
+
+<script>
+import { getWorkTypes, getWorker, addWorker, editWorker } from "@/api/admin.js";
+
+import Select from "@/components/Select";
+import DatetimeSelect from "@/components/DatetimeSelect";
+import AddressCode from "@/components/AddressCode";
+import { RadioGroup, Radio } from "vant";
+
+export default {
+  components: {
+    Select,
+    DatetimeSelect,
+    [RadioGroup.name]: RadioGroup,
+    [Radio.name]: Radio,
+    AddressCode,
+  },
+  data() {
+    return {
+      submitLoading: false,
+      types: [],
+      form: {
+        type_ids: "",
+        sex: 0,
+        insure: 0,
+      },
+    };
+  },
+  created() {
+    this.loadWorkTypes();
+  },
+  methods: {
+    loadWorkTypes() {
+      this.$store.commit("loading/showLoading");
+      getWorkTypes()
+        .then((response) => {
+          this.types = response.data.list;
+          if (this.$route.params && this.$route.params.id) {
+            this.loadWorker();
+          } else {
+            this.$store.commit("loading/hideLoading");
+          }
+        })
+        .catch(() => {
+          this.$store.commit("loading/hideLoading");
+        });
+    },
+    loadWorker() {
+      this.$store.commit("loading/showLoading");
+      getWorker(this.$route.params && this.$route.params.id)
+        .then((response) => {
+          this.form = response.data;
+          this.$store.commit("loading/hideLoading");
+        })
+        .catch(() => {
+          this.$store.commit("loading/hideLoading");
+        });
+    },
+    onSubmit() {
+      console.log(this.form);
+      if (this.$route.params && this.$route.params.id) {
+        editWorker(this.$route.params.id, this.form)
+          .then((response) => {
+            this.$toast.success({
+              message: "提交成功",
+              duration: 500,
+              onClose: () => {
+                this.$router.go(-1);
+              },
+            });
+          })
+          .catch(() => {
+            done(false);
+          });
+      } else {
+        addWorker(this.form)
+          .then((response) => {
+            this.$toast.success({
+              message: "提交成功",
+              duration: 500,
+              onClose: () => {
+                this.$router.go(-1);
+              },
+            });
+          })
+          .catch(() => {
+            done(false);
+          });
+      }
+    },
+  },
+};
+</script>
+
+<style scoped>
+</style>