cz há 1 ano atrás
pai
commit
0991a75dbc

+ 2 - 3
src/components/PDF/contractPDFOne.vue

@@ -334,7 +334,6 @@ const getPdfData = (query) => {
     }
   });
 };
-
 const productUnit = ref([]);
 const tradeMethods = ref([]);
 const shippingMethod = ref([]);
@@ -361,8 +360,8 @@ const getBalance = (val) => {
   }
 };
 watch(
-  props.rowData,
-  () => {
+  () => props.rowData,
+  (val) => {
     if (props.rowData.id) {
       getPdfData({ id: props.rowData.id });
     } else if (props.rowData.code) {

+ 247 - 239
src/components/byForm/index.vue

@@ -9,251 +9,259 @@
       ref="byForm"
       :disabled="formOption.disabled || false"
     >
-      <el-form-item
-        :label="i.label"
-        v-for="i in formConfig"
-        :key="i.model"
-        :prop="i.prop"
-        v-show="i.isShow || i.isShow == undefined"
-        :style="
-          i.type == 'title'
-            ? 'width:100%'
-            : i.itemWidth
-            ? 'width:' + i.itemWidth + '%'
-            : formOption.itemWidth
-            ? 'width:' + formOption.itemWidth + '%'
-            : '100%'
-        "
-        :class="i.type == 'json' ? i.isHide ? 'by-form-json dn' : 'by-form-json' : i.isHide ? 'dn' : ''"
-      >
-        <el-input
-          v-if="i.type == 'input'"
-          v-model="formData[i.prop]"
-          :placeholder="i.placeholder || $t('common.pleaseEnter')"
-          @input="(e) => commonsEmit(e, i)"
-          @change="(e) => commonsEmitChange(e, i)"
-          :type="i.itemType ? i.itemType : 'text'"
-          :disabled="i.disabled ? i.disabled : false"
-          :max="i.max"
-          :min="i.min"
-          :maxlength="i.maxlength"
-          :readonly="i.readonly ? i.readonly : false"
-          :style="i.style"
-        />
-        <el-input
-          v-if="i.type == 'selectInput'"
-          v-model="formData[i.prop]"
-          :placeholder="i.placeholder || $t('common.pleaseEnter')"
-          @input="(e) => commonsEmit(e, i)"
-          :type="i.itemType ? i.itemType : 'text'"
-          :disabled="i.disabled ? i.disabled : false"
-          :max="i.max"
-          :min="i.min"
-          :maxlength="i.maxlength"
-          :readonly="i.readonly ? i.readonly : false"
+      <template v-for="i in formConfig" :key="i.model">
+        <el-form-item
+          :label="i.label"
+          :prop="i.prop"
+          v-if="i.isShow || i.isShow == undefined"
+          :style="
+            i.type == 'title'
+              ? 'width:100%'
+              : i.itemWidth
+              ? 'width:' + i.itemWidth + '%'
+              : formOption.itemWidth
+              ? 'width:' + formOption.itemWidth + '%'
+              : '100%'
+          "
+          :class="
+            i.type == 'json'
+              ? i.isHide
+                ? 'by-form-json dn'
+                : 'by-form-json'
+              : i.isHide
+              ? 'dn'
+              : ''
+          "
         >
-          <template #prepend>
-            <el-select
-              v-model="formData[i.selectProp]"
-              :placeholder="i.selectPlaceholder || $t('common.pleaseSelect')"
-              @change="(e) => commonsEmit(e, i)"
-              :disabled="i.disabled ? i.disabled : false"
-              :readonly="i.readonly ? i.readonly : false"
-              style="width: 80px"
-            >
-              <el-option
-                :label="j.title || j.name || j.label"
-                :value="j.id || j.value"
-                v-for="j in i.data"
-                :key="j.id"
-              >
-              </el-option>
-            </el-select>
-          </template>
-        </el-input>
-        <el-select
-          v-model="formData[i.prop]"
-          :multiple="i.multiple || false"
-          v-else-if="i.type == 'select'"
-          :placeholder="i.placeholder || $t('common.pleaseSelect')"
-          @change="(e) => commonsEmit(e, i)"
-          :disabled="i.disabled ? i.disabled : false"
-          :clearable="i.clearable ? i.clearable : false"
-          :filterable="i.filterable ? true : false"
-          :style="i.style"
-          :readonly="i.readonly ? i.readonly : false"
-        >
-          <el-option
-            :label="j.title || j.name || j.label"
-            :value="j.id || j.value"
-            v-for="j in i.data"
-            :key="j.id"
+          <el-input
+            v-if="i.type == 'input'"
+            v-model="formData[i.prop]"
+            :placeholder="i.placeholder || $t('common.pleaseEnter')"
+            @input="(e) => commonsEmit(e, i)"
+            @change="(e) => commonsEmitChange(e, i)"
+            :type="i.itemType ? i.itemType : 'text'"
+            :disabled="i.disabled ? i.disabled : false"
+            :max="i.max"
+            :min="i.min"
+            :maxlength="i.maxlength"
+            :readonly="i.readonly ? i.readonly : false"
+            :style="i.style"
+          />
+          <el-input
+            v-if="i.type == 'selectInput'"
+            v-model="formData[i.prop]"
+            :placeholder="i.placeholder || $t('common.pleaseEnter')"
+            @input="(e) => commonsEmit(e, i)"
+            :type="i.itemType ? i.itemType : 'text'"
+            :disabled="i.disabled ? i.disabled : false"
+            :max="i.max"
+            :min="i.min"
+            :maxlength="i.maxlength"
+            :readonly="i.readonly ? i.readonly : false"
           >
-          </el-option>
-        </el-select>
-        <el-tree-select
-          v-model="formData[i.prop]"
-          v-else-if="i.type == 'treeSelect'"
-          :data="i.data"
-          :readonly="i.readonly ? i.readonly : false"
-          :props="{
-            value: i.propsTreeValue || 'id',
-            label: i.propsTreeLabel || 'label',
-            children: i.propsTreeChildren || 'children',
-          }"
-          value-key="id"
-          :placeholder="i.placeholder || $t('common.pleaseSelect')"
-          :disabled="i.disabled ? i.disabled : false"
-          check-strictly
-          :style="i.style"
-        />
-        <el-date-picker
-          v-model="formData[i.prop]"
-          :readonly="i.readonly ? i.readonly : false"
-          v-else-if="i.type == 'date'"
-          :type="i.itemType"
-          :placeholder="i.placeholder || $t('common.pleaseSelectTime')"
-          @change="(e) => commonsEmit(e, i)"
-          :disabled="i.disabled ? i.disabled : false"
-          :format="i.format ? i.format : dateFormatInit(i.itemType)"
-          :value-format="i.format ? i.format : dateFormatInit(i.itemType)"
-        />
-        <el-switch
-          :disabled="i.disabled ? i.disabled : false"
-          v-else-if="i.type == 'switch'"
-          :readonly="i.readonly ? i.readonly : false"
-          v-model="formData[i.prop]"
-        />
-        <el-checkbox-group
-          v-else-if="i.type == 'checkbox'"
-          v-model="formData[i.prop]"
-          :readonly="i.readonly ? i.readonly : false"
-          :disabled="i.disabled ? i.disabled : false"
-        >
-          <el-checkbox
-            v-for="j in i.data"
-            :key="j.id || j.value"
-            :label="j.id || j.value"
-            name="type"
+            <template #prepend>
+              <el-select
+                v-model="formData[i.selectProp]"
+                :placeholder="i.selectPlaceholder || $t('common.pleaseSelect')"
+                @change="(e) => commonsEmit(e, i)"
+                :disabled="i.disabled ? i.disabled : false"
+                :readonly="i.readonly ? i.readonly : false"
+                style="width: 80px"
+              >
+                <el-option
+                  :label="j.title || j.name || j.label"
+                  :value="j.id || j.value"
+                  v-for="j in i.data"
+                  :key="j.id"
+                >
+                </el-option>
+              </el-select>
+            </template>
+          </el-input>
+          <el-select
+            v-model="formData[i.prop]"
+            :multiple="i.multiple || false"
+            v-else-if="i.type == 'select'"
+            :placeholder="i.placeholder || $t('common.pleaseSelect')"
+            @change="(e) => commonsEmit(e, i)"
+            :disabled="i.disabled ? i.disabled : false"
+            :clearable="i.clearable ? i.clearable : false"
+            :filterable="i.filterable ? true : false"
+            :style="i.style"
+            :readonly="i.readonly ? i.readonly : false"
           >
-            {{ j.name || j.label }}
-          </el-checkbox>
-        </el-checkbox-group>
-        <el-radio-group
-          v-else-if="i.type == 'radio'"
-          v-model="formData[i.prop]"
-          :readonly="i.readonly ? i.readonly : false"
-          :disabled="i.disabled ? i.disabled : false"
-        >
-          <el-radio
-            :border="i.border ? i.border : false"
-            v-for="j in i.data"
-            :key="j.id || j.value"
-            :label="j.id || j.value"
-            name="type"
+            <el-option
+              :label="j.title || j.name || j.label"
+              :value="j.id || j.value"
+              v-for="j in i.data"
+              :key="j.id"
+            >
+            </el-option>
+          </el-select>
+          <el-tree-select
+            v-model="formData[i.prop]"
+            v-else-if="i.type == 'treeSelect'"
+            :data="i.data"
+            :readonly="i.readonly ? i.readonly : false"
+            :props="{
+              value: i.propsTreeValue || 'id',
+              label: i.propsTreeLabel || 'label',
+              children: i.propsTreeChildren || 'children',
+            }"
+            value-key="id"
+            :placeholder="i.placeholder || $t('common.pleaseSelect')"
+            :disabled="i.disabled ? i.disabled : false"
+            check-strictly
+            :style="i.style"
+          />
+          <el-date-picker
+            v-model="formData[i.prop]"
+            :readonly="i.readonly ? i.readonly : false"
+            v-else-if="i.type == 'date'"
+            :type="i.itemType"
+            :placeholder="i.placeholder || $t('common.pleaseSelectTime')"
+            @change="(e) => commonsEmit(e, i)"
+            :disabled="i.disabled ? i.disabled : false"
+            :format="i.format ? i.format : dateFormatInit(i.itemType)"
+            :value-format="i.format ? i.format : dateFormatInit(i.itemType)"
+          />
+          <el-switch
+            :disabled="i.disabled ? i.disabled : false"
+            v-else-if="i.type == 'switch'"
+            :readonly="i.readonly ? i.readonly : false"
+            v-model="formData[i.prop]"
+          />
+          <el-checkbox-group
+            v-else-if="i.type == 'checkbox'"
+            v-model="formData[i.prop]"
+            :readonly="i.readonly ? i.readonly : false"
+            :disabled="i.disabled ? i.disabled : false"
           >
-            {{ j.name || j.label }}
-          </el-radio>
-        </el-radio-group>
-        <el-input-number
-          v-else-if="i.type == 'number'"
-          v-model="formData[i.prop]"
-          :readonly="i.readonly ? i.readonly : false"
-          :placeholder="i.placeholder || $t('common.pleaseEnter')"
-          @change="(e) => commonsEmit(e, i)"
-          :disabled="i.disabled ? i.disabled : false"
-          :min="i.min ? i.min : 0"
-          :max="i.max ? i.max : 9999999999"
-          :step="i.step ? i.step : 1"
-          :precision="i.precision !== '' ? i.precision : 2"
-          :controls="i.controls === false ? false : true"
-          :style="i.style"
-          onmousewheel="return false;"
-        >
-        </el-input-number>
-        <el-tree
-          v-else-if="i.type == 'tree'"
-          :data="i.data"
-          :props="i.props"
-          :readonly="i.readonly ? i.readonly : false"
-          :show-checkbox="i.showCheckbox || true"
-        >
-        </el-tree>
-        <el-cascader
-          v-else-if="i.type == 'cascader'"
-          :options="i.data"
-          :props="i.props"
-          :readonly="i.readonly ? i.readonly : false"
-          :placeholder="i.placeholder || $t('common.pleaseSelect')"
-          @change="(e) => commonsEmit(e, i)"
-          :disabled="i.disabled ? i.disabled : false"
-          :style="i.style"
-        >
-        </el-cascader>
-        <div class="form-title" v-else-if="i.type == 'title'">
-          {{ i.title }}
-        </div>
-        <slot :name="i.slotName" v-else-if="i.type == 'slot'">
-          {{ i.slotName }}插槽占位符
-        </slot>
-        <div class="upload" v-else-if="i.type == 'upload'">
-          <el-upload
+            <el-checkbox
+              v-for="j in i.data"
+              :key="j.id || j.value"
+              :label="j.id || j.value"
+              name="type"
+            >
+              {{ j.name || j.label }}
+            </el-checkbox>
+          </el-checkbox-group>
+          <el-radio-group
+            v-else-if="i.type == 'radio'"
             v-model="formData[i.prop]"
-            action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
-            :data="uploadData"
-            list-type="picture-card"
-            :on-remove="handleRemove"
-            :on-success="handleSuccess"
-            :before-upload="handleBeforeUpload"
+            :readonly="i.readonly ? i.readonly : false"
+            :disabled="i.disabled ? i.disabled : false"
           >
-            <!-- <el-icon class="el-icon--upload"><upload-filled /></el-icon> -->
-            <el-icon><Plus /></el-icon>
-          </el-upload>
-        </div>
-        <div
-          v-else-if="i.type == 'table'"
-          class="by-form-table"
-          style="width: 100%"
-        >
-          <el-table :data="formData[i.prop]" style="width: 100%">
-            <el-table-column
-              :prop="j.prop"
-              :label="j.label"
-              :width="i.width"
-              v-for="(j, jindex) in i.column"
+            <el-radio
+              :border="i.border ? i.border : false"
+              v-for="j in i.data"
+              :key="j.id || j.value"
+              :label="j.id || j.value"
+              name="type"
             >
-              <template #default="scope" v-if="j.type">
-                <component
-                  @change="(e) => formTableChange(e, scope, j)"
-                  v-model="scope.row[j.prop]"
-                  :is="formTableObj[j.type]"
-                  :placeholder="j.placeholder || $t('common.pleaseEnter')"
-                  :type="j.type == 'number' ? 'number' : 'text'"
-                >
-                  <el-option
-                    :label="n.title || n.name || n.label"
-                    :value="n.id || n.value"
-                    v-for="n in j.data"
-                    :key="n.id"
-                    v-if="j.type == 'select'"
-                  >
-                  </el-option>
-                </component>
-              </template>
-            </el-table-column>
-          </el-table>
-        </div>
-        <div v-else-if="i.type == 'json'">
-          <byForm
-            :formConfig="i.json"
-            :formOption="formOption"
+              {{ j.name || j.label }}
+            </el-radio>
+          </el-radio-group>
+          <el-input-number
+            v-else-if="i.type == 'number'"
             v-model="formData[i.prop]"
-            ref="byform"
-            :rules="rules"
+            :readonly="i.readonly ? i.readonly : false"
+            :placeholder="i.placeholder || $t('common.pleaseEnter')"
+            @change="(e) => commonsEmit(e, i)"
+            :disabled="i.disabled ? i.disabled : false"
+            :min="i.min ? i.min : 0"
+            :max="i.max ? i.max : 9999999999"
+            :step="i.step ? i.step : 1"
+            :precision="i.precision !== '' ? i.precision : 2"
+            :controls="i.controls === false ? false : true"
+            :style="i.style"
+            onmousewheel="return false;"
+          >
+          </el-input-number>
+          <el-tree
+            v-else-if="i.type == 'tree'"
+            :data="i.data"
+            :props="i.props"
+            :readonly="i.readonly ? i.readonly : false"
+            :show-checkbox="i.showCheckbox || true"
           >
-          </byForm>
-        </div>
-      </el-form-item>
+          </el-tree>
+          <el-cascader
+            v-else-if="i.type == 'cascader'"
+            :options="i.data"
+            :props="i.props"
+            :readonly="i.readonly ? i.readonly : false"
+            :placeholder="i.placeholder || $t('common.pleaseSelect')"
+            @change="(e) => commonsEmit(e, i)"
+            :disabled="i.disabled ? i.disabled : false"
+            :style="i.style"
+          >
+          </el-cascader>
+          <div class="form-title" v-else-if="i.type == 'title'">
+            {{ i.title }}
+          </div>
+          <slot :name="i.slotName" v-else-if="i.type == 'slot'">
+            {{ i.slotName }}插槽占位符
+          </slot>
+          <div class="upload" v-else-if="i.type == 'upload'">
+            <el-upload
+              v-model="formData[i.prop]"
+              action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
+              :data="uploadData"
+              list-type="picture-card"
+              :on-remove="handleRemove"
+              :on-success="handleSuccess"
+              :before-upload="handleBeforeUpload"
+            >
+              <!-- <el-icon class="el-icon--upload"><upload-filled /></el-icon> -->
+              <el-icon><Plus /></el-icon>
+            </el-upload>
+          </div>
+          <div
+            v-else-if="i.type == 'table'"
+            class="by-form-table"
+            style="width: 100%"
+          >
+            <el-table :data="formData[i.prop]" style="width: 100%">
+              <el-table-column
+                :prop="j.prop"
+                :label="j.label"
+                :width="i.width"
+                v-for="(j, jindex) in i.column"
+              >
+                <template #default="scope" v-if="j.type">
+                  <component
+                    @change="(e) => formTableChange(e, scope, j)"
+                    v-model="scope.row[j.prop]"
+                    :is="formTableObj[j.type]"
+                    :placeholder="j.placeholder || $t('common.pleaseEnter')"
+                    :type="j.type == 'number' ? 'number' : 'text'"
+                  >
+                    <el-option
+                      :label="n.title || n.name || n.label"
+                      :value="n.id || n.value"
+                      v-for="n in j.data"
+                      :key="n.id"
+                      v-if="j.type == 'select'"
+                    >
+                    </el-option>
+                  </component>
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+          <div v-else-if="i.type == 'json'">
+            <byForm
+              :formConfig="i.json"
+              :formOption="formOption"
+              v-model="formData[i.prop]"
+              ref="byform"
+              :rules="rules"
+            >
+            </byForm>
+          </div>
+        </el-form-item>
+      </template>
     </el-form>
   </div>
 </template>
@@ -520,10 +528,10 @@ loadInit();
 }
 .by-form .el-form--inline .el-form-item {
   margin-right: 0px;
-  
+
   box-sizing: border-box;
 }
-.by-form .el-form--inline>.el-form-item{
+.by-form .el-form--inline > .el-form-item {
   padding: 0 10px;
 }
 
@@ -539,6 +547,6 @@ loadInit();
 }
 
 .by-form-json {
-  padding: 0px!important;
+  padding: 0px !important;
 }
 </style>

+ 1 - 0
src/components/contractCom/contractDetails.vue

@@ -180,6 +180,7 @@ const pushProcessApproval = (row) => {
   });
   return;
 };
+
 const handleChange = (val) => {
   if (val === "first") {
     leftList.value = contractDataList.value;

+ 8 - 2
src/components/process/EHSD/Contract.vue

@@ -137,7 +137,7 @@
                   >
                     <el-option
                       v-for="item in countryData"
-                      :label="item.chineseName"
+                      :label="item.name"
                       :value="item.id"
                     >
                     </el-option>
@@ -463,7 +463,12 @@
                 <div v-else></div>
               </template>
             </el-table-column>
-            <el-table-column label="商品名称" min-width="180">
+            <el-table-column
+              prop="productCnName"
+              label="商品中文名"
+              min-width="130"
+            />
+            <el-table-column label="商品英文名" min-width="180">
               <template #default="{ row, $index }">
                 <div style="width: 100%">
                   <el-form-item
@@ -1380,6 +1385,7 @@ const selectProduct = (goods) => {
       formData.data.contractProductList.push({
         fileUrl: fileUrl,
         productId: goods.id,
+        productCnName: goods.nameEnglish,
         productName: goods.name,
         productModel:
           goods.productLong + "*" + goods.productWide + "*" + goods.productHigh,

+ 19 - 9
src/components/process/EHSD/ContractChange.vue

@@ -137,7 +137,7 @@
                   >
                     <el-option
                       v-for="item in countryData"
-                      :label="item.chineseName"
+                      :label="item.name"
                       :value="item.id"
                     >
                     </el-option>
@@ -463,7 +463,12 @@
                 <div v-else></div>
               </template>
             </el-table-column>
-            <el-table-column label="商品名称" min-width="180">
+            <el-table-column
+              prop="productCnName"
+              label="商品中文名"
+              min-width="130"
+            />
+            <el-table-column label="商品英文名" min-width="180">
               <template #default="{ row, $index }">
                 <div style="width: 100%">
                   <el-form-item
@@ -1009,13 +1014,6 @@ const rules = ref({
   rate: [{ required: true, message: "请输入汇率", trigger: "blur" }],
 });
 const getDict = () => {
-  proxy.post("/customer/selPage", { pageNum: 1, pageSize: 50 }).then((res) => {
-    customerList.value = res.rows.map((x) => ({
-      ...x,
-      label: x.name,
-      value: x.id,
-    }));
-  });
   proxy
     .getDictOne([
       "inner_packaging_method_ehsd",
@@ -1380,6 +1378,7 @@ const selectProduct = (goods) => {
       formData.data.contractProductList.push({
         fileUrl: fileUrl,
         productId: goods.id,
+        productCnName: goods.nameEnglish,
         productName: goods.name,
         productModel:
           goods.productLong + "*" + goods.productWide + "*" + goods.productHigh,
@@ -1793,6 +1792,17 @@ onMounted(() => {
   ) {
     let businessId = route.query.businessId;
     proxy.post("/contract/detail", { id: businessId }).then((res) => {
+      if (res && res.buyCorporationName) {
+        proxy
+          .post("/customer/selPage", { keyword: res.buyCorporationName })
+          .then((res) => {
+            customerList.value = res.rows.map((x) => ({
+              ...x,
+              label: x.name,
+              value: x.id,
+            }));
+          });
+      }
       if (!res.fileList) {
         res.fileList = [];
       }

+ 1 - 1
src/views/EHSD/saleContract/contractEHSD/index.vue

@@ -294,7 +294,7 @@ const config = computed(() => {
       attrs: {
         label: "预付比例",
         slot: "advanceRatio",
-        width: 140,
+        width: 100,
         align: "right",
       },
     },

+ 1 - 1
src/views/connect/E-mail/mail/com/mailList.vue

@@ -22,7 +22,7 @@
             style="color: #39c55a"
           >
             未读邮件 </span
-          ><span style="font-weight: 700">{{ unReadCount }}</span> 封)</span
+          ><span>{{ unReadCount }}</span> 封)</span
         >
       </div>
       <el-button

+ 367 - 373
src/views/index.vue

@@ -1,395 +1,389 @@
 <template>
-	<div class="app-container home">
-		
-		<div class="stat-warp">
-			<ul>
-				<li class="theme1" @click="toUrl('DealWith',1)">
-					<div class="num">{{toBeProcessedData.total}}</div>
-					<div class="label">我的待审批</div>
-					<div class="icon-box">
-						<i class="icon iconfont icon-iconm_waixht"></i>
-					</div>
-				</li>
-				<li class="theme2" @click="toUrl('DealWith',2)">
-					<div class="num">{{haveInitiatedData.total}}</div>
-					<div class="label">我的发起(未结束)</div>
-					<div class="icon-box">
-						<i class="icon iconfont icon-iconm_wofqd"></i>
-					</div>
-				</li>
-				<li class="theme3">
-					<div class="num">3</div>
-					<div class="label">未读消息</div>
-					<div class="icon-box">
-						<i class="icon iconfont icon-iconm_unread"></i>
-					</div>
-				</li>
-			</ul>
-		</div>
-		<div class="table-warp">
-			<div class="card">
-				<div class="commons-title">
-					我的待审批
-				</div>
-				<el-table :data="toBeProcessedData.rows" style="width: 100%">
-					<el-table-column prop="flowName" label="流程类型" />
-					<el-table-column prop="title" label="流程标题" />
-					<el-table-column prop="createUserName" label="发起人" />
-					<el-table-column prop="createTime" label="发起时间" />
-					<el-table-column fixed="right" label="操作" width="120">
-						<template #default="scope">
-							<el-button
-								link
-								type="primary"
-								size="small"
-								@click="pushProcessApproval(scope.row)"
-							>
-								审批
-							</el-button>
-						</template>
-					</el-table-column>
-				</el-table>
-			</div>
-			<div class="card">
-				<div class="commons-title">
-					业务提醒
-				</div>
-			</div>
-			<div class="card">
-				<div class="commons-title">
-					我的发起(未结束)
-				</div>
-				<el-table :data="haveInitiatedData.rows" style="width: 100%">
-					<el-table-column prop="flowName" label="流程类型" />
-					<el-table-column prop="title" label="流程标题" />
-					<el-table-column prop="createUserName" label="审批人" />
-					<el-table-column prop="createTime" label="发起时间" />
-					<el-table-column fixed="right" label="操作" width="120">
-						<template #default="scope">
-							<el-button
-								link
-								type="primary"
-								size="small"
-								@click="pushProcessApproval(scope.row)"
-							>
-								查看
-							</el-button>
-						</template>
-					</el-table-column>
-				</el-table>
-			</div>
-			<div class="card">
-				<div class="commons-title">
-					系统公告
-				</div>
-				<ul class="announcement">
-					<li v-for="i in sendMegData.rows" :key="i.id">
-						<div class="time">{{i.createTime}} <span>系统公告</span></div>
-						<div class="content">{{i.content}}</div>
-					</li>
-				</ul>
-			</div>
-		</div>
-		<!-- <byTableDemo></byTableDemo> -->
-		<!-- <el-input type="number" v-model='aaa' v-mousewheel></el-input> -->
-		<!-- 111112132131211 -->
-	</div>
+  <div class="app-container home">
+    <div class="stat-warp">
+      <ul>
+        <li class="theme1" @click="toUrl('DealWith', 1)">
+          <div class="num">{{ toBeProcessedData.total }}</div>
+          <div class="label">我的待审批</div>
+          <div class="icon-box">
+            <i class="icon iconfont icon-iconm_waixht"></i>
+          </div>
+        </li>
+        <li class="theme2" @click="toUrl('DealWith', 2)">
+          <div class="num">{{ haveInitiatedData.total }}</div>
+          <div class="label">我的发起(未结束)</div>
+          <div class="icon-box">
+            <i class="icon iconfont icon-iconm_wofqd"></i>
+          </div>
+        </li>
+        <li class="theme3">
+          <div class="num">3</div>
+          <div class="label">未读消息</div>
+          <div class="icon-box">
+            <i class="icon iconfont icon-iconm_unread"></i>
+          </div>
+        </li>
+      </ul>
+    </div>
+    <div class="table-warp">
+      <div class="card">
+        <div class="commons-title">我的待审批</div>
+        <el-table :data="toBeProcessedData.rows" style="width: 100%">
+          <el-table-column prop="flowName" label="流程类型" />
+          <el-table-column prop="title" label="流程标题" />
+          <el-table-column prop="createUserName" label="发起人" />
+          <el-table-column prop="createTime" label="发起时间" />
+          <el-table-column fixed="right" label="操作" width="120">
+            <template #default="scope">
+              <el-button
+                link
+                type="primary"
+                size="small"
+                @click="pushProcessApproval(scope.row)"
+              >
+                审批
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <div class="card">
+        <div class="commons-title">业务提醒</div>
+      </div>
+      <div class="card">
+        <div class="commons-title">我的发起(未结束)</div>
+        <el-table :data="haveInitiatedData.rows" style="width: 100%">
+          <el-table-column prop="flowName" label="流程类型" />
+          <el-table-column prop="title" label="流程标题" />
+          <el-table-column prop="createUserName" label="审批人" />
+          <el-table-column prop="createTime" label="发起时间" />
+          <el-table-column fixed="right" label="操作" width="120">
+            <template #default="scope">
+              <el-button
+                link
+                type="primary"
+                size="small"
+                @click="pushProcessApproval(scope.row)"
+              >
+                查看
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <div class="card">
+        <div class="commons-title">系统公告</div>
+        <ul class="announcement">
+          <li v-for="i in sendMegData.rows" :key="i.id">
+            <div class="time">{{ i.createTime }} <span>系统公告</span></div>
+            <div class="content">{{ i.content }}</div>
+          </li>
+        </ul>
+      </div>
+    </div>
+    <!-- <byTableDemo></byTableDemo> -->
+    <!-- <el-input type="number" v-model='aaa' v-mousewheel></el-input> -->
+    <!-- 111112132131211 -->
+  </div>
 </template>
 
 <script setup name="Index">
-import { createApp, onMounted, ref } from 'vue'
-import byTableDemo from '../components/byTable/demo'
-import html2canvas from 'html2canvas'
-import JsPDF from 'jspdf'
+import { createApp, onMounted, ref } from "vue";
+import byTableDemo from "../components/byTable/demo";
+import html2canvas from "html2canvas";
+import JsPDF from "jspdf";
 
-const aaa = ref(1)
+const aaa = ref(1);
 function goTarget(url) {
-	window.open(url, '__blank')
+  window.open(url, "__blank");
 }
 let toBeProcessedData = ref({
-	total:0,
-	rows:[]
-})
+  total: 0,
+  rows: [],
+});
 let haveInitiatedData = ref({
-	total:0,
-	rows:[]
-})
+  total: 0,
+  rows: [],
+});
 const sendMegData = ref({
-	total:0,
-	rows:[]
-})
+  total: 0,
+  rows: [],
+});
 const pushProcessApproval = (row) => {
-	if(row.status != 1 && row.status != 0) {
-		proxy.$router.push({
-			path: "/platform_manage/process/processApproval",
-			query: {
-				flowKey: row.flowKey,
-				id: row.id,
-				processType:20,
-				version:row.version
-			},
-		});
-		return
-	}
-	proxy.post('flowExample/getApprovalRecord',{id:row.id}).then(res=>{
-		if(res.recordList.length > 0) {
-			let data = res.recordList.filter(item => item.status === 2)
-			let nodeType= 0
-			if (data && data.length > 0) {
-				nodeType = data[0].nodeType
-			}
-			proxy.$router.push({
-				path: "/platform_manage/process/processApproval",
-				query: {
-					flowKey: row.flowKey,
-					id: row.id,
-					processType:nodeType == 1 ? 30 : 10,
-					version:row.version
-				},
-			});
-		}
-	})
-	
-}
+  if (row.status != 1 && row.status != 0) {
+    proxy.$router.push({
+      path: "/platform_manage/process/processApproval",
+      query: {
+        flowKey: row.flowKey,
+        id: row.id,
+        processType: 20,
+        version: row.version,
+        businessId: row.businessId,
+      },
+    });
+    return;
+  }
+  proxy.post("flowExample/getApprovalRecord", { id: row.id }).then((res) => {
+    if (res.recordList.length > 0) {
+      let data = res.recordList.filter((item) => item.status === 2);
+      let nodeType = 0;
+      if (data && data.length > 0) {
+        nodeType = data[0].nodeType;
+      }
+      proxy.$router.push({
+        path: "/platform_manage/process/processApproval",
+        query: {
+          flowKey: row.flowKey,
+          id: row.id,
+          processType: nodeType == 1 ? 30 : 10,
+          version: row.version,
+          businessId: row.businessId,
+        },
+      });
+    }
+  });
+};
 const { proxy } = getCurrentInstance();
-const getData = (() => {
-	proxy.post('flowExample/getToBeProcessedPage',{
-		pageNum:1,
-		pageSize:4,
-		status:'1'
-	}).then(res=>{
-		toBeProcessedData.value = res
-	})
-	proxy.post('flowExample/getHaveInitiatedPage',{
-		pageNum:1,
-		pageSize:4,
-		status:'1'
-	}).then(res=>{
-		haveInitiatedData.value = res
-	})
-	proxy.post('pushAnnouncement/page',{
-		pageNum:1,
-		pageSize:3,
-	}).then(res=>{
-		sendMegData.value = res
-	})
-})
-const toUrl = (name,type) => {
-	//获取name为name的路由的基础信息
-	const route = proxy.$router.resolve({ name: name, params: {  } })
-	console.log(route)
-	proxy.$router.push(route.path + '?type=' + type)
-}
-getData()
+const getData = () => {
+  proxy
+    .post("flowExample/getToBeProcessedPage", {
+      pageNum: 1,
+      pageSize: 4,
+      status: "1",
+    })
+    .then((res) => {
+      toBeProcessedData.value = res;
+    });
+  proxy
+    .post("flowExample/getHaveInitiatedPage", {
+      pageNum: 1,
+      pageSize: 4,
+      status: "1",
+    })
+    .then((res) => {
+      haveInitiatedData.value = res;
+    });
+  proxy
+    .post("pushAnnouncement/page", {
+      pageNum: 1,
+      pageSize: 3,
+    })
+    .then((res) => {
+      sendMegData.value = res;
+    });
+};
+const toUrl = (name, type) => {
+  //获取name为name的路由的基础信息
+  const route = proxy.$router.resolve({ name: name, params: {} });
+  console.log(route);
+  proxy.$router.push(route.path + "?type=" + type);
+};
+getData();
 // ​
-onMounted(() => {})
+onMounted(() => {});
 </script>
 <style>
-.table-warp .el-table .cell{
-	line-height: 24px!important;
+.table-warp .el-table .cell {
+  line-height: 24px !important;
 }
 </style>
 <style scoped lang="scss">
-
 .app-container {
-	height: 100%;
-	.announcement{
-		padding: 0;
-		margin: 0;
-		li{
-			list-style: none;
-			border-radius: 2px;
-			padding: 14px 20px;
-			background: #EEEEEE;
-			margin-bottom:10px;
-			font-size: 14px;
-			cursor: pointer;
-			.time{
-				color:#999;
-			}
-			.content{
-				margin-top:10px;
-				color:#333;
-			}
-		}
-		li:hover{
-			background: #EFF6FF;
-		}
-	}
-	.table-warp{
-		//页面全屏,占据剩下的位置
-		height: calc(100% - 157px);
-		border-radius: 5px;
-		
-		.card{
-			width: calc(50% - 10px);
-			height: calc(50% - 10px);
-			background: #fff;
-			float: left;
-			border-radius: 5px;
-			padding:20px;
-			overflow-y:auto;
-		}
-		.card:nth-child(2n + 1){
-			margin-right: 20px;
-		}
-		.card:nth-child(1){
-			margin-bottom: 20px;
-		}
-		.card:nth-child(2){
-			margin-bottom: 20px;
-		}
-	}
-	.stat-warp {
-		margin-bottom: 20px;
-		background: #fff;
-		padding: 20px;
-		overflow: hidden;
-		position: relative;
-		border-radius: 5px;
-		
-		.title {
-			height: 60px;
-			select {
-				height: 60px;
-				border: none;
-				outline: none;
-				-webkit-appearance: none;
-				appearance: none;
-				font-size: 14px;
-				font-weight: bold;
-				background: url('@/assets/images/sanjiao.png') no-repeat right
-					center;
-				padding-right: 20px;
-			}
-			div {
-				height: 60px;
-				font-size: 14px;
-				font-weight: bold;
-				line-height: 60px;
-			}
-		}
-		ul {
-			padding: 0;
-			overflow: hidden;
-			margin: 0;
-			li {
-				list-style: none;
-				min-width: 285px;
-				box-sizing: border-box;
-				margin-right: 20px;
-				background: linear-gradient(360deg, #C7E3FE 0%, #DFECFF 100%);
-				float: left;
-				overflow: hidden;
-				padding: 20px;
-				color: #333333;
-				position: relative;
-				border-radius: 10px;
-				cursor: pointer;
-				.label {
-					font-size: 14px;
-					margin-top: 10px;
-				}
-				.label::before {
-					// width: 10px;
-					// height: 10px;
-					// content: '';
-					// border-radius: 50%;
-					// background: #0084ff;
-					// display: inline-block;
-					// margin-right: 10px;
-					
-				}
-				.num {
-					
-					font-size: 24px;
-					font-weight: bold;
-				}
-				.icon-box{
-					position: absolute;
-					height: 40px;
-					width: 40px;
-					right: 20px;
-					top: 20px;
-					background: #fff;
-					border-radius: 10px;
-					text-align: center;
-					line-height: 40px;
-					i{
-						font-size: 20px;
-						color:#0084FF;
-					}
-				}
-			}
-			//#F5F3FF #9E64ED
-			.theme2 {
-				background: linear-gradient(180deg, #EAE8FB 0%, #DED9FF 100%);
-				.label::before {
-					background: #7566F0;
-				}
-				.icon-box i {
-					color: #7566F0;
-				}
-			}
-			//#FFF1E1 #FF9315
-			.theme3 {
-				background: #fff1e1;
-				.label::before {
-					background: #ff9315;
-				}
-				.icon-box i {
-					color: #FF9315;
-				}
-			}
-			//#E2FBE8 #39C55A
-			.theme4 {
-				background: #e2fbe8;
-				.label::before {
-					background: #39c55a;
-				}
-			}
-			.theme5 {
-				background: #ffebe9;
-				.label::before {
-					background: #f94539;
-				}
-			}
-			.theme6 {
-				background: #e4f9f9;
-				.label::before {
-					background: #53cbcb;
-				}
-			}
-			.multi-data {
-				.label::before {
-					display: none;
-				}
-				.label {
-					font-size: 14px;
-					font-weight: bold;
-					color: #333;
-					margin-bottom: 8px;
-				}
-				.num-warp {
-					overflow: hidden;
-					.num-box {
-						float: left;
-						min-width: 80px;
-						margin-right: 20px;
-						.num-small {
-							font-size: 16px;
-							font-weight: bold;
-							margin-bottom: 8px;
-						}
-						.label-small {
-							color: #666;
-							font-size: 14px;
-						}
-					}
-				}
-			}
-		}
-	}
+  height: 100%;
+  .announcement {
+    padding: 0;
+    margin: 0;
+    li {
+      list-style: none;
+      border-radius: 2px;
+      padding: 14px 20px;
+      background: #eeeeee;
+      margin-bottom: 10px;
+      font-size: 14px;
+      cursor: pointer;
+      .time {
+        color: #999;
+      }
+      .content {
+        margin-top: 10px;
+        color: #333;
+      }
+    }
+    li:hover {
+      background: #eff6ff;
+    }
+  }
+  .table-warp {
+    //页面全屏,占据剩下的位置
+    height: calc(100% - 157px);
+    border-radius: 5px;
+
+    .card {
+      width: calc(50% - 10px);
+      height: calc(50% - 10px);
+      background: #fff;
+      float: left;
+      border-radius: 5px;
+      padding: 20px;
+      overflow-y: auto;
+    }
+    .card:nth-child(2n + 1) {
+      margin-right: 20px;
+    }
+    .card:nth-child(1) {
+      margin-bottom: 20px;
+    }
+    .card:nth-child(2) {
+      margin-bottom: 20px;
+    }
+  }
+  .stat-warp {
+    margin-bottom: 20px;
+    background: #fff;
+    padding: 20px;
+    overflow: hidden;
+    position: relative;
+    border-radius: 5px;
+
+    .title {
+      height: 60px;
+      select {
+        height: 60px;
+        border: none;
+        outline: none;
+        -webkit-appearance: none;
+        appearance: none;
+        font-size: 14px;
+        font-weight: bold;
+        background: url("@/assets/images/sanjiao.png") no-repeat right center;
+        padding-right: 20px;
+      }
+      div {
+        height: 60px;
+        font-size: 14px;
+        font-weight: bold;
+        line-height: 60px;
+      }
+    }
+    ul {
+      padding: 0;
+      overflow: hidden;
+      margin: 0;
+      li {
+        list-style: none;
+        min-width: 285px;
+        box-sizing: border-box;
+        margin-right: 20px;
+        background: linear-gradient(360deg, #c7e3fe 0%, #dfecff 100%);
+        float: left;
+        overflow: hidden;
+        padding: 20px;
+        color: #333333;
+        position: relative;
+        border-radius: 10px;
+        cursor: pointer;
+        .label {
+          font-size: 14px;
+          margin-top: 10px;
+        }
+        .label::before {
+          // width: 10px;
+          // height: 10px;
+          // content: '';
+          // border-radius: 50%;
+          // background: #0084ff;
+          // display: inline-block;
+          // margin-right: 10px;
+        }
+        .num {
+          font-size: 24px;
+          font-weight: bold;
+        }
+        .icon-box {
+          position: absolute;
+          height: 40px;
+          width: 40px;
+          right: 20px;
+          top: 20px;
+          background: #fff;
+          border-radius: 10px;
+          text-align: center;
+          line-height: 40px;
+          i {
+            font-size: 20px;
+            color: #0084ff;
+          }
+        }
+      }
+      //#F5F3FF #9E64ED
+      .theme2 {
+        background: linear-gradient(180deg, #eae8fb 0%, #ded9ff 100%);
+        .label::before {
+          background: #7566f0;
+        }
+        .icon-box i {
+          color: #7566f0;
+        }
+      }
+      //#FFF1E1 #FF9315
+      .theme3 {
+        background: #fff1e1;
+        .label::before {
+          background: #ff9315;
+        }
+        .icon-box i {
+          color: #ff9315;
+        }
+      }
+      //#E2FBE8 #39C55A
+      .theme4 {
+        background: #e2fbe8;
+        .label::before {
+          background: #39c55a;
+        }
+      }
+      .theme5 {
+        background: #ffebe9;
+        .label::before {
+          background: #f94539;
+        }
+      }
+      .theme6 {
+        background: #e4f9f9;
+        .label::before {
+          background: #53cbcb;
+        }
+      }
+      .multi-data {
+        .label::before {
+          display: none;
+        }
+        .label {
+          font-size: 14px;
+          font-weight: bold;
+          color: #333;
+          margin-bottom: 8px;
+        }
+        .num-warp {
+          overflow: hidden;
+          .num-box {
+            float: left;
+            min-width: 80px;
+            margin-right: 20px;
+            .num-small {
+              font-size: 16px;
+              font-weight: bold;
+              margin-bottom: 8px;
+            }
+            .label-small {
+              color: #666;
+              font-size: 14px;
+            }
+          }
+        }
+      }
+    }
+  }
 }
 </style>
 

+ 1 - 1
src/views/process/processApproval/index.vue

@@ -579,7 +579,7 @@ onMounted(async () => {
   margin: 0 !important;
 }
 .el-upload-list li {
-  width: 100px;
+  width: 200px;
   margin-left: 10px;
 }
 .el-upload--text {

+ 1 - 1
vite.config.js

@@ -41,7 +41,7 @@ export default defineConfig(({
         '/dev-api': {
           target: 'http://139.9.102.170:9901/test-api',
           // 正式地址
-          // target:"http://139.9.102.170:9900/prod-api",
+          // target: "http://139.9.102.170:9900/prod-api",
           changeOrigin: true,
           rewrite: (p) => p.replace(/^\/dev-api/, '')
         }