cuijian
2023-08-29 9141914bab1919129f01118856b73ccc4961c1dc
编码规则
已添加2个文件
已修改1个文件
564 ■■■■■ 文件已修改
src/views/eam/SerialNumberList.vue 297 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/modules/SerialNumberModel.vue 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/spare/modules/sparePart/SparePartModel.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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: '企业代码',
          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>
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="企业代码"
              :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>
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 });
            }
          })
        });
      }
    },