Jelajahi Sumber

质保卡暂存

NULL1222 4 hari lalu
induk
melakukan
bec68b32c9

+ 4 - 0
src/HManagement/ecycle/agentManage/index.vue

@@ -156,6 +156,10 @@ export default {
         {
           label: '公海线索',
           value: "8",
+        },
+        { 
+          label: '质保卡',
+          value: "9",
         }
       ],
       dateSelect:'',

+ 4 - 0
src/HManagement/ecycle/application/index.vue

@@ -58,6 +58,10 @@ export default {
         {
           label: '公海线索',
           value: "8",
+        },
+        { 
+          label: '质保卡',
+          value: "9",
         }
       ],
     }

+ 4 - 0
src/HManagement/ecycle/contract/index.vue

@@ -163,6 +163,10 @@ export default {
         {
           label: '公海线索',
           value: "8",
+        },
+        { 
+          label: '质保卡',
+          value: "9",
         }
       ],
       dateSelect:'',

+ 4 - 0
src/HManagement/ecycle/customer/index.vue

@@ -171,6 +171,10 @@ export default {
         {
           label: '公海线索',
           value: "8",
+        },
+        { 
+          label: '质保卡',
+          value: "9",
         }
       ],
       option:{

+ 23 - 2
src/HManagement/ecycle/index.vue

@@ -8,6 +8,7 @@
     <agenter v-if="agenerShow" @changeApplication="onChange"></agenter>
     <publicClue v-if="pubClueShow" @changeApplication="onChange"></publicClue>
     <product v-if="productShow" @changeApplication="onChange"></product>
+    <warrantyCard v-if="warrantyCardShow" @changeApplication="onChange"></warrantyCard>
   </div>
 </template>
 
@@ -20,9 +21,10 @@ import customer from './customer/index'
 import agenter from './agentManage/index'
 import publicClue from './publicClue/index'
 import product from './product/index'
+import warrantyCard from './warrantyCard/index'
 export default {
   name: "index",
-  components:{saleClue,projectChange,quotedPrice,contract,customer,agenter,publicClue,product},
+  components:{saleClue,projectChange,quotedPrice,contract,customer,agenter,publicClue,product,warrantyCard},
   data(){
     return {
       salClueShow:true,
@@ -32,7 +34,8 @@ export default {
       customerShow:false,
       agenerShow:false,
       pubClueShow:false,
-      productShow:false
+      productShow:false,
+      warrantyCardShow:false
     }
   },
   methods:{
@@ -48,6 +51,7 @@ export default {
         this.agenerShow = false
         this.pubClueShow = false
         this.productShow = false
+        this.warrantyCardShow = false
       }else if (val === '2') {
         this.customerShow = true
         this.salClueShow = false
@@ -57,6 +61,7 @@ export default {
         this.agenerShow = false
         this.pubClueShow = false
         this.productShow = false
+        this.warrantyCardShow = false
       }else if (val === '3'){
         this.contractShow = true
         this.quotedPriceShow = false
@@ -66,6 +71,7 @@ export default {
         this.agenerShow = false
         this.pubClueShow = false
         this.productShow = false
+        this.warrantyCardShow = false
       }else if (val === '4'){
         this.projectChangeShow = true
         this.quotedPriceShow = false
@@ -75,6 +81,7 @@ export default {
         this.agenerShow = false
         this.pubClueShow = false
         this.productShow = false
+        this.warrantyCardShow = false
       }else if (val === '5'){
         this.quotedPriceShow = true
         this.customerShow = false
@@ -84,6 +91,7 @@ export default {
         this.agenerShow = false
         this.pubClueShow = false
         this.productShow = false
+        this.warrantyCardShow = false
       }else if (val === '6'){
         this.agenerShow = true
         this.customerShow = false
@@ -93,6 +101,7 @@ export default {
         this.quotedPriceShow = false
         this.pubClueShow = false
         this.productShow = false
+        this.warrantyCardShow = false
       }else if (val === '7'){
         this.productShow = true
         this.customerShow = false
@@ -102,6 +111,7 @@ export default {
         this.quotedPriceShow = false
         this.agenerShow = false
         this.pubClueShow = false
+        this.warrantyCardShow = false
       }else if (val === '8'){
         this.pubClueShow = true
         this.customerShow = false
@@ -111,6 +121,17 @@ export default {
         this.quotedPriceShow = false
         this.agenerShow = false
         this.productShow = false
+        this.warrantyCardShow = false
+      }else if (val === '9'){
+        this.pubClueShow = false
+        this.customerShow = false
+        this.contractShow = false
+        this.salClueShow = false
+        this.projectChangeShow = false
+        this.quotedPriceShow = false
+        this.agenerShow = false
+        this.productShow = false
+        this.warrantyCardShow = true
       }
       console.log(this.projectChangeShow,this.salClueShow)
     }

+ 2 - 1
src/HManagement/ecycle/product/index.vue

@@ -186,7 +186,8 @@ export default {
         { label: '报价单',   value: "5" },
         { label: '合作伙伴', value: "6" },
         { label: '商品',     value: "7" },
-        { label: '公海线索', value: "8" }
+        { label: '公海线索', value: "8" },
+        { label: '质保卡', value: "9"}
       ],
       options:[],
       isOnSaleData:[

+ 4 - 0
src/HManagement/ecycle/projectChange/index.vue

@@ -171,6 +171,10 @@ export default {
         {
           label: '公海线索',
           value: "8",
+        },
+        { 
+          label: '质保卡',
+          value: "9",
         }
       ],
       projectType:'',

+ 4 - 0
src/HManagement/ecycle/quotedPrice/index.vue

@@ -157,6 +157,10 @@ export default {
         {
           label: '公海线索',
           value: "8",
+        },
+        { 
+          label: '质保卡',
+          value: "9",
         }
       ],
       dateSelect:'',

+ 4 - 0
src/HManagement/ecycle/saleClue/index.vue

@@ -112,6 +112,10 @@ export default {
         {
           label: '公海线索',
           value: "8",
+        },
+        { 
+          label: '质保卡',
+          value: "9",
         }
       ],
       status:'',

+ 278 - 0
src/HManagement/ecycle/warrantyCard/index.vue

@@ -0,0 +1,278 @@
+<template>
+  <div>
+    <basicLayout
+      ref="basicLayout"
+      tableName="productManageTable"
+      idName="itemid"
+      ownertable="plm_item"
+      :apiId="{query:2026052914363302,del:''}"
+      :options="options"
+      :specialKey="[{key:'itemclass',value:null},{key:'tradefield',value:null},{key:'brand',value:null}]"
+      @checkboxCallBack="checkboxCallBack"
+      :autoQuery="false"
+      :isExport="false"
+      >
+      <template #titleLight>
+        <batchDeletion v-if="tool.checkAuth($route.name,'batchDeletion')" ref="batchDeletion" :ownerids="selectData" :sys_object="application" ownertable="item" @delSuccess="queryData"></batchDeletion>
+        <batchRecovery v-if="tool.checkAuth($route.name,'batchRecovery')" ref="batchRecovery" :ownerids="selectData" :sys_object="application" ownertable="item" @recoverySuccess="queryData"></batchRecovery>
+      </template>
+      <template #custom>
+        <div class="mt-10">
+          <p class="search__label">{{ $t('应用') }}:</p>
+          <el-select
+              class="inline-24"
+              size="small"
+              v-model="application"
+              :placeholder="$t('请选择范围')"
+              @change="applicationChange"
+          >
+            <el-option
+                v-for="item in applicationList"
+                :key="item.index"
+                :label="$t(item.label)"
+                :value="item.value"
+            ></el-option>
+          </el-select>
+        </div>
+        <div class="mt-10">
+          <label  class="search__label" >{{$t(`是否上架`)}}:</label>
+          <el-select class="inline-24" v-model="selectParam.isonsale" :placeholder="$t(`请选择是否上架`)" @change="selectChange" size="small" clearable>
+            <el-option
+                v-for="item in isOnSaleData"
+                :key="item.value"
+                :label="$t(item.label)"
+                :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+        <div class="mt-10">
+          <label  class="search__label" >{{$t(`状态`)}}:</label>
+          <el-select class="inline-24" v-model="selectParam.status" :placeholder="$t(`请选择状态`)" @change="selectChange" size="small" clearable>
+            <el-option
+                v-for="item in statusData"
+                :key="item.value"
+                :label="$t(item.value)"
+                :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+        <div class="mt-10">
+          <label class="search__label" >{{$t(`上架时间`)}}:</label>
+          <el-date-picker
+              style="margin-right: 24px !important;"
+              size="small"
+              @change="selectChange"
+              value-format="yyyy-MM-dd"
+              v-model="dateSelect"
+              type="daterange"
+              :range-separator="$t(`至`)"
+              :start-placeholder="$t(`开始日期`)"
+              :end-placeholder="$t(`结束日期`)"
+              clearable>
+          </el-date-picker>
+        </div>
+        <div class="mt-10">
+          <el-input
+            style="width:200px;"
+            :placeholder="$t(`型号`)"
+            suffix-icon="el-icon-search"
+            v-model="selectParam.model" @keyup.native.enter="selectChange" @clear="selectChange" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
+          </el-input>
+        </div>
+        <div class="mt-10">
+          <el-input
+            style="width:200px;"
+            :placeholder="$t(`规格`)"
+            suffix-icon="el-icon-search"
+            v-model="selectParam.spec" @keyup.native.enter="selectChange" @clear="selectChange" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
+          </el-input>
+        </div>
+        <div class="mt-10">
+          <label  class="search__label" >{{$t('领域')}}:</label>
+          <el-select class="inline-24" v-model="selectParam.tradefield" :placeholder="$t(`请选择状态`)" @change="selectChange" size="small" clearable >
+            <el-option
+                v-for="item in tradefieldData"
+                :key="item.value"
+                :label="$t(item.value)"
+                :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+        <div class="mt-10" v-if="siteid == 'HY' || siteid == 'TZ'">
+          <label  class="search__label" >{{$t(`商品大类`)}}:</label>
+          <el-select class="inline-24" v-model="selectParam.categories" :placeholder="$t(`请选择商品大类`)" @change="selectChange" size="small" clearable >
+            <el-option
+                v-for="item in categoriesList"
+                :key="item.value"
+                :label="$t(item.value)"
+                :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+        <selectTemplate title="供应方" payload="supplier" @onChange="onChange"></selectTemplate>
+      </template>
+      <template v-slot:tbList="scope">
+        <div>
+        <p :style="{color:scope.data.column.data.isonsale === 1?tool.getStatusColor('上架',true):tool.getStatusColor('下架',true)}" v-if="scope.data.column.columnname === 'isonsale'">
+          {{ scope.data.column.data.isonsale ? $t('上架') : $t('下架') }}
+        </p>
+        <p v-else-if="scope.data.column.columnname === 'cover'">
+          <previewImage v-if="scope.data.column.data.attinfos[0]" class="image" :image="scope.data.column.data.attinfos[0]" :list="scope.data.column.data.attinfos" :deletebtn="false"></previewImage>
+        </p>
+        <p v-else-if="scope.data.column.columnname === 'tradefield'">
+          <span v-if="JSON.stringify(scope.data.column.data.tradefield) !== '[]' && scope.data.column.data.tradefield">
+            <span v-for="item in scope.data.column.data.tradefield">
+              <el-tag style="margin-right: 10px;margin-top: 5px;margin-bottom: 5px">{{$t(item.tradefield)}}</el-tag>
+            </span>
+          </span>
+          <span v-else>
+           </span>
+        </p>
+        <p v-else-if="scope.data.column.columnname === 'brand'">
+          <span v-if="JSON.stringify(scope.data.column.data.brand) !== '[]' && scope.data.column.data.brand">
+             <span v-for="item in scope.data.column.data.brand">
+               <el-tag style="margin-right: 10px;margin-top: 5px;margin-bottom: 5px" type="warning">{{$t(item.brandname)}}</el-tag>
+            </span>
+          </span>
+         <span v-else>
+         </span>
+        </p>
+        <p v-else-if="scope.data.column.columnname === 'itemclass'">
+          <span v-if="JSON.stringify(scope.data.column.data.itemclass) !== '[]' && scope.data.column.data.itemclass">
+             <span v-for="item in scope.data.column.data.itemclass" :key="item.index">
+               <el-tag style="margin-right: 10px;margin-top: 5px;margin-bottom: 5px" type="success">{{$t(item.itemclassfullname)}}</el-tag>
+            </span>
+          </span>
+          <span v-else>
+           </span>
+        </p>
+        <p v-else-if="scope.data.column.columnname === 'istool'" :style="{color:scope.data.column.data[[scope.data.column.columnname]] === 0?tool.getStatusColor('否',true):tool.getStatusColor('是',true)}">
+          {{scope.data.column.data[[scope.data.column.columnname]] === 0?$t('否'):$t('是')}}
+        </p>
+        <p v-else-if="scope.data.column.columnname === 'status'">
+          <span :style="tool.getStatusColor(scope.data.column.data[[scope.data.column.columnname]])" >{{$t(scope.data.column.data[[scope.data.column.columnname]])}}</span>
+        </p>
+        <div v-else-if="scope.data.column.columnname === 'nominalpressure'">
+          {{tool.nominalPressureSet(scope.data.column.data.nominalpressure)}}
+        </div>
+        <div v-else>{{scope.data.column.columnname === 'operation' || scope.data.column.data[scope.data.column.columnname]?scope.data.column.data[scope.data.column.columnname] : '--'}}</div>
+        </div>
+      </template>
+      <template v-slot:tbOpreation="scope">
+        <delData class="inline-16" :ownerid="scope.data.data.itemid" :sys_object="application" ownertable="plm_item" @delSuccess="delSuccess"></delData>
+        <recovery class="inline-16" :ownerid="scope.data.data.itemid" :sys_object="application" ownertable="plm_item" @recoverySuccess="queryData"></recovery>
+      </template>
+    </basicLayout>
+  </div>
+</template>
+
+<script>
+import previewImage from '@/components/previewImage/index'
+import recovery from "@/HManagement/ecycle/modules/recovery"
+import delData from "@/HManagement/ecycle/modules/delData"
+import batchDeletion from "@/HManagement/ecycle/modules/batchDeletion";
+import batchRecovery from "@/HManagement/ecycle/modules/batchRecovery";
+import selectTemplate from '@/components/generalTemplate/select'
+
+export default {
+  data () {
+    return {
+      application:'7',
+      applicationList:[
+        { label: '销售线索', value: "1" },
+        { label: '客户',     value: "2" },
+        { label: '合同',     value: "3" },
+        { label: '项目商机', value: "4" },
+        { label: '报价单',   value: "5" },
+        { label: '合作伙伴', value: "6" },
+        { label: '商品',     value: "7" },
+        { label: '公海线索', value: "8" },
+        { label: '质保卡', value: "9" }
+      ],
+      options:[],
+      isOnSaleData:[
+        { value:0, label:'否' },
+        { value:1, label:'是' }
+      ],
+      statusData:[
+        { value:'新建', label:'新建' },
+        { value:'审核', label:'审核' }
+      ],
+      selectParam:{
+        isonsale:'',
+        begindate:'',
+        enddate:'',
+        status:'',
+        model:'',
+        spec:'',
+        tradefield:'',
+        categories:'',
+        supplier:''
+      },
+      selectData:[],
+      tradefieldData:[],
+      dateSelect:'',
+      siteid:JSON.parse(sessionStorage.getItem('active_account')).siteid,
+      categoriesList:[]
+    }
+  },
+  components:{previewImage,recovery,delData,batchDeletion,batchRecovery,selectTemplate},
+  methods:{
+    queryData(){
+      this.$refs.basicLayout.param.content.where = this.selectParam
+      this.$refs.basicLayout.param.content.deleted = 1
+      this.$refs.basicLayout.listData()
+    },
+    applicationChange(val){
+      this.$emit("changeApplication",val)
+    },
+    delSuccess(){
+      this.queryData()
+    },
+    checkboxCallBack(val){
+      this.selectData = []
+      val.forEach((item,index) => {
+        this.selectData[index] = item.itemid
+      })
+      this.$refs.batchDeletion.length = this.selectData.length
+      this.$refs.batchRecovery.length = this.selectData.length
+    },
+    selectChange(){
+      if (this.dateSelect !== '' && this.dateSelect !== null){
+        this.selectParam.begindate = this.dateSelect[0]
+        this.selectParam.enddate = this.dateSelect[1]
+      }else {
+        this.selectParam.begindate = ''
+        this.selectParam.enddate = ''
+      }
+      this.$refs.basicLayout.param.content.pageNumber = 1
+      this.$refs.basicLayout.param.content.where = this.selectParam
+      this.$refs.basicLayout.listData()
+    },
+    onChange(data,type){
+      this.selectParam[type] = data
+      this.selectChange()
+    },
+    querytradefield(){
+      this.$store.dispatch('optiontypeselect','tradefield').then(res=>{
+        this.tradefieldData = res.data
+      })
+      this.$store.dispatch('optiontypeselect','categories').then(res=>{
+        this.categoriesList = res.data
+      })
+    }
+  },
+  mounted() {
+    this.querytradefield()
+    this.queryData()
+  },
+}
+
+</script>
+<style scoped>
+.image{
+  height: 38px;
+  width: 38px;
+  margin-top:0;
+}
+</style>

+ 102 - 0
src/bgj/warrantyCard/modules/cancellation.vue

@@ -0,0 +1,102 @@
+<template>
+  <div>
+    <el-button
+      slot="reference"
+      type="danger"
+      size="mini"
+      @click="dialogTableVisible = true"
+      >{{ $t("作废") }}</el-button
+    >
+    <el-dialog
+      :title="$t(`提示`)"
+      append-to-body
+      :visible.sync="dialogTableVisible"
+      width="500px"
+    >
+      <el-row :gutter="20">
+        <el-form
+          label-position="top"
+          ref="form"
+          :rules="rules"
+          inline
+          :label-width="tool.onlyZh('100px')"
+          :model="form"
+          size="small"
+        >
+          <el-col :span="24">
+            <el-form-item :label="$t(`作废原因`)" prop="reject_reason">
+              <el-input
+                v-model="form.reject_reason"
+                :placeholder="$t(`请填写作废原因`)"
+                style="width: 100%"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+      <span slot="footer" class="dialog-footer">
+        <div>
+          <el-button @click="dialogTableVisible = false" size="small">{{
+            $t("取 消")
+          }}</el-button>
+          <el-button type="primary" @click="submit" size="small">{{
+            $t("确 定")
+          }}</el-button>
+        </div>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      dialogTableVisible: false,
+      form: {
+        sc_warrantycardid: "",
+        reject_reason: "",
+        isapproval: 0,
+      },
+      rules: {
+        reject_reason: [
+          {
+            required: true,
+            message: this.$t("请填写作废原因"),
+            trigger: "blur",
+          },
+        ],
+      },
+    };
+  },
+  props: ["sc_warrantycardid"],
+  methods: {
+    submit() {
+      this.$refs.form.validate(async (valid) => {
+        if (!valid) return false;
+        this.form.sc_warrantycardid = this.sc_warrantycardid;
+        let res = await this.$api.requested({
+          id: 2026060110201402,
+          content: this.form,
+        });
+        this.tool.showMessage(res, () => {
+          this.$emit("rejectSuccess");
+          this.dialogTableVisible = false;
+        });
+      });
+    },
+  },
+  created() {},
+};
+</script>
+<style scoped>
+/deep/.el-form-item {
+  width: 100% !important;
+}
+/deep/.el-dialog__header {
+  border-bottom: 1px solid #dcdfe6;
+}
+/deep/.el-dialog__footer {
+  border-top: 1px solid #dcdfe6;
+}
+</style>

+ 8 - 0
src/bgj/warrantyCard/modules/detail.vue

@@ -16,6 +16,12 @@
         >
             <div slot="tags"></div>
             <template slot="customOperation">
+                <!-- v-if="tool.checkAuth($route.name, 'cancellation')" -->
+                <Cancellation
+                    class="inline-16"
+                    :sc_warrantycardid="mainData.sc_warrantycardid"
+                    @rejectSuccess="queryMainData"
+                />
             </template>
             <div slot="slot0">
                 <baseInfo
@@ -29,6 +35,7 @@
 
 <script>
 import BaseInfo from "./baseInfo";
+import Cancellation from "./cancellation"
 export default {
     name: "detail",
     data() {
@@ -40,6 +47,7 @@ export default {
     },
     components: {
         BaseInfo,
+        Cancellation
     },
     methods: {
         async queryMainData() {