From 9141914bab1919129f01118856b73ccc4961c1dc Mon Sep 17 00:00:00 2001
From: cuijian <cuijian@xalxzn.com>
Date: 星期二, 29 八月 2023 13:00:40 +0800
Subject: [PATCH] 编码规则

---
 src/views/eam/SerialNumberList.vue                   |  297 +++++++++++++++++++++++++++++
 src/views/eam/modules/SerialNumberModel.vue          |  259 +++++++++++++++++++++++++
 src/views/spare/modules/sparePart/SparePartModel.vue |    8 
 3 files changed, 564 insertions(+), 0 deletions(-)

diff --git a/src/views/eam/SerialNumberList.vue b/src/views/eam/SerialNumberList.vue
new file mode 100644
index 0000000..2b16125
--- /dev/null
+++ b/src/views/eam/SerialNumberList.vue
@@ -0,0 +1,297 @@
+<template>
+  <a-card
+    :bordered="false"
+    title="缂栫爜瑙勫垯"
+  >
+    <!-- 鏌ヨ鍖哄煙 -->
+    <div class="table-page-search-wrapper">
+      <a-form
+        layout="inline"
+        @keyup.enter.native="searchQuery"
+      >
+        <a-row :gutter="24">
+          <a-col
+            :md="6"
+            :sm="8"
+          >
+            <a-form-item label="鍗曟嵁鍚嶇О">
+              <j-input
+                placeholder="璇疯緭鍏ュ崟鎹悕绉版煡璇�"
+                v-model="queryParam.functionName"
+              ></j-input>
+            </a-form-item>
+          </a-col>
+          <a-col
+            :md="6"
+            :sm="8"
+          >
+            <a-form-item label="鍥哄畾瀛楃">
+              <j-input
+                placeholder="璇疯緭鍏ュ浐瀹氬瓧绗︽煡璇�"
+                v-model="queryParam.beginSymbol"
+              ></j-input>
+            </a-form-item>
+          </a-col>
+          <template v-if="toggleSearchStatus">
+          </template>
+          <a-col
+            :md="6"
+            :sm="8"
+          >
+            <span
+              style="float: left;overflow: hidden;"
+              class="table-page-search-submitButtons"
+            >
+              <a-button
+                type="primary"
+                @click="searchQuery"
+                icon="search"
+              >鏌ヨ</a-button>
+              <a-button
+                type="primary"
+                @click="searchReset"
+                icon="reload"
+                style="margin-left: 8px"
+              >閲嶇疆</a-button>
+            </span>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
+    <div class="table-operator">
+      <a-button
+        @click="handleAdd"
+        type="primary"
+        icon="plus"
+      >鏂板</a-button>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item
+            key="1"
+            @click="batchDel"
+          >
+            <a-icon type="delete" />鍒犻櫎
+          </a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px">
+          鎵归噺鎿嶄綔
+          <a-icon type="down" />
+        </a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table鍖哄煙-begin -->
+    <div>
+      <div
+        class="ant-alert ant-alert-info"
+        style="margin-bottom: 16px;"
+      >
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨
+        <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤�
+        <a
+          style="margin-left: 24px"
+          @click="onClearSelected"
+        >娓呯┖</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :rowClassName="tableRowClass"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        @change="handleTableChange"
+      >
+
+        <span
+          slot="action"
+          slot-scope="text, record"
+        >
+          <a
+            href="javascript:;"
+            @click="handleDetail(record)"
+          >璇︽儏</a>
+
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">鏇村
+              <a-icon type="down" />
+            </a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a @click="handleEdit(record)">缂栬緫</a>
+              </a-menu-item>
+              <a-menu-item>
+                <a-popconfirm
+                  title="纭畾鍒犻櫎鍚�?"
+                  @confirm="() => handleDelete(record.id)"
+                >
+                  <a>鍒犻櫎</a>
+                </a-popconfirm>
+
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+      </a-table>
+    </div>
+
+    <!-- 琛ㄥ崟鍖哄煙 -->
+    <serial-number-model
+      ref="modalForm"
+      @ok="modalFormOk"
+    ></serial-number-model>
+  </a-card>
+</template>
+
+<script>
+import SerialNumberModel from './modules/SerialNumberModel'
+import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+import JDictSelectTag from '@/components/dict/JDictSelectTag'
+import { initDictOptions, filterDictText } from '@/components/dict/JDictSelectUtil'
+import { requestPut } from '@/api/manage'
+import JInput from '@/components/jeecg/JInput'
+import JEllipsis from "@/components/jeecg/JEllipsis";
+
+export default {
+  name: 'SerialNumberList',
+  mixins: [JeecgListMixin],
+  components: {
+    SerialNumberModel,
+    JDictSelectTag,
+    JInput,
+    JEllipsis,
+  },
+  data() {
+    return {
+      isorter: {
+        column: 'createTime',
+        order: 'desc',
+      },
+      columns: [
+        {
+          title: '#',
+          dataIndex: '',
+          key: 'rowIndex',
+          align: 'center',
+          customRender: function (t, r, index) {
+            return parseInt(index) + 1
+          },
+          width: 50,
+        },
+        {
+          title: '鍗曟嵁鍚嶇О',
+          align: 'center',
+          dataIndex: 'functionName',
+          sorter: true,
+        },
+        {
+          title: '鍥哄畾瀛楃',
+          align: 'center',
+          dataIndex: 'beginSymbol',
+          sorter: true,
+        },
+        {
+          title: '浼佷笟浠g爜',
+          align: 'center',
+          dataIndex: 'enterpriseCode',
+          sorter: true,
+        },
+        {
+          title: '绫诲瀷',
+          align: 'center',
+          dataIndex: 'type',
+          sorter: true,
+        },
+        // {
+        //   title: '鍒涘缓鏃堕棿',
+        //   align: 'center',
+        //   dataIndex: 'createTime',
+        //   scopedSlots: {
+        //     customRender: 'createTime',
+        //   },
+        //   sorter: true,
+        // },
+        // {
+        //   title: '鍒涘缓浜�',
+        //   align: 'center',
+        //   dataIndex: 'createBy',
+        //   scopedSlots: {
+        //     customRender: 'createBy',
+        //   },
+        //   sorter: true,
+        // },
+        // {
+        //   title: '鐘舵��',
+        //   align: 'center',
+        //   scopedSlots: {
+        //     customRender: 'status',
+        //   },
+        //   dataIndex: 'status',
+        //   sorter: true,
+        //   width: 100,
+        // },
+        {
+
+          title: '鎿嶄綔',
+          align: 'center',
+          dataIndex: 'action',
+          scopedSlots: {
+            customRender: 'action',
+          },
+          width: 150,
+        },
+
+      ],
+      url: {
+        list: '/eam/serialNumber/list',
+        delete: '/eam/serialNumber/delete',
+      },
+    }
+  },
+  methods: {
+
+    //绂佺敤鐘舵�佹牱寮�
+    tableRowClass(record, index) {
+      // if (record.status != "1") {
+      // return "frozenRowClass";
+      // }
+      // return "";
+    },
+
+
+    searchReset() {
+      this.queryParam = {};
+      this.loadData(1);
+    },
+
+  },
+  computed: {
+    importExcelUrl: function () {
+      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
+    }
+  }
+}
+</script>
+<style>
+@import '~@assets/less/common.less';
+.frozenRowClass {
+  color: #c9c9c9;
+}
+.success {
+  color: green;
+}
+.error {
+  color: red;
+}
+.fontweight {
+  font-weight: bold;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/eam/modules/SerialNumberModel.vue b/src/views/eam/modules/SerialNumberModel.vue
new file mode 100644
index 0000000..5c61e1e
--- /dev/null
+++ b/src/views/eam/modules/SerialNumberModel.vue
@@ -0,0 +1,259 @@
+<template>
+  <a-modal
+    :title="title"
+    :width="600"
+    :visible="visible"
+    :maskClosable="false"
+    :confirmLoading="confirmLoading"
+    :okButtonProps="{ props: {disabled: disableSubmit} }"
+    @ok="handleOk"
+    @cancel="handleCancel"
+    cancelText="鍏抽棴"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-row :gutter="24">
+          <a-col :span="24">
+            <a-form-item
+              label="鍗曟嵁鍚嶇О"
+              :labelCol="{span:4}"
+              :wrapperCol="{span:18}"
+            >
+              <a-input
+                allow-clear
+                :disabled="codeDisable"
+                :placeholder="disableSubmit?'':'璇疯緭鍏ュ崟鎹悕绉�'"
+                v-decorator="[ 'functionName', validatorRules.functionName]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="24">
+          <a-col :span="24">
+            <a-form-item
+              label="鍥哄畾瀛楃"
+              :labelCol="{span:4}"
+              :wrapperCol="{span:18}"
+            >
+              <a-input
+                allow-clear
+                :disabled="codeDisable"
+                :placeholder="disableSubmit?'':'璇疯緭鍏ュ浐瀹氬瓧绗�'"
+                v-decorator="[ 'beginSymbol', validatorRules.beginSymbol]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <!-- <a-row :gutter="24">
+          <a-col :span="24">
+            <a-form-item
+              label="浼佷笟浠g爜"
+              :labelCol="{span:4}"
+              :wrapperCol="{span:18}"
+            >
+              <a-input
+                allow-clear
+                :disabled="codeDisable"
+                :placeholder="disableSubmit?'':'璇疯緭鍏ヤ紒涓氫唬鐮�'"
+                v-decorator="[ 'enterpriseCode', validatorRules.enterpriseCode]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row> -->
+        <a-row :gutter="24">
+          <a-col :span="24">
+            <a-form-item
+              label="绫诲瀷"
+              :labelCol="{span:4}"
+              :wrapperCol="{span:18}"
+            >
+              <a-input
+                allow-clear
+                :disabled="codeDisable"
+                :placeholder="disableSubmit?'':'璇疯緭鍏ョ被鍨�'"
+                v-decorator="[ 'type', validatorRules.type]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+      </a-form>
+    </a-spin>
+
+    <template slot="footer">
+      <a-button
+        :style="{marginRight: '8px'}"
+        @click="handleCancel"
+      >
+        鍏抽棴
+      </a-button>
+      <a-button
+        :disabled="confirmLoading"
+        :loading="confirmLoading"
+        @click="handleOk"
+        type="primary"
+      >纭畾</a-button>
+      <!-- icon="save" -->
+    </template>
+
+  </a-modal>
+</template>
+
+<script>
+import pick from 'lodash.pick'
+import { httpAction } from '@/api/manage'
+import { duplicateCheck } from '@/api/api'
+
+export default {
+  name: 'SerialNumberModel',
+  data() {
+    return {
+      title: '',
+      visible: false,
+      disableSubmit: false,
+      codeDisable: true,
+      model: {},
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 6 },
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 18 },
+      },
+      confirmLoading: false,
+      form: this.$form.createForm(this),
+      validatorRules: {
+        functionName: {
+          rules: [
+            { required: true, message: '璇疯緭鍏ュ崟鎹悕绉�!' },
+            { min: 0, max: 30, message: '闀垮害涓嶈秴杩� 30 涓瓧绗�', trigger: 'blur' },
+          ]
+        },
+        beginSymbol: {
+          rules: [
+            { required: true, message: '璇疯緭鍏ュ浐瀹氬瓧绗�!' },
+            { min: 0, max: 30, message: '闀垮害涓嶈秴杩� 30 涓瓧绗�', trigger: 'blur' },
+            { validator: this.validateName },
+          ]
+        },
+        // enterpriseCode: {
+        //   rules: [
+        //     { required: true, message: '璇疯緭鍏ヤ紒涓氫唬鐮�!' },
+        //     { min: 0, max: 30, message: '闀垮害涓嶈秴杩� 30 涓瓧绗�', trigger: 'blur' },
+        //   ]
+        // },
+        type: {
+          rules: [
+            { required: true, message: '璇疯緭鍏ョ被鍨�!' },
+            { min: 0, max: 90, message: '闀垮害涓嶈秴杩� 90 涓瓧绗�', trigger: 'blur' },
+            { validator: this.validateType },
+          ]
+        },
+      },
+      url: {
+        add: '/eam/serialNumber/add',
+        edit: '/eam/serialNumber/edit',
+      },
+    }
+  },
+
+  methods: {
+    add() {
+      this.edit({})
+    },
+    edit(record) {
+      this.form.resetFields()
+      this.model = Object.assign({}, record)
+      this.visible = true
+      this.$nextTick(() => {
+        this.form.setFieldsValue(pick(this.model, 'functionName', 'beginSymbol', 'enterpriseCode', 'type'))
+      })
+      if (record.id) {
+        this.codeDisable = false;
+      } else {
+        this.codeDisable = false;
+      }
+    },
+    close() {
+      this.$emit('close')
+      this.visible = false
+    },
+    handleOk() {
+      const that = this
+      // 瑙﹀彂琛ㄥ崟楠岃瘉
+      this.form.validateFields((err, values) => {
+        if (!err) {
+          that.confirmLoading = true
+          let httpurl = ''
+          let method = ''
+          if (!this.model.id) {
+            httpurl += this.url.add
+            method = 'post'
+          } else {
+            httpurl += this.url.edit
+            method = 'put'
+          }
+          let formData = Object.assign(this.model, values)
+          httpAction(httpurl, formData, method)
+            .then((res) => {
+              if (res.success) {
+                that.$message.success(res.message)
+                that.$emit('ok')
+              } else {
+                that.$message.warning(res.message)
+              }
+            })
+            .finally(() => {
+              that.confirmLoading = false
+              that.close()
+            })
+        }
+      })
+    },
+    handleCancel() {
+      this.close()
+    },
+
+    //楠岃瘉 鍥哄畾瀛楃
+    validateName(rule, value, callback) {
+      var params = {
+        tableName: 'mom_serial_number_map',
+        fieldName: 'begin_symbol',
+        fieldVal: value,
+        dataId: this.model.id,
+        //鏁版嵁搴撲腑瀛樺湪瀛楁del_flag骞朵娇鐢ㄨ瀛楁浣滀负鏈垹闄ょ瓥鐣ワ紝鐪熷垹闄わ細false 鍋囧垹闄わ細true
+        delFlag: 'true',
+      };
+      duplicateCheck(params).then((res) => {
+        if (res.success) {
+          callback();
+        } else {
+          callback("鍥哄畾瀛楃宸插瓨鍦�!");
+        }
+      })
+    },
+    //楠岃瘉 绫诲瀷
+    validateType(rule, value, callback) {
+      var params = {
+        tableName: 'mom_serial_number_map',
+        fieldName: 'type',
+        fieldVal: value,
+        dataId: this.model.id,
+        //鏁版嵁搴撲腑瀛樺湪瀛楁del_flag骞朵娇鐢ㄨ瀛楁浣滀负鏈垹闄ょ瓥鐣ワ紝鐪熷垹闄わ細false 鍋囧垹闄わ細true
+        delFlag: 'true',
+      };
+      duplicateCheck(params).then((res) => {
+        if (res.success) {
+          callback();
+        } else {
+          callback("绫诲瀷宸插瓨鍦�!");
+        }
+      })
+    },
+  },
+}
+</script>
+
+<style lang="less" scoped>
+</style>
\ No newline at end of file
diff --git a/src/views/spare/modules/sparePart/SparePartModel.vue b/src/views/spare/modules/sparePart/SparePartModel.vue
index 50ce2b1..b5f7752 100644
--- a/src/views/spare/modules/sparePart/SparePartModel.vue
+++ b/src/views/spare/modules/sparePart/SparePartModel.vue
@@ -333,6 +333,7 @@
         edit: "/spare/sparePart/edit",
         getAuxiliaryUnits: "/spare/sparePart/getAuxiliaryUnits",
         getConversionRatio: "/spare/sparePart/getConversionRatio",
+        getNum: '/eam/sysIdentity/getNumNew',
       },
       //鏂板銆佺紪杈戙�佸垹闄ゃ�佹壒閲忓垹闄ゆ搷浣滄敼鍙樻暟鎹悗鍒锋柊鍏宠仈鐨勭粍浠剁殑鐩戝惉灞炴��
       alterFlag: "",
@@ -377,6 +378,13 @@
         this.codeDisable = true;
       } else {
         this.codeDisable = false;
+        this.$nextTick(() => {
+          getAction(this.url.getNum, { type: 'SparePart', length: '4' }).then((res) => {
+            if (res.success) {
+              this.form.setFieldsValue({ num: res.message });
+            }
+          })
+        });
       }
     },
 

--
Gitblit v1.9.3