cz 2 жил өмнө
parent
commit
b7a08bc268

+ 194 - 0
src/components/process/SendSubscribe.vue

@@ -0,0 +1,194 @@
+<template>
+  <div>
+    <el-form
+      :model="formData.data"
+      :rules="rules"
+      ref="formDom"
+      label-position="top"
+    >
+      <div class="_t">申购信息</div>
+      <el-row>
+        <el-col :span="6">
+          <el-form-item label="申购部门" prop="deptName">
+            <el-input v-model="formData.data.deptName" placeholder="请输入">
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="6">
+          <el-form-item label="申购人" prop="subcribeName">
+            <el-input v-model="formData.data.subcribeName" placeholder="请输入">
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="6">
+          <el-form-item label="申购时间" prop="subcribeTime">
+            <el-date-picker
+              v-model="formData.data.subcribeTime"
+              type="datetime"
+              placeholder="请选择"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-form-item label="申购说明" prop="subcribeContent">
+        <el-input
+          v-model="formData.data.subcribeContent"
+          placeholder="请输入"
+          type="textarea"
+        >
+        </el-input>
+      </el-form-item>
+      <div class="_t">申购明细</div>
+      <el-form-item>
+        <el-button
+          type="primary"
+          @click="openProduct = true"
+          style="margin: 10px 0"
+        >
+          添加货品
+        </el-button>
+        <el-table :data="formData.data.subscribeDetailList">
+          <el-table-column
+            prop="goodType"
+            label="货品类型"
+            :formatter="(row) => (row.goodType == 1 ? '产品' : '物料')"
+          />
+          <el-table-column prop="code" label="货品编码" />
+          <el-table-column prop="name" label="货品名称" min-width="150" />
+          <el-table-column prop="spec" label="规格型号" />
+          <el-table-column prop="unit" label="单位" />
+          <el-table-column prop="count" label="申购数量" min-width="150">
+            <template #default="{ row, $index }">
+              <el-form-item
+                :prop="'subscribeDetailList.' + $index + '.count'"
+                :rules="rules.count"
+                :inline-message="true"
+              >
+                <el-input-number
+                  v-model="row.count"
+                  :precision="4"
+                  :controls="false"
+                  :min="1"
+                />
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="remark" label="备注" min-width="150">
+            <template #default="{ row, $index }">
+              <el-form-item
+                :prop="'subscribeDetailList.' + $index + '.remark'"
+                :rules="rules.remark"
+                :inline-message="true"
+              >
+                <el-input v-model="row.remark" placeholder="请输入" />
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="zip" label="操作" width="100">
+            <template #default="{ $index }">
+              <el-button type="primary" link @click="handleRemove($index)"
+                >删除</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-form-item>
+    </el-form>
+  </div>
+  <el-dialog v-model="openProduct" title="选择货品" width="70%" append-to-body>
+    <SelectGoods
+      @cancel="openProduct = false"
+      @pushGoods="pushGoods"
+    ></SelectGoods>
+  </el-dialog>
+</template>
+
+<script setup>
+import SelectGoods from "@/components/product/SelectGoods";
+import { ElMessage, ElMessageBox } from "element-plus";
+import useUserStore from "@/store/modules/user";
+
+const { proxy } = getCurrentInstance();
+
+let formData = reactive({
+  data: {
+    subcribeTime: "",
+    subscribeDetailList: [],
+  },
+});
+let rules = ref({
+  deptName: [{ required: true, message: "请输入申购部门", trigger: "blur" }],
+  subcribeName: [
+    { required: true, message: "请输入申购人名称", trigger: "blur" },
+  ],
+  subcribeTime: [
+    { required: true, message: "请选择申购时间", trigger: "change" },
+  ],
+  // subcribeContent: [
+  //   { required: true, message: "请输入申购事由", trigger: "blur" },
+  // ],
+  count: [{ required: true, message: "请输入申购数量", trigger: "blur" }],
+  remark: [{ required: true, message: "请输入备注", trigger: "blur" }],
+});
+
+let openProduct = ref(false);
+
+const handleRemove = (index) => {
+  formData.data.subscribeDetailList.splice(index, 1);
+  return ElMessage({
+    message: "删除成功!",
+    type: "success",
+  });
+};
+
+const pushGoods = (goods) => {
+  const arr = goods.map((x) => ({
+    ...x,
+    bussinessId: x.id,
+    count: "",
+    remark: "",
+  }));
+  formData.data.subscribeDetailList =
+    formData.data.subscribeDetailList.concat(arr);
+  return ElMessage({
+    message: "添加成功!",
+    type: "success",
+  });
+};
+
+const formDom = ref(null);
+const handleSubmit = async () => {
+  const vaild = await formDom.value.validate();
+  if (vaild) {
+    if (formData.data.subscribeDetailList.length > 0) {
+      return true;
+    }
+    ElMessage({
+      message: "请添加申购明细!",
+      type: "info",
+    });
+    return false;
+  }
+
+  return false;
+};
+
+const userInfo = useUserStore().user;
+onMounted(() => {
+  formData.data.subcribeTime = proxy.parseTime(new Date());
+  formData.data.deptName = userInfo.dept.deptName;
+  formData.data.subcribeName = userInfo.nickName;
+});
+
+defineExpose({
+  submitData: formData.data,
+  handleSubmit,
+});
+</script>
+
+<style lang="scss" scoped>
+._t {
+  margin-bottom: 5px;
+  font-size: 14px;
+}
+</style>

+ 4 - 1
src/components/product/SelectGoods.vue

@@ -309,7 +309,10 @@ const handleSelect = (row) => {
       message: "该产品已选择",
       type: "info",
     });
-  goodList.value.push(row);
+  goodList.value.push({
+    ...row,
+    goodType: sourceList.value.pagination.definition,
+  });
   return ElMessage({
     message: "选择成功",
     type: "success",

+ 96 - 67
src/views/oa/mailList/interior/index.vue

@@ -16,8 +16,21 @@
         :action-list="[]"
         @get-list="getList"
       >
-        <template #slotName="{ item }">
-          {{ item.createTime }}
+        <template #phoneNumber="{ item }">
+          <div>
+            <span v-for="(x, index) in getTypeData(item, 0)">
+              {{ x.contactNumber }}
+              <span v-if="index < getTypeData(item, 0).length - 1">,</span>
+            </span>
+          </div>
+        </template>
+        <template #email="{ item }">
+          <div>
+            <span v-for="(x, index) in getTypeData(item, 1)">
+              {{ x.contactNumber }}
+              <span v-if="index < getTypeData(item, 1).length - 1">,</span>
+            </span>
+          </div>
         </template>
       </byTable>
     </div>
@@ -44,26 +57,42 @@
               label-width="0px"
               style="margin-top: 15px"
             >
-              <el-table :data="formData.data.supplierPriceList">
-                <el-table-column prop="pricea" label="类型" min-width="150">
+              <el-table :data="formData.data.internalAddressBookList">
+                <el-table-column prop="type" label="类型" min-width="150">
                   <template #default="{ row, $index }">
                     <el-form-item
-                      :prop="'supplierPriceList.' + $index + '.pricea'"
-                      :rules="rules.pricea"
+                      :prop="'internalAddressBookList.' + $index + '.type'"
+                      :rules="rules.type"
                       :inline-message="true"
                     >
-                      <el-input v-model="row.pricea" placeholder="请输入" />
+                      <el-select v-model="row.type" placeholder="请选择">
+                        <el-option
+                          v-for="item in contactInformationType"
+                          :label="item.dictValue"
+                          :value="item.dictKey"
+                        >
+                        </el-option>
+                      </el-select>
                     </el-form-item>
                   </template>
                 </el-table-column>
-                <el-table-column prop="price" label="联系号码" min-width="150">
+                <el-table-column
+                  prop="contactNumber"
+                  label="联系号码"
+                  min-width="150"
+                >
                   <template #default="{ row, $index }">
                     <el-form-item
-                      :prop="'supplierPriceList.' + $index + '.price'"
-                      :rules="rules.price"
+                      :prop="
+                        'internalAddressBookList.' + $index + '.contactNumber'
+                      "
+                      :rules="rules.contactNumber"
                       :inline-message="true"
                     >
-                      <el-input v-model="row.price" placeholder="请输入" />
+                      <el-input
+                        v-model="row.contactNumber"
+                        placeholder="请输入"
+                      />
                     </el-form-item>
                   </template>
                 </el-table-column>
@@ -117,20 +146,10 @@ let dialogVisible = ref(false);
 let roomDialogVisible = ref(false);
 let modalType = ref("add");
 let rules = ref({
-  name: [{ required: true, message: "请输入平台名称", trigger: "blur" }],
-  endPoint: [{ required: true, message: "请输入EndPoint", trigger: "blur" }],
-  accessKey: [{ required: true, message: "请输入access_key", trigger: "blur" }],
-  accessCode: [
-    { required: true, message: "请输入access_code", trigger: "blur" },
+  type: [{ required: true, message: "请选择类型", trigger: "change" }],
+  contactNumber: [
+    { required: true, message: "请输入联系号码", trigger: "blur" },
   ],
-
-  accessKeyId: [
-    { required: true, message: "请输入Access Key Id", trigger: "blur" },
-  ],
-  secretAccessKey: [
-    { required: true, message: "请输入Secret Access Key", trigger: "blur" },
-  ],
-  productId: [{ required: true, message: "请输入项目 ID", trigger: "blur" }],
 });
 const { proxy } = getCurrentInstance();
 const selectConfig = [];
@@ -139,44 +158,43 @@ const config = computed(() => {
     {
       attrs: {
         label: "部门",
-        prop: "type",
-        width: 100,
       },
-      render(type) {
-        return "华为";
+      render(row) {
+        return row.dept.deptName;
       },
     },
     {
       attrs: {
         label: "工号",
-        prop: "name",
-        width: 150,
+        prop: "deptId",
       },
     },
     {
       attrs: {
         label: "姓名",
-        prop: "endPoint",
+        prop: "nickName",
       },
     },
     {
       attrs: {
+        type: "slot",
+        slot: "phoneNumber",
         label: "手机号",
-        prop: "accessKeyId",
       },
     },
     {
       attrs: {
+        type: "slot",
+        slot: "email",
         label: "电子邮箱",
-        prop: "secretAccessKey",
-      },
-    },
-    {
-      attrs: {
-        label: "座机号码",
-        prop: "productId",
       },
     },
+    // {
+    //   attrs: {
+    //     label: "座机号码",
+    //     prop: "productId",
+    //   },
+    // },
 
     {
       attrs: {
@@ -222,15 +240,15 @@ const formConfig = computed(() => {
   return [
     {
       type: "input",
-      prop: "type",
+      prop: "deptName",
       label: "所属部门",
-      required: true,
       disabled: true,
     },
     {
-      prop: "name",
       type: "input",
+      prop: "nickName",
       label: "姓名",
+      disabled: true,
     },
     {
       type: "slot",
@@ -253,23 +271,17 @@ const getList = async (req) => {
       }, 200);
     });
 };
+
 const openModal = () => {
   dialogVisible.value = true;
   modalType.value = "add";
   formData.data = {};
 };
-const selection = ref({
-  data: [],
-});
-const select = (_selection, row) => {
-  selection.value.data = _selection;
-  console.log(_selection.length);
-};
+
 const submitForm = () => {
-  console.log(byform.value);
   byform.value.handleSubmit((valid) => {
     submitLoading.value = true;
-    proxy.post("/tdaConfig/" + modalType.value, formData.data).then(
+    proxy.post("/internalAddressBook/" + modalType.value, formData.data).then(
       (res) => {
         ElMessage({
           message: modalType.value == "add" ? "添加成功" : "编辑成功",
@@ -286,39 +298,56 @@ const submitForm = () => {
 
 const getDtl = (row) => {
   modalType.value = "edit";
-  formData.data = {
-    supplierPriceList: [],
-  };
-  dialogVisible.value = true;
-  // proxy.post("/tdaConfig/detail", { id: row.id }).then((res) => {
-  //   formData.data = res;
-  //   console.log(formData);
-  //   dialogVisible.value = true;
-  // });
+  proxy
+    .post("/internalAddressBook/detail", { userId: row.userId })
+    .then((res) => {
+      res.forEach((x) => {
+        x.type = x.type + "";
+      });
+      formData.data = {
+        deptName: row.dept.deptName,
+        nickName: row.nickName,
+        internalAddressBookList: res,
+        userId: row.userId,
+      };
+      dialogVisible.value = true;
+    });
 };
 
 const addRow = () => {
-  formData.data.supplierPriceList.push({
-    price: "",
-    pricea: "",
+  formData.data.internalAddressBookList.push({
+    contactNumber: "",
+    type: "",
+  });
+};
+
+const handleRemove = (index) => {
+  formData.data.internalAddressBookList.splice(index, 1);
+  return ElMessage({
+    message: "删除成功!",
+    type: "success",
   });
 };
 
+const contactInformationType = ref([]);
 const getDict = () => {
-  let tenantId = "";
-  // const tenantId = useUserStore().userInfo.tenantId;
+  const tenantId = useUserStore().user.tenantId;
   proxy
     .post("/dictTenantData/page", {
       pageNum: 1,
       pageSize: 999,
-      tenantId: tenantId,
+      tenantId: "@福建宏星!#¥%……&*()",
       dictCode: "contact_information",
     })
     .then((res) => {
-      console.log(res);
+      contactInformationType.value = res.rows;
     });
 };
 
+const getTypeData = (item, type) => {
+  return item.internalAddressBookList.filter((x) => x.type === type) || [];
+};
+
 getList();
 getDict();
 </script>

+ 260 - 208
src/views/process/processApproval/index.vue

@@ -1,242 +1,294 @@
 <template>
-    <div class="processApproval">
-      <div class="left-card">
+  <div class="processApproval">
+    <div class="left-card">
+      <div class="top">
         <div class="commons-title title">流程标题</div>
-        <div class="">
-          <p>流程内容</p>
-          <p>流程内容</p>
-          <p>流程内容</p>
-          <p>流程内容</p>
-          <p>流程内容</p>
-          <p>流程内容</p>
-          <p>流程内容</p>
-          <p>流程内容</p>
-        </div>
+        <SendSubscribe ref="makeDom"></SendSubscribe>
       </div>
-      <div class="right-card">
-        <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
-          <el-tab-pane label="审批记录" name="first">
-            <ul class="flow-chart">
-              <li>
-                <div class="left-icon">
-                  <i class="iconfont icon-iconm_daick"></i>
-                  <i class="iconfont icon-iconm_daohzj right-btm-status"></i>
+      <div class="bottom">
+        <div class="commons-title title">处理意见</div>
+        <el-form :model="flowForm" :rules="flowRules" ref="flowFormDom">
+          <el-form-item prop="remark" label-width="0px" label="">
+            <el-input
+              type="textarea"
+              placeholder="请输入"
+              v-model="flowForm.remark"
+            >
+            </el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-button @click="handleSubmit"> ceshi </el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+    </div>
+    <div class="right-card">
+      <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+        <el-tab-pane label="审批记录" name="first">
+          <ul class="flow-chart">
+            <li>
+              <div class="left-icon">
+                <i class="iconfont icon-iconm_daick"></i>
+                <i class="iconfont icon-iconm_daohzj right-btm-status"></i>
+              </div>
+              <div class="right-conetnt">
+                <div class="name">
+                  发起人:张三
+                  <span>2022-11-11 00:00:00</span>
                 </div>
-                <div class="right-conetnt">
-                  <div class="name">
-                    发起人:张三
-                    <span>2022-11-11 00:00:00</span>
-                  </div>
-  
-                  <div class="remark">
-                    <div class="label">发起审批</div>
-                    1231231231231321231
-                  </div>
+
+                <div class="remark">
+                  <div class="label">发起审批</div>
+                  1231231231231321231
                 </div>
-                <div class="line"></div>
-              </li>
-              <li>
-                <div class="left-icon">
-                  <i class="iconfont icon-iconm_daick"></i>
-                  <i class="iconfont icon-iconm_daohzj right-btm-status"></i>
+              </div>
+              <div class="line"></div>
+            </li>
+            <li>
+              <div class="left-icon">
+                <i class="iconfont icon-iconm_daick"></i>
+                <i class="iconfont icon-iconm_daohzj right-btm-status"></i>
+              </div>
+              <div class="right-conetnt">
+                <div class="name">
+                  发起人:张三
+                  <span>2022-11-11 00:00:00</span>
                 </div>
-                <div class="right-conetnt">
-                  <div class="name">
-                    发起人:张三
-                    <span>2022-11-11 00:00:00</span>
-                  </div>
-  
-                  <div class="remark">
-                    <div class="label">发起审批</div>
-  
-                    <div>
-                      啊圣诞快乐家里快速打击啊老师的煎熬老师的煎熬上来看大家速度快垃圾上单绿卡数据的卡拉数据的卡拉设计的拉开时间
-                    </div>
+
+                <div class="remark">
+                  <div class="label">发起审批</div>
+
+                  <div>
+                    啊圣诞快乐家里快速打击啊老师的煎熬老师的煎熬上来看大家速度快垃圾上单绿卡数据的卡拉数据的卡拉设计的拉开时间
                   </div>
                 </div>
-                <div class="line"></div>
-              </li>
-              <li>
-                <div class="left-icon">
-                  <i class="iconfont icon-iconm_daick"></i>
-                  <i class="iconfont icon-iconm_daohzj right-btm-status"></i>
+              </div>
+              <div class="line"></div>
+            </li>
+            <li>
+              <div class="left-icon">
+                <i class="iconfont icon-iconm_daick"></i>
+                <i class="iconfont icon-iconm_daohzj right-btm-status"></i>
+              </div>
+              <div class="right-conetnt">
+                <div class="name">
+                  发起人:张三
+                  <span>2022-11-11 00:00:00</span>
                 </div>
-                <div class="right-conetnt">
-                  <div class="name">
-                    发起人:张三
-                    <span>2022-11-11 00:00:00</span>
-                  </div>
-  
-                  <div class="remark">
-                    <div class="label">发起审批</div>
-  
-                    <div>
-                      啊圣诞快乐家里快速打击啊老师的煎熬老师的煎熬上来看大家速度快垃圾上单绿卡数据的卡拉数据的卡拉设计的拉开时间
-                    </div>
+
+                <div class="remark">
+                  <div class="label">发起审批</div>
+
+                  <div>
+                    啊圣诞快乐家里快速打击啊老师的煎熬老师的煎熬上来看大家速度快垃圾上单绿卡数据的卡拉数据的卡拉设计的拉开时间
                   </div>
                 </div>
-                <div class="line"></div>
-              </li>
-              <li>
-                <div class="left-icon">
-                  <i class="iconfont icon-iconm_daick"></i>
-                  <i class="iconfont icon-iconm_daohzj right-btm-status"></i>
+              </div>
+              <div class="line"></div>
+            </li>
+            <li>
+              <div class="left-icon">
+                <i class="iconfont icon-iconm_daick"></i>
+                <i class="iconfont icon-iconm_daohzj right-btm-status"></i>
+              </div>
+              <div class="right-conetnt">
+                <div class="name">
+                  发起人:张三
+                  <span>2022-11-11 00:00:00</span>
                 </div>
-                <div class="right-conetnt">
-                  <div class="name">
-                    发起人:张三
-                    <span>2022-11-11 00:00:00</span>
-                  </div>
-  
-                  <div class="remark">
-                    <div class="label">发起审批</div>
-  
-                    <div>
-                      啊圣诞快乐家里快速打击啊老师的煎熬老师的煎熬上来看大家速度快垃圾上单绿卡数据的卡拉数据的卡拉设计的拉开时间
-                    </div>
+
+                <div class="remark">
+                  <div class="label">发起审批</div>
+
+                  <div>
+                    啊圣诞快乐家里快速打击啊老师的煎熬老师的煎熬上来看大家速度快垃圾上单绿卡数据的卡拉数据的卡拉设计的拉开时间
                   </div>
                 </div>
-                <div class="line"></div>
-              </li>
-              <li>
-                <div class="left-icon">
-                  <i class="iconfont icon-iconm_daick"></i>
-                  <i class="iconfont icon-iconm_daohzj right-btm-status"></i>
+              </div>
+              <div class="line"></div>
+            </li>
+            <li>
+              <div class="left-icon">
+                <i class="iconfont icon-iconm_daick"></i>
+                <i class="iconfont icon-iconm_daohzj right-btm-status"></i>
+              </div>
+              <div class="right-conetnt">
+                <div class="name">
+                  发起人:张三
+                  <span>2022-11-11 00:00:00</span>
                 </div>
-                <div class="right-conetnt">
-                  <div class="name">
-                    发起人:张三
-                    <span>2022-11-11 00:00:00</span>
-                  </div>
-  
-                  <div class="remark">
-                    <div class="label">发起审批</div>
-  
-                    <div>
-                      啊圣诞快乐家里快速打击啊老师的煎熬老师的煎熬上来看大家速度快垃圾上单绿卡数据的卡拉数据的卡拉设计的拉开时间
-                    </div>
+
+                <div class="remark">
+                  <div class="label">发起审批</div>
+
+                  <div>
+                    啊圣诞快乐家里快速打击啊老师的煎熬老师的煎熬上来看大家速度快垃圾上单绿卡数据的卡拉数据的卡拉设计的拉开时间
                   </div>
                 </div>
-                <div class="line"></div>
-              </li>
-            </ul>
-          </el-tab-pane>
-          <el-tab-pane label="决策辅助" name="second">决策辅助</el-tab-pane>
-        </el-tabs>
-      </div>
+              </div>
+              <div class="line"></div>
+            </li>
+          </ul>
+        </el-tab-pane>
+        <el-tab-pane label="决策辅助" name="second">决策辅助</el-tab-pane>
+      </el-tabs>
     </div>
-  </template>
+  </div>
+</template>
+
+
+
+<script setup>
+import SendSubscribe from "@/components/process/SendSubscribe";
+const activeName = ref("first");
+const handleClick = (tab, event) => {
+  console.log(tab, event);
+};
+const flowForm = reactive({
+  flowKey: "",
+  handleUserId: "",
+  remark: "",
+  data: {},
+});
+const flowRules = reactive({
+  remark: [{ required: true, message: "请输入处理意见", trigger: "blur" }],
+});
+const { proxy } = getCurrentInstance();
+const makeDom = ref(null); //组件实例
+const flowFormDom = ref(null);
+const handleSubmit = async () => {
+  try {
+    const flag = await makeDom.value.handleSubmit();
+    if (flag) {
+      const data = makeDom.value.submitData;
+      flowFormDom.value.validate((vaild) => {
+        if (vaild) {
+          data.subscribeDetailList = data.subscribeDetailList.map((x) => ({
+            bussinessId: x.bussinessId,
+            count: x.count,
+            remark: x.remark,
+          }));
+          proxy.post("/subscribe/add", data).then((res) => {
+            console.log(res, "wss");
+          });
+        }
+      });
+    }
+  } catch (err) {
+    console.log("数据未填完整!", err);
+  }
+};
+
+onMounted(() => {});
+</script>
+
   <style lang="scss" scoped>
-  .processApproval {
+.processApproval {
+  display: flex;
+  justify-content: space-between;
+  margin-top: 20px;
+  padding: 0 20px;
+  height: calc(100vh - 130px);
+  .left-card {
+    background: #fff;
+    border-radius: 4px;
+    padding: 20px;
+    flex: 1;
+    margin-right: 20px;
     display: flex;
-    justify-content: space-between;
-    margin-top: 20px;
-    padding: 0 20px;
-    .left-card {
-      background: #fff;
-      border-radius: 4px;
-      padding: 20px;
+    flex-direction: column;
+    .top {
       flex: 1;
-      margin-right: 20px;
+      overflow-y: auto;
+      background: #fff;
     }
-    .right-card {
+    .bottom {
+      height: 155px;
       background: #fff;
-      border-radius: 4px;
-      padding: 0 20px 20px;
-      width: 600px;
-      box-sizing: border-box;
-      .flow-chart {
-        padding: 0;
+    }
+  }
+  .right-card {
+    background: #fff;
+    border-radius: 4px;
+    padding: 0 20px 20px;
+    width: 400px;
+    box-sizing: border-box;
+    .flow-chart {
+      overflow: auto;
+      padding: 0;
+      margin: 0;
+      li {
         margin: 0;
-        li {
-          margin: 0;
-          padding: 0 0 20px;
-          list-style: none;
-          display: flex;
-          justify-content: space-between;
-          position: relative;
-          .right-conetnt {
-            flex: 1;
-            .name {
-              font-size: 12px;
-              color: #333;
-              margin-bottom: 10px;
-              span {
-                color: #999;
-                float: right;
-              }
-            }
-            .remark {
-              padding: 10px;
-              color: #666666;
-              font-size: 12px;
-              background: #f1f1f1;
-              border-radius: 2px;
-              .label {
-                color: #39c55a;
-                margin-bottom: 10px;
-              }
+        padding: 0 0 20px;
+        list-style: none;
+        display: flex;
+        justify-content: space-between;
+        position: relative;
+        .right-conetnt {
+          flex: 1;
+          .name {
+            font-size: 12px;
+            color: #333;
+            margin-bottom: 10px;
+            span {
+              color: #999;
+              float: right;
             }
           }
-          .left-icon {
-            width: 40px;
-            height: 40px;
-            text-align: center;
-            line-height: 40px;
-            background: #0084ff;
-            border-radius: 10px;
-            color: #fff;
-            font-size: 20px;
-            position: relative;
-            margin-right: 27px;
-            z-index: 2;
-            .right-btm-status {
-              position: absolute;
-              bottom: 0px;
-              right: -10px;
-              height: 20px;
-              width: 20px;
-              line-height: 16px;
-              border-radius: 10px;
-              background: #39c55a;
-              border: 2px solid #fff;
-              font-size: 12px;
-              box-sizing: border-box;
+          .remark {
+            padding: 10px;
+            color: #666666;
+            font-size: 12px;
+            background: #f1f1f1;
+            border-radius: 2px;
+            .label {
+              color: #39c55a;
+              margin-bottom: 10px;
             }
           }
         }
-        li::before {
-          content: "";
-          position: absolute;
-          top: 0;
-          left: 20px;
-          width: 2px;
-          height: 100%;
-          background: #ddd;
-          z-index: 1;
-        }
-        li:last-child::before {
-          display: none;
+        .left-icon {
+          width: 40px;
+          height: 40px;
+          text-align: center;
+          line-height: 40px;
+          background: #0084ff;
+          border-radius: 10px;
+          color: #fff;
+          font-size: 20px;
+          position: relative;
+          margin-right: 27px;
+          z-index: 2;
+          .right-btm-status {
+            position: absolute;
+            bottom: 0px;
+            right: -10px;
+            height: 20px;
+            width: 20px;
+            line-height: 16px;
+            border-radius: 10px;
+            background: #39c55a;
+            border: 2px solid #fff;
+            font-size: 12px;
+            box-sizing: border-box;
+          }
         }
       }
+      li::before {
+        content: "";
+        position: absolute;
+        top: 0;
+        left: 20px;
+        width: 2px;
+        height: 100%;
+        background: #ddd;
+        z-index: 1;
+      }
+      li:last-child::before {
+        display: none;
+      }
     }
   }
-  </style>
-  <script setup>
-  import {
-    ref,
-    reactive,
-    computed,
-    watch,
-    onMounted,
-    onUnmounted,
-    nextTick,
-    defineEmits,
-    defineExpose,
-  } from "vue";
-  const activeName = ref("first");
-  const handleClick = (tab, event) => {
-    console.log(tab, event);
-  };
-  </script>
+}
+</style>
       

+ 14 - 23
src/views/purchaseManage/purchaseManage/subscribe/index.vue

@@ -166,7 +166,7 @@ const { proxy } = getCurrentInstance();
 const selectConfig = reactive([
   {
     label: "货品类型",
-    prop: "type",
+    prop: "productType",
     data: [
       {
         label: "产品",
@@ -180,17 +180,8 @@ const selectConfig = reactive([
   },
   {
     label: "状态",
-    prop: "type",
-    data: [
-      {
-        label: "产品",
-        value: "1",
-      },
-      {
-        label: "物料",
-        value: "2",
-      },
-    ],
+    prop: "status",
+    data: [],
   },
 ]);
 const config = computed(() => {
@@ -198,55 +189,55 @@ const config = computed(() => {
     {
       attrs: {
         label: "申购单号",
-        prop: "name",
+        prop: "subscribeCode",
       },
     },
     {
       attrs: {
         label: "货品类型",
-        prop: "remarks",
+        prop: "productType",
       },
     },
     {
       attrs: {
         label: "所属分类",
-        prop: "remarks",
+        prop: "productCategory",
       },
     },
     {
       attrs: {
         label: "货品编码",
-        prop: "remarks",
+        prop: "productCode",
       },
     },
     {
       attrs: {
         label: "货品名称",
-        prop: "remarks",
+        prop: "productName",
       },
     },
     {
       attrs: {
         label: "单位",
-        prop: "remarks",
+        prop: "productUnit",
       },
     },
     {
       attrs: {
         label: "申购数量",
-        prop: "remarks",
+        prop: "count",
       },
     },
     {
       attrs: {
         label: "状态",
-        prop: "remarks",
+        prop: "status",
       },
     },
     {
       attrs: {
         label: "申购原因",
-        prop: "remarks",
+        prop: "subscribeContent",
       },
     },
     {
@@ -271,7 +262,7 @@ const config = computed(() => {
           // },
           {
             attrs: {
-              label: "删除",
+              label: "作废",
               type: "danger",
               text: true,
             },
@@ -368,7 +359,7 @@ const getList = async (req) => {
   sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
   loading.value = true;
   proxy
-    .post("/productionProcesses/page", sourceList.value.pagination)
+    .post("/subscribeDetail/page", sourceList.value.pagination)
     .then((message) => {
       console.log(message);
       sourceList.value.data = message.rows;

+ 11 - 5
src/views/purchaseManage/supplier/supplier/index.vue

@@ -115,7 +115,8 @@
                 <el-input
                   v-model="formData.data.contactNumber"
                   placeholder="联系电话"
-                  @input="(val) => val.replace(/[^\d]/g, '')"
+                  :formatter="(val) => val.replace(/[^\d\-]/g, '')"
+                  :parser="(val) => val.replace(/[^\d\-]/g, '')"
                 >
                 </el-input>
               </el-form-item>
@@ -199,6 +200,15 @@ const sourceList = ref({
 let dialogVisible = ref(false);
 let modalType = ref("add");
 let fileList = ref([]);
+const checkContactNumber = (rule, val, callback) => {
+  if (val === "") {
+    callback(new Error("请输入联系电话"));
+  } else {
+    val = "aaa";
+  }
+  console.log(rule, val, callback, "213");
+  // @input="(val) => val.replace(/[^\d]/g, '')"
+};
 let rules = ref({
   name: [{ required: true, message: "请输入供应商名称", trigger: "blur" }],
   type: [{ required: true, message: "请选择供应商类型", trigger: "change" }],
@@ -527,10 +537,6 @@ const getCityData = (id, type, isChange) => {
 };
 getCityData("0");
 getList();
-
-// const checkContactNumber = ()=>{
-
-// }
 </script>
   
 <style lang="scss" scoped>